Provide students with skills that allow them to:
GO1- Know and understand the fundamental concepts of Linear Algebra and Analytic Geometry;
GO2- Identify the most appropriate methodologies for solving concrete problems, for this particular Curricular Unit (CU), and in general for the course contents that depend on these methodologies;
GO3- Interpret the results obtained from the application of the various methodologies;
GO4- Handle mathematical software.

Upon completion of this course, the student should be able to:
SO1- Know and operate with complex numbers;
SO2- Recognize and operate with matrices and determinants;
SO3- Solve systems of linear equations;
SO4- Determine values Eigenvalues and eigenvectors of a matrix;
SO5- Identify and operate in vector spaces and linear transformations;
SO6- Use free software for problem solving.

C1- Complex number sets (Revision);
C2- Matrices and determinants;
C3- Systems of linear equations;
C4- Eigenvalues and eigenvectors of a matrix;
C5- Vector spaces;
C6- Linear transformations;
C7- Use of free software.



This course is intended that students are able to acquire, understand and apply knowledge of basic principles:
GO1 – of digital systems;
GO2 – of operating systems;
GO3 – networks of computers

After concluding this curricular unit, the student should be able to:

SO1 – understanding the nature of digital systems (to achive GO1);
SO2 – identify gates (to achieve GO1);
SO3 – analyze and implement basic digital circuits (to achieve OG1);
SO4 – design of basic digital circuits (to achieve OG1);
SO5 – perform maintenance on basic digital circuits (to achieve OG1);
SO6 – using the command line of operating systems (to achieve OG2);
SO7 – manage users (to achieve OG2);
SO8 – manipulate the file system (to achieve OG2);
SO9 – control operating system processes (to achieve OG2);
SO10 – identify the different types of computer networks and related components (to achieve OG3);

CP1 – Digital Circuits
CP1.1 – Nature of Digital Circuits
CP1.2 – Boole Algebra
CP1.3 – Maps of karnaugh
CP1.4 – Logical Gates
CP2 – Operating Systems
CP2.1 – Command Interpreter (Shell)
CP2.2 – Basic Commands
CP3 – Computer Networks
CP3.1 – IP Networks
CP3.2 – DNS, ARP, DHCP Protocols



General Objectives:

– OG-1. Plan and develop efficient solutions, in the form of algorithms and programs, to solve problems with different degrees of complexity.
– OG-2. Characterize and apply concepts of the imperative programming paradigm.

Specific Objectives:

– OE-1. Identify different types of programming languages.
– OE-2. Recognize and understand the semantics and syntax of the C language.
– OE-3. Implement algorithms in C language.
– OE-4. Use of libraries.
– OE-5. Develop properly structured programs.
– OE-6. Critically analyze a program in terms of correction and performance.

1. Fundamental concepts
a) Problems, algorithms, and programs
b) Programming Paradigms
c) Source code translation process
2. Data
a) Data Types
b) Variables and Constants
c) Assignment and arithmetic operations
e) Structures
f) One-dimensional and multidimensional vectors
3. Execution control structures
a) Relational and logical operators
b) Conditional control structures
c) Repetitive control structures
4. Code structure
a) Functions
b) Libraries
c) Recursivity
d) Arguments by value and by reference
5. Memory management
a) Pointers
b) Dynamic memory
6. Reading and writing files
7. Sorting and searching algorithms



This course aims to enable students to be able to acquire, understand and apply knowledge about the basic principles:
GO1 – of the kinematics
GO2 – the dynamics
GO3 – of electricity
GO4 – from electronics
Learning outcomes of the course unit At the end of this course students should be able to:
SO1 – Use the International Unit System (to achieve GO1, GO2 and GO3);
SO2 – Identify the fundamental principles of classical mechanics (to achieve GO1 and GO2)
SO3 – Identify electrical quantities and their units (to achieve GO3);
SO4 – Identify electrical and electronic components (to achieve GO3 and GO4);
SO5 – Describe the operation of electrical and electronic components (to achieve GO3 and GO4);
SO6 – Analyze and elaborate an electronic circuit (to achieve GO3 and GO4);

