Go to:
Logótipo
You are in:: Start > Courses/CE or Courses/Cycle of Studies or Programmes/Cycle of Studies > L:IACD > Information for Applicants
Map of Premises
FC6 - Departamento de Ciência de Computadores FC5 - Edifício Central FC4 - Departamento de Biologia FC3 - Departamento de Física e Astronomia e Departamento GAOT FC2 - Departamento de Química e Bioquímica FC1 - Departamento de Matemática

Courses

Bachelor in Artificial Intelligence and Data Science

General information

Official Code: L227
Acronym: L:IACD
Description: A Inteligência Artificial (IA) e a Ciência de Dados (CD) estão no centro de uma revolução em todos os setores e na investigação científica. A LIACD é uma iniciativa pioneira da Universidade do Porto, contando com a enorme experiência de docentes da FCUP e da FEUP nestas áreas. O curso vem preencher uma lacuna das ofertas formativas atuais, visando formar profissionais qualificados na área de Inteligência Artificial e Ciência de Dados, com uma forte formação em Ciência de Computadores/Engenharia Informática e sólidos conhecimentos em Matemática. Na LIACD são trabalhadas competências em programação, algoritmia, estatística, métodos numéricos, otimização, aprendizagem computacional, processamento de imagem e de linguagem natural, robótica e sistemas Inteligentes, segurança e privacidade, que permitirão aos licenciados desenvolver trabalho especializado de IA e CD em empresas, organizações e administração pública.

Certificates

  • First Degree in Artificial Intelligence and Data Science (180 ECTS credits)

Courses Units

Linear Algebra and Analytic Geometry

M1002 - ECTS

Upon completing this course, the student should master the main concepts of Linear Algebra and Analytic GeometryNamely, he must understand, be able to work with and use the main properties of the concepts of matrix, determinant, real vector space and linear function.

Calculus I

M1001 - ECTS

To become acquainted with the basic concepts and techniques of calculus at the level of real-valued functions of a single real variable, as well as sequences and series.

 

Discrete Structures

CC1001 - ECTS

Study of the fundamental discrete structures that serve as a theoretical basis for the area of Computer Science/Informatics.  

Introduction to Programming

CC1024 - ECTS

Introduction to computer programming using Python.

Fundamental programming concepts: variables, types, operators, and expressions; functions and procedures; conditional and selection statements; iteration and recursion, data reading and writing.

Data structures and fundamental algorithms: lists, dictionaries, tuples; search, sorting, and data processing; problems and applications.

Introduction to Computers

CC1002 - ECTS

Provide students with an overview about Computer Science, in particular, the fundamental concepts about the organization and operation of digital computers and operating systems.

Computer Architecture

CC2002 - ECTS Introduce the basic working concepts of modern computer organization and design, namely, the internal representation of programs and data, the hardware components and their interactions, and ways to evaluate its performance.

Calculus II

M1003 - ECTS Acquisition of the basic knowledge and skills of Differential and Integral Calculus in several real variables.

Artificial Intelligence and Data Science

CC1023 - ECTS This will address the state-of-the-art topics of Artificial Intelligence (AI) and Data Science (DS), giving students a technical knowledge, although not in-depth, about its concepts, problems and applications.

Regarding the AI and DS areas, the objectives of the course are:

- Provide a historical perspective of its emergence and evolution.
- Identify its relevance and impact in the society.
- Study the relationship with other sciences and interactions with society.
- Know the different stages of development processes.
- Ability to develop small prototyping projects in AI and DS.

Computational Models

CC1004 - ECTS

Teach fundamental concepts and results about three computational models (finite automata, pushdown automata, Turing machines) and the related classes of formal languages, with emphasis on regular and context free languages.

Imperative Programming

CC1003 - ECTS

Introduce the fundamental concepts of imperative programming, emphasizing structured programming, using the C programming language as a basis. Emphasis will be placed on practical problem-solving, basic algorithms for counting, searching, and sorting, and on code quality.

Databases

CC2005 - ECTS

Provide the students with the fundamentals and practice necessary for the design, implementation and analysis of relational databases. 

Data Structures

