Linear Algebra and Analytic Geometry
M1002 - ECTS
Upon completing this course, the student should master the main concepts of Linear Algebra and Analytic Geometry. Namely, 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: a
cquisition of basic concepts of Probability and Statistics and their application to concrete situationParticular 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
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