PS1 – Unit Systems
PS2 – Material Point Kinematics (Laws of Motion)
PS3 – Dynamics (Newton’s Laws)
PS4 – Electrical Quantities
PS5 – Basic Electricity Laws
PS6 – Association of Components and their Characteristics
PS7 – Continuous Current Circuit Theorems
PS8 – Elaboration of Electronic Circuits



General objectives:
a) Provide students with skills on general concepts of programming concepts;
b) Provide students with skills that enable them to develop programming projects.

Specific objectives:
I. Know the computer as a programmable tool;
II. Analyze a problem and structure its resolution as an algorithm;
III. Implement algorithms in C language;
IV. Develop simple programs legibly and document the work done;
V. Analyze, evaluate and critique programs;
VI. Develop more complex programming projects, working in groups.

1. Introduction to Programming
a) The computer from the programmer’s point of view
b) Programming languages
c) Source code, machine code and translation software
d) Stages of compilation
e) IDEs and main functionalities
f) Binary and Hexadecimal System
g) Addressing System
2. Structuring of solutions and Algorithm
a) Use of visual programming tools
b) Flow, Variables and State
c) Arrays, matrices, conditions and cycles
d) Implementation of algorithms in C
3. Structuring of programming projects
a) Code structuring
b) Header files
c) Definition and use of own libraries
d) Comments and Code Documentation – Doxygen
e) Good practices in programming
4. Development of group programming project



O1- Investigate on relevant subjects regarding the methods and technologies used
O2- Analyze problems in depth
O3- Specify requirements for problem resolution
O4- Select the most adequate methodologies
O5- Analyze, experiment and comment on solutions
O6- Safely use the available resources
O7- Understand and produce technical and scientific information in the area of the degree
E1- To write the function that best approximates a dataset using interpolation and splines, analyzing the errors
E2- To calculate approximations of functions using interpolation
E3- To know and apply the least squares method
E4- To distinguish discrete and continuous random variables and know the main distributions
E5- To perform analysis and interpretation of sample data, using statistical statistics and linear regression
E6- To know and apply Classification and Clustering methods
E7- Use and select specific software

C1 – Interpolation and Approximation of Functions
C2 – Least Squares Method
C3 – Random Variables and Theoretical Distributions
C4 – Descriptive and Statistical Inference Techniques
C5 – Linear Regression
C6 – Classification and Clustering



– Provide the students with knowledge and practical experience on the best practices and methodologies for software development (obj1);
– Understand the processes and correctly apply the key techniques for software quality control, with emphasis on the techniques for software testing and software configuration management (obj2);
– Provide the students with practical skills for agile software development, according to Test-Driven Development (TDD) approach (obj3).
– Know and interpret models for the continuous improvement of the software development life cycle (obj4).

1) Background and general concepts (introduction and review of software development);
2) Software Development Methodologies;
3)Software Quality fundamentals;
4)Introduction to the software quality management;
5)Software e Quality Assurance and underlying sub processes;
6)Software Testing, Quality Control and Software Configuration Management;
7)Models for continuous improvement of the software development process;
8)Quality metrics and measures.



(Objective 1) Know the main concepts for annotating documents and current techniques for specifying markup languages.
(Objective 2) Understand and apply construction rules associated with XML (Extensible Markup Language) and JSON (JavaScript Object Notation) formats, the specific languages for document processing such as typing, formatting and graphics presentation, and its integration using WEB environment.
(Objective 3) Explore technologies for structuring documents and support its production, processing and storing using a collection of documents.
(Objective 4) Know different storage and cataloging approaches for data stored in documents.
(Objective 5) Develop programming interfaces to store and process data to support application development.
(Objective 6) Understand the specifics related to information interoperability