CC1007 - ECTS Reinforce students' programming skills, with an emphasis on the design and implementation of some of the main data structures and corresponding algorithms. An object-oriented methodology will be used with Java as the programming language. Concepts of efficiency and algorithm complexity analysis will be introduced.

Computational Logic

CC2003 - ECTS It is intended that the student learns the fundamental concepts regarding reasoning and is able to correctly use the deductive systems; understands the relationship between semantics and deductive systems and their characterization from the point of view of decidability; recognizes the role of formal systems in the various areas of Computer Science, in particular in the area of logic programming.

Numerical Methods

M2039 - ECTS

The main aim of this subject is given a mathematical problem,  to study sufficient conditions for the existence and unicity of its solution, to establish a constructive method to solve it, to study and control the errors  involved, to give an algoritmh for the solution and to implement it in a computer and to study and interpret the numerical results.

Probability and Statistics B

M2040 - ECTS An Introductory course in Probability and Statistics: acquisition of basic concepts of Probability and Statistics and their application to concrete situation
Particular attention is paid to the presentation and understanding of the concepts, keeping the mathematical treatment on an medium level.

Machine Learning I

CC2008 - ECTS

This course introduces Machine Learning (ML), providing students with a brief historical background and reference to some of its most relevant applications.

It is intended that students make first contact with various tasks and approaches involved in ML problems and that they can, in this way, identify the most appropriate strategies.

Algorithm Design and Analysis

CC2001 - ECTS

To learn techniques for designing and analyzing algorithms.

Applied Statistics B

M3046 - ECTS Acquisition of a solid foundation of knowledge in inductive statistics and development of skills and ingenuity in statistical modeling techniques, essential for the presentation, processing, and interpretation of data sets.

Artificial Intelligence

CC2006 - ECTS

Objectives: Study fundamental concepts and techniques of general use for Artificial Intelligence.

Security and Privacy

CC2009 - ECTS This course unit has the goal of providing students with an integrated perspective of the security and privacy fundamentals; it targets to endow students with the principles of IT security and data privacy.

Machine Learning II

CC3043 - ECTS This UC consists of an introduction to some of the algorithmic foundations of deep and reinforcement learning.

It is intended that students have a first contact with such concepts and with concrete methods of implementing such algorithms.

They should be able to carefully select suitable algorithms and details of model architectures and learning techniques for each of the tasks presented.

They should know how to estimate the performance of the applied methods and use this information for iterative model design.

Digital Systems

FIS3023 - ECTS

This course provides an introduction to electric circuit theory, basic analog electronics and digital systems.

Human-Machine Interfaces

CC3006 - ECTS

The course aims to introduce students to the fundamental principles of creating and developing Human-Machine Interfaces, with a focus on interactive systems. Its approach encompasses both theoretical concepts, such as usability and user-centered design, as well as low and high fidelity prototyping practices, through the construction of graphical interfaces.

Introduction to Intelligent Autonomous Systems

CC3042 - ECTS This course presents a global perspective of the techniques associated with intelligent and autonomous systems, exploring the modeling and simulation of complex systems and the development of intelligent agents and Multi-Agent Systems with the ability to adapt/learn to solve complex problems. The main objective is to specify and implement autonomous, complex, and adaptive intelligent systems. At the end of the course, students should be able to:
1. Understand basic concepts related to autonomous intelligent systems and be able to model and design complex intelligent and autonomous systems.
2. Understand and be capable of using concepts of intelligent multi-agent systems such as communication, interaction, coordination, negotiation, and cooperation.
3. Understand and be capable of using reinforcement learning, including state-of-the-art algorithms and deep reinforcement learning mechanisms.

Laboratory IA and CD

CC3044 - ECTS

Objectives: Provide students with software development methodologies, AI and CD projects, teamwork and communication through the implementation of projects designed for this purpose.

 

Mechanics

FIS1013 - ECTS This course aims to present the concepts and the basic principles of Classic Mechanics, and relativity, with emphasis on  understanding and application in the analysis of  real world situations . Students should have the ability to manipulate fundamental concepts and knowi how to apply them to solve problems. Students will be motivated to consider the principles of Mechanics in other areas of knowledge and in technology. Particular attention will be paid to training in problem solving by familiarizing students with heuristics and modes of thinking of experienced physicists.