(Topic 1) Introduction to XML (Extensible Markup Language) documents and its validation
(Topic 2) Navigation and querying of XML documents
(Topic 3) Transformation of XML documents
(Topic 4) Storing, Structuring, and querying of XML and JSON (JavaScript Object Notation) documents
(Topic 5) Transforming, processing, and storage of JSON document collections
(Topic 6) Indexing, processing, querying, and faceted search over structured data.
(Topic 7) Know the specificities related to the interoperability of information using the HTTP protocol, web services, REST, among others.



Identify and understand the key concepts related to the internal operation of modern operating systems, and understand the key problems related to concurrent application development.

After concluding this Curricular Unit, the student should be able to:
1- Identify the major operating systems and their components
2- Identify the different types of operating systems
3- Understand how operating systems, and their components, work
4- Develop concurrent applications

1- Operating systems architectures
2- Process and process scheduling
3- Process scheduling algorithms
4- Interprocess communication
5- Deadlocks
6- Classical synchronization problems
7 – Memory management
8- Virtual memory
9- Device management



The general objectives of this curricular unit are:
– Understand and use efficiently and effectively advanced data structures
– Build algorithmic solutions to simple and complex problems using the object oriented paradigm

More specifically, after concluding this Curricular Unit, the student should be able to:
1. To know the characteristics of the Java language;
2. Being able to use a development environment for Java applications;
3. Recognize and understand the semantics and syntax of the Java language;
4. Analyze and understand code that is based on the object oriented programming paradigm.
5. Reuse, modify, and develop code using the Java language in order to respond to a given problem.

1. Java Collections Platform
2. Generics
3. Linear and Non-Linear Structures
4. Introduction to the algorithms Efficiency
5. References
6. Introduction to Linked Lists and Double Linked Lists
7. Stack
8. Queue
9. Lists
10. Iterators
11. Recursion
12. Sorts
13. Trees
14. Binary Search Trees
15. Heaps
16. Graphs
17. Hashing
18. Collection Set



The general objectives of this curricular unit are:
– At the end of the curricular unit, the students should be able to identify and understand the typical problems that exists on mobile systems.
– Develop applications for the Android platform, as well as, understand which application components must to be used for each purpose.

More specifically, after concluding this Curricular Unit, the student should be able to:
I) Knowing the existing challenges in developing applications for mobile devices
II) Distinguish the different components of an Android application
III) Define and structure solutions for the Android platform
IV) Develop native applications for Android mobile devices
V) Develop applications that work effectively in tablets and smartphones, prepared for publication

1. Challenges in the development of applications for mobile devices
2. Introduction to the Android platform
3. Development of native Android applications
a. Development environment and emulator
b. User Interface
c. Support libraries
d. Android Architecture Components
e. Preferences, databases and webservices
f. Location, Maps and Google Play Services
g. Background execution and notifications
h. Multimedia and Sensors
4. Publish an Android application



The main goals of this curricular unit are:
– Provide students with technical skills in the systems administration field;
– Present the systems administration in the context of service providing.

More specifically, after concluding this curricular unit, the student should be able to:
a) Install and provide remote support for large scale systems;
b) Select an O.S. according the technical requirements;
c) Troubleshooting any reported problems;
d) Install and maintain different network services (DHCP, DNS, HTTP, Email, etc.);
e) Manage the systems resources;
f) Automate the system management and maintenance tasks.

1. Scripting Language:
a. Variables;
b. Input/Output;
c. Data Structures;
d. Files;
e. Regular Expressions;
f. Modules.
2. Bare Metal, Virtualization and Containers:
a. O.S. installation and Setup;
b. Shell Environment;
c. Software Package Management.
3. Filesystems and Storage Management
a. Disk Drives, Volume Groups, Logical Volumes e Filesystems
4. Users management and tasks scheduling
5. Services:
a. SSH;
b. DHCP;
d. Email;
e. DNS;
6. System Monitoring.




The general objectives of this course are to provide students with the skills to rapidly develop applications based on an agile development methodology and supported by collaborative work tools. More specifically, upon completion of this curricular unit the student should be able to:
I. Integrate the application development process with the Application Lifecycle Management (ALM);
II. Develop an application based on an agile methodology;
III. Understand and implement the use of Version Control and Continuous Integration tools
IV. Understand and implement the concept of Multi-Tier Architecture;
V. Understand and implement the Object-Relational Mapping (ORM) concept;
VI. Understand and implement the concept of Service Oriented Architecture (SOA)

1. Revision of the Software Development Lifecycle
3. .NET Core Architecture
4. Version Control
5. Continuous Integration
6. .Net core and MVC, ORM and webservices
7. Software Testing
8. Preparation for production



To succeed in this course, students should be able to:
OB1. Understand the scope of information systems in organizations;
OB2. Understand the organizational aspects involved in the implementation of new information technologies and their impact on organizations;
OB3. Analyze information systems in the context of the organizations that they support, separating the technological from the organizational and management aspects;
OB4. Know the factors involved in the use and impact of information systems, and the determinants of their success and/or failure;
OB5. Design an information system.
OB6. Develop process-oriented systems based on BPMS tools

CP1. Fundamental concepts of information systems. Information Systems in Global Business Today. Information Systems, Organizations, and Strategy.
CP2. Information systems planning. Methods for selecting and evaluating information systems projects. Information System Costs and Benefits. Risk factors
in information systems projects
CP3. Information systems architecture modelling using Archimate;
CP4. Business process modeling with BPMN – Business Process Modeling Notation and its implementation with a BPMS tool (Bonitasoft)
CP5. Organization and inter-organizational environment;
CP6. Information systems in organizations. Achieving Operational Excellence and Customer Intimacy: Enterprise Applications



OB1. Understand the fundamental concepts of software engineering;
OB2. Distinguish the concepts of methodology, method, technique and tool;
OB3. Know the main types of object-oriented analysis models, for the representation of software requirements;
OB4. Create some artifacts of object-oriented analysis;
OB5. Compare the processes of development according to the structured analysis and object-oriented analysis;
OB6. Know and use CASE tools (Computer Aided Software Engineering)
OB7. Know and use Software Engineering standards.

CP1. Overview of Software Engineering;
CP2. Requirements Engineering;
CP4. Concepts Based on Object Modeling;
CP5. Modeling in UML;
CP6. CASE tools (Computer Aided Software Engineering);
CP7. Standards for Software Engineering.



– To select the most appropriate methodologies to solve problems;
– To analyse, experiment and critique solutions;
– To analyse problems and situations in an in-depth way.
O1 – To calculate numerically the derivative from a tabulated function;
O2 – To solve numerically a nonlinear equation;
O3 – To identify and correctly apply the different techniques in obtaining a primitive of a real function of real variable; O4 – To apply numerical and analytical integration methods to the calculation of areas;
O5 – To analyze the convergence of a numerical series using the appropriate criteria;

1. Complements of the Differential Calculus in R 1.1 Derivation rules
1.2 Inverse trigonometric functions
1.3 Applications of derivatives
2. Error Theory
3. Numerical Differentiation
3.1 Formula of the 3 and 5 points
4. Solutions of nonlinear equations
4.1 Bisection method
4.2 Newtow method
5. Undefined Integral
5.1 Definition and Properties
5.2 Integration by substitution and by parts 5.3 Integration of rational functions
6. Defined Integral
6.1 Geometric interpretation and properties
6.2 The fundamental theorem of integral calculus
6.3 Application of defined integral to the calculation of areas
7. Numerical Integration
7.1 Rule of trapezes and Simpson
8. Numerical Series
8.1 Definition, characterisation and convergence study (divergence)



– Recognize topics and apply mathematical techniques and methods for solving problems of other CU of the course;
– Select the most suitable methodologies for solving problems and in new problematic situations;
– Analyze, criticize and explain the obtained results.
O1 – Identify the basic terminology and propeties of sets, functions, permutations, sequences, relations, graphs and number theory;
O2 – Performe operations with sets, functions, permutations, sequences and relations;
O3 – Relate practical examples with the corresponding models involving sets, functions, permutations, relations e grafos, and interpret the operations and terminology in the context;
O4 – Modeling problems in Computer Science and relate graphs and trees with data structures and algorithms;
O5 – Recognize and apply principles and techniques of Number Theory and Discrete Probability used in Computer Science;
O6 – Know and use mathematical software for problem solving.