Modelling and Optimization

M3023 - ECTS 1. Learn to formulate an optimization problem mathematically;
2. Study the main relevant optimization problems;
3. Gain sensitivity to the theoretical and practical (computational) difficulty in solving these problems;
4. Study of optimization models underlying the operation of machine learning methods.

Programming Challenges

CC3032 - ECTS The main goals are to consolidate and to acquire new knowledge on algorithms and data structures and their efficient design and implementation by solving multiple programming challenges on the style of programming contests and job interviews.

Mobile Device Programming

CC3049 - ECTS

This curricular unit aims to understand the complexity of current mobile device programming platforms, in order to provide students with the necessary tools to face the growing challenges in the area. As a complementary training, students are exposed to the requirements and challenges of implementing backends in order to support mobile applications.

After completing this course, students are expected to:

- be able to design and implement mobile applications:

- be aware of the implications of GPDR, avoiding some of the common pittfalls regarding users’ privacy;

- be aware of the need of having secuirty by design;

- understand the implicit tradeoffs between performance, energy consumption and security/privacy.

Web Technologies

CC3008 - ECTS

The goal of this curricular unit is to familiarize students with the concepts and technologies used in the development of web-centered applications. This includes learning about the different types of web applications, the different technologies that can be used to build them, and the best practices for designing and developing web applications.

Large Scale Data Science

CC3047 - ECTS Introduction to the use of cloud computing infrastructures for processing massive amounts of data ("big data") in real-world problems.

Computability and Complexity

CC3004 - ECTS

Study and comparison of different (Turing-complete) models of computation, their computational power and limitations. Study of the various complexity classes of problems.

After completing this course students are expected to

- know the classical models of computation;
- be able to prove the equivalence of several Turing-complete models;
- know the fundamental results and methods used in the study of computability and complexity;
- be able to classify concrete examples of problems and prove their (un)decidability within several classes of computability;
- be able to classify concrete problems about their time complessity, and understand the consequences of that classification.

Information Management and Visualization

CC3045 - ECTS

Introduction to Intelligent Robotics

CC3046 - ECTS 1. To understand the basic concepts of robotics and the context of artificial intelligence in robotics.
2. To study methods of perception and sensorial interpretation, which allow creating precise world estates and mobile robots’ localization methods.
3. To study the methods which allow mobile robots to move and navigate in familiar or unfamiliar environments using planning and navigation algorithms.
4. To understand and use the main machine learning algorithms for robotics.
5. To analyze the main national and international robotics competitions, the more realistic robot simulators and the more advanced robotic platforms available in the market.
6. To Improve the ability to communicate regarding scientific and technical issues and promote a healthy scientific approach.

Decision Support Methods

CC3003 - ECTS Students should:
1. Become familiar with the main decision and optimization problems.
2. Learn how to formalize optimization models in mathematical programming.
3. Master some methods used for their resolution.
4. Become familiar with existing languages and libraries for problem solving.
5. Develop skills to assess the computational complexity of problems.

Concurrent Programming

CC3040 - ECTS

Introduce students to the fundamental theoretic and practical principals of concurrency, with emphasis on the correctness, design and implementation of models of concurrent computation using shared memory architectures. 

Programming in Logic

CC3012 - ECTS - Provide students with fundamental concepts of logic programming
- Develop in students Prolog programming skills
- Explain the relationship between logic programming and mathematical logic
- Foster in students the motivation for logic programming
- Introduce students to applications of logic programming practices
- Involve students in practical projects lin ogic programming
- To relate Logic Programming with other disciplines of the course

Functional Programming

CC1005 - ECTS

Introduction to functional programming using the Haskell language.

Project-Internship of Artificial Intelligence and Data Science

CC3048 - ECTS This internship/project aims to assess the students' ability to meet the real world research challenges and to promote their professional integration in scientific research institutions as well as in IT companies.

Multimedia Systems

CC3013 - ECTS
Recommend this page Top
Copyright 1996-2025 © Faculdade de Ciências da Universidade do Porto  I Terms and Conditions  I Acessibility  I Index A-Z  I Guest Book
Page created on: 2025-06-22 at 09:04:20 | Acceptable Use Policy | Data Protection Policy | Complaint Portal