C1 Fundamental Structures, Relations and Induction
1.2 Functions, Permutations, Sequences, Sums and Products
1.3 Relations and their applications
1.4 Induction and recursion
C2 Graph Theory
2.1 Graphs and their representation
2.2 Eulerian and Hamiltonian paths
2.3 Trees and their applications
C3 Theory of Numbers
3.1 Divisibility and modular arithmetic
3.2 Solving congruences, their applications e Encryption
3.3 Counting Techniques, Discrete probability and Markov Chains.
C4. Use of mathematical software



The general objectives of this curricular unit are:
– To know and understand the fundamental concepts associated with object-oriented programming paradigm (class, object, encapsulation, dependencies between types, interface, inheritance and polymorphism)
– Apply and extend the knowledge of object-oriented programming concepts within the development of solutions.

More specifically, after concluding this Curricular Unit, the student should be able to:
1. To know the characteristics of the Java language;
2. Being able to use a development environment for Java applications;
3. Recognise and understand the semantics and syntax of the Java language;
4. Analyze and understand code that is based on the object oriented programming paradigm.
5. Reuse, modify, and develop code using the Java language in order to respond to a given problem.

1. Introduction to the Java language
2. Data Types and Operators
3. Control Flow
4. Classes, Objects and Methods
5. Inheritance and Polymorphism
6. Exception Handling
7. Input / Output
8. Introduction to the Collections Platform



With this course is intended that students are able to acquire, understand and apply knowledge about:
GO1 – digital systems;
GO2 – computer architecture.

After concluding this curricular unit, the student should be able to:
SO1 – represent digital information (to achieve GO1);
SO2 – analyze combinatorial circuits (to achieve GO1);
SO3 – analyze arithmetic circuits (to achieve GO1);
SO4 – analyze sequential circuits (to achieve GO1);
SO5 – analyze the internal organization of a computer (to achieve GO2);
SO6 – analyze the internal structure of a processor (to achieve GO2);
SO7 – analyze the instruction set processor (to achieve GO2);
SO8 – programming in assembly (to achieve GO2).

CP1 – Combinatorial Circuits
CP2 – Operating Circuits
CP3 – Sequential Circuits
CP4 – Architecture of a Computer
CP5 – Instruction Set
CP6 – 8085 Microprocessor
CP7 – Memory Systems
CP8 – Inputs/Outputs



1. Modeling decision problems and identify well-known problems.
2. Know and apply algorithms and specific tools for problem-solving.
3. Perform a critical analysis of the performance of different algorithmic solutions.
4. Recognize the importance of using these techniques to support decision making.
5. Know areas of application of these techniques in real problems.

1. Introduction to linear programming.
2. Problem modelling.
3. Graphical solution.
4. Simplex method.
5. Problem of transportation, assignment, and network optimization.
6. Classification and complexity of problems.
7. Heuristics and metaheuristics.



The general objectives of this curricular unit are:
– Design, model, implement and manage Databases.

More specifically, after concluding this Curricular Unit, the student should be able to: – Know existing Database Technologies
– Question databases in relational Algebra and SQL
– Plan, Design and Manage Databases
– Normalize a Database Schema
– Know emerging Database Models (DataWarehousing, DataMining)

Theoretical Classes:
1 – Introduction to Databases;
2 – Relational Model;
3 – Relational Algebra and Structured Query Language (SQL);
4 – Database development methodology;
5 – Transaction and concurrency management;
6 – Data Warehousing, Data Mining.

Practical Classes:
1 – Relational Algebra;
2 – Structured Query Language (S.Q.L.);
3 – Normalization;
4 – Database Management Systems: SQL Server 2016 or superior.



General Objectives:
1 Know and use the Client-Server model as well the main Internet technologies in the development of web applications;
2 Develop web applications using programming languages and tecniques to support the client and server web application components
Specific Objectives:
After concluding this course, the student should be able to:
1. Know and use the Client-Server protocol, the techniques and programming languages used for Web development
2. Identify technologies and software patterns used for developing Web applications;
3. Mastering languages for data structuring in a web environment, presentation using style sheets and logic in web pages;
4. Development of skills for the creation of web applications using client and server languages;
5. Identify the libraries and frameworks to simplify the development of web applications.

1. Introduction to Internet and web application development
2. Hypertext Markup Language (HTML) for semantic Web
3. Cascading Style Sheets (CSS) for web page styling, layout implementation and responsive web
4. Client-Side Scripting (JavaScript) to add logic and functionalities to a website
5. Server-Side Scripting (eg:NodeJs) for the development that manage persistent data
6. Web development frameworks for the development of of web applications



OB1. Understand the basics of an Information System, Types and Methodologies of designing an IS
OB2. Understand the role of Information Systems (IS) in organizations and the importance of its alignment with the business strategy;

OB3. Perform a basic usage of an ERP;

OB4. Interpret, classify and explain how the IS contributes to an organization Value Creation;
OB5. Perform a sales and acquisition process interacting with ERP interacting with the main modules (Sales, Procurement, GL Accounting, Cost Accounting, Inventory Management). Recognize the various steps involved.
OB6. Perform a basic Business/Financial Management/IT alignment

1. Information systems: Organizations, Methodologies and Strategy
2. Business applications and ERP
3. Alignment of an information system to the organization and to an integrated business software package
4. Methodologies and design of an Information System
5. Methodologies to help on understanding business models, with the objective of integration with the information systems and business applications
6. Case Study with an ERP usage



This course has an overall capability and technical knowledge aggregation purpose.

After concluding this Curricular Unit, the student should be able to develop a software solution or research project, going through its common milestones (planning, design, development, preparation of technical documentation, presentation and discussion).

1- Project selection/ranking and student allocation
2- Development of an IT solution or a research project



Allow the students to acquire knowledge of the fundamentals and technologies of Artificial Intelligence and to acquire expertise in this field of study.
After concluding this Curricular Unit, the student should be able to:
I. Describe the history of AI and understand its use in companies and other corporations
II. Know the main areas and techniques of AI
III. Know the main tools in the different fields of AI, being able to distinguish between the more suited methods/algorithms for each type of problem.
IV. Identify the main advantages and disadvantages of the approaches for problem resolution taught, being able to make grounded choices for the more suited for each type of problem
V. Integrate AI techniques and tools in real-life applications, in order to solve real-world problems

1. Introduction to Artificial Intelligence and Knowledge-based Systems
a) Fundamental concepts and evolution
b) Application fields

2. Logic
a) Knowledge Representation using 1st order Logic
b) Reasoning Mechanisms
c) Introduction to PROLOG: facts, rules, variables, operators
d) Control structures, lists and recursion in PROLOG
e) Dynamic update of knowledge and multiple solutions

3. Natural Computation
a) Evolutionary Computation
b) Genetic Algorithms

4. Machine Learning
a) Basic Concepts
b) Supervised Learning (Decision Trees, Neural Networks, Deep Learning, Ensembles)
c) Model Evaluation
d) Unsupervised Learning (Segmentation)

5. Probabilistic AI (Bayes Theorem)

6. Instance Based Learning
a) Closest Nearest Neighbour
b) Support Vector Machines



Provide knowledge about management and organizations, namely fundamental theories and the main instruments in contemporary times. Understand what an organizational competency is in order to see the organization as a whole.

Management evolution
Management and Organization:
-The Concept of Organization and Management;
-Management Functions : planning; organization; leadership and control;
The company and its context, processes and structures:
-Vision, Mission, Strategy, Objectives;
-Porter’s Forces, PESTEL Analysis, SWOT;
-Organizational alignment;
-Value Chain;
Behavioral issues