Algebra
EIC0003 - ECTS
SPECIFIC AIMS:
This discipline has two main objectives: the promotion of logical reasoning and methods of analysis and the introduction and theoretical development of a set of concepts that will be fundamental to support the study of other disciplines along this course of studies.
LEARNING OUTCOMES:
Learning Outcomes:
At the end of the semester, students should be:
1. capable of analysing and solving systems of linear equations;
2. acquainted with basic matrix operations and its properties;
3. capable of defining a non-singular matrix and be acquainted with the properties of an inverse matrix and its calculation;
4. capable of defining the determinant of a matrix and be acquainted with its properties and calculation;
5. capable of defining vector space, vector subspace and Euclidian space;
6. capable of defining linear combination of vectors, linear independence/dependence vectors and subspace;
7. capable of defining and determining a base and the dimension of a vector space; be capable of obtaining the components of a vector in relation with its base;
8. capable of defining a linear transformation and calculate and characterize its kernel; be acquainted with algebraic operations and define and calculate inverse transformation;
9. capable of using a matrix to represent a linear transformation and operate linear transformations using matrix algebra;
10. capable of defining a change of base matrix and apply it to problems of change of base that involve elements of a vector space and linear transformations;
11. capable of defining similar matrices and be acquainted with their properties;
12. capable of calculating eigenvalues and eigenvectors of linear transformations and to be acquainted with their properties, and if possible identify a diagonal matrix representation for a linear transformation.
Mathematical Analysis
EIC0004 - ECTS
This course aims to acquaint students with the differential and integral calculus, in order to make them able to apply basic tools of mathematical analysis in problem solving related with subjects of this degree. This course also aims to expand students’ knowledge, so that they can solve new kinds of problems.
At the end of this course, the learning outcomes are:
1. To solve derivatives of functions, draw graphics and study functions in general
2. To solve integrals and use them in various engineering applications
3. To use different integration techniques and differential equations
4. To use series and polynomials, to dominate the approximation concepts.
Computer Architecture and Organization
EIC0083 - ECTS
This course introduces the principles of operation and general structure of a modern computer and its general structure, with particular emphasis on the contribution of each subsystem to the overall performance. The analysis of the implementation technology of computers (logic circuits and memory), together with the basic principles of digital information representation, will allow students to identify and describe the principles of computer operation, programming languages and software development.
After completing this course, students will be able to:
- Identify and describe the major subsystems of a personal computer: processing unit, memory and peripherals;
- Explain and evaluate the performance of computers in simple scenarios involving the fundamental performance equation and Amdahl's law;
- Describe and interpret basic forms of digital representation of numerical information;
- Explain and perform basic binary arithmetic operations;
- Identify and explain the operation of basic logic circuits;
- Distinguish combinational and sequential circuits;
- Determine the logic diagrams corresponding to a Boolean expression and vice-versa;
- Explain the operation of basic logic circuits like comparators and adders, and establish the corrsponding Boolean expressions;
- Examine the operation of a Moore state machine;
- Design state machines for simple control systems;
- Classify and categorize the types of instructions of a processing unit;
- Explain the basic principles of instruction encoding and identify its impact on performance;
- Write simple programs in assembly language involving Boolean and arithmetic operations, tests and jumps;
- Describe the operation of a single-cycle processing unit;
- Specify simple extensions of the single-cycle processing unit;
- Describe and explain instruction pipelines and their impact on performance;
- Describe the operation of a pipelined processing unit;
- Apply state machines to the analysis of the control unit of a pipeline;
- Identify data and control conflicts that may occur in a pipelined instruction unit; a processing unit in the pipeline;
- Assess the impact of pipeline conflicts on performance for simple scenarios;
- Distinguish between static and dynamic memories, and identify their applications;
- Explain the working principle of the two types of memories;
- Identify the different levels of the memory hierarchy of a personal computer;
- Explain the operation principle of cache memories;
- Describe the organization of a cache memory (associativity) and the handling of cache misses; treatment of access failures.
- Evaluate numerically the influence of the memory hierarchy on performance (for simple scenarios);
- Explain the problems associated with the use of cache memory in multiprocessors.
Programming Fundamentals
EIC0005 - ECTS
1 - BACKGROUND
Informatics Engineers require expertise in programming techniques which can only be consolidated with a good basis in programming fundamentals.
2 – SPECIFIC AIMS
To develop the basic knowledge to solve medium complexity programming problems.
3 – PREVIOUS KNOWLEDGE
No previous knowledge is required.
4 – PERCENT DISTRIBUTION
Scientific component: 40%
Technological component: 60%
5 - LEARNING OUTCOMES
At the end of the course, the student is expected to handle programming problems of medium complexity, creating the appropriate procedural and data abstractions. The student will be encouraged to find good ideas to solve the problems and implement them with Scheme, a very simple programming language.
Discrete Mathematics
EIC0011 - ECTS
The main objective is to learn mathematical techniques useful to analyze and solve problems in different areas relevant for Informatics/ IT.
At the end of this course students should be able to analyze Informatics-related problems using Mathematical methods, abstract thinking, logical inference from premises, and thus to reach accurate and concise solutions.
Project FEUP
FEUP002 - ECTS
Objectives:
- To receive and integrate the new coming students.
- To introduce the most important services
- To teach “Soft Skills” and to stress their importance (soft skills: team work, communication, etc)
- To discuss a scientific theme/ project
Learning Outcomes:
RES_1: To know FEUP and to use its services, such as: CICA, SICC, SERAC, SDI.
RES_2: To have communication skills (report, oral presentation and poster)
RES_3: To have research skills and to be organized
RES_4: To have team work skills: to make part of a team, to be assessed; to have flexible interpersonal relationships; to have the ability to interiorize and respect group rules
RES_5: To reach the specific aims of the Theme/Project.
Note: Further down is explained how each of theses results are assessed
Complements of Mathematics
EIC0009 - ECTS
This course unit aims to act as a complement to other course units related to mathematics. It aims to train students on the application of mathematical tools and problem solving related to the themes of this Integrated Masters.
At the end of the semester, students should be capable of:
- solving differential equations
- calculating line and surface integrals
- representing Fourier series functions
Physics I
EIC0010 - ECTS
To pass this course students should be able to:
1. Analize a dynamical system and identify the state variables, evolution equations and type of system.
2. Find the equilibrium points of a dynamical system and explain their characteristics.
3. Solve the evolutions of a system numerically and interpret the solutions obtained.
4. Create simulations of simple dynamical systems.
Statistical Methods
EIC0105 - ECTS
SPECIFIC AIMS:
This course unit aims to provide students with an integrated vision of the basic concepts and techniques of Statistics.
LEARNING OUTCOMES:
At the end of this course unit, students should be capable of:
-using methods to explore, summarize and present data;
- using statistical inference methods.
Microprocessors and Personal Computers
EIC0016 - ECTS
The course unit Microprocessors and Personal Computers aims to develop, combine and apply concepts in the areas of Computer Architecture and Programming Languages. On the one hand, the course explores the relationships between the CPU instruction set and low-level programming (assembly language). On the other hand, recognizing that the architecture of modern personal computers goes far beyond the architecture of the CPU, the course addresses the general architecture of a PC, including data storage subsystem and other peripherals. The discussion is based on the family of microprocessors Intel IA-32, used in the vast majority of personal computers.
Upon successful completion of this course, students will have acquired the ability to identify and describe the architecture of personal computers in use today, as well as the ability to apply assembly programming to the implementation of any algorithm.
After completing this course, students will:
- Identify and describe the major subsystems of a personal computer;
- Explain and evaluate the contribution of each subsystem to the overall performance;
- Use tools for compiling and debugging (MASM, debugger);
- Describe the architecture of the IA-32 instruction set;
- Develop short programs in IA-32 assembly language;
- Explain the operation of programs in IA-32 assembly language;
- Explain the mechanisms for invocation of subroutines;
- Use modular subroutines to implement programs;
- Use the math co-processor (floating point instructions);
- Establish the correspondence between assembly code and C code;
- Describe and assess the performance of data storage systems (magnetic disks);
- Distinguish different types of RAID;
- Describe, select and evaluate the performance of different methods of communicating with peripherals (polling, interrupts, DMA)
- Explain the principles of operation of buses for communication with peripherals;
- Describe the organization of the graphics subsystem of a personal computer.
- Explain the usefulness and overall architecture of a GPU.
Programming
EIC0012 - ECTS
The student is expected to strengthen its programming skills, introduced in Scheme in the Fundamentos da Programação / Programming Fundamentals course, by using now the C++ language.
By the end of the course the student will be able to:
- identify the fundamental concepts of procedural programming and objected oriented programming;
- solve programming problems of low/medium complexity using the C++ programming language and the abstractions from the C++ standard template library (STL);
- develop solutions to programming problems by defining and implementing user defined abstractions in C++.
Algorithms and Data Structures
EIC0013 - ECTS
Following up the former course on Programming, with this unit we intend:
- to use notions already acquired and systematically apply data structures and algorithms to solve certain categories of problems
- to use object-oriented programming
- give emphasis to the organisation of programs on the basis of abstract data types.
Practice is to be achieved with exercises and implementation of a small project in C++.
At the end of this unit course, students should :
- model problems following the object-oriented paradigm r
- solve problems using abstract data types and simple data structures (linear and non linear)
Physics II
EIC0014 - ECTS
To pass this course students should be able to:
Analize simple electrical circuits and explain their working principles.
Identify electromagnetic phenomena in their daily experience.
Explain how electric appliances work, based on physical principles.
Evaluate different electrical devices which perform the same task (for instance, displays based on CRT, plasma, LCD, OLED, etc) identifying their pros and cons.
Computer Laboratory
EIC0020 - ECTS
This course unit aims to endow students with the knowledge and the skills required to:
- use hardware interface of the most common computer peripherals;
- develop low level software and embedded software;
- program in the C language (using C++ as a reference);
- use various tools of software development.
Students, who successfully complete this course unit, should understand the main models of hardware access and be able to apply them in the development of relatively large programs.
Numerical Methods
EIC0021 - ECTS
The course aims at providing the student with solid numerical methods foundations. It is topic oriented, covering numerical error analysis, algebraic and differential equation and systems solving, definite integration, non-linear optimization and curve fitting.
The student will be able to:
- identify numerical problems, choosing and implementing the right solution method, after doing numerical experimentation;
- understand numerical methods in the context of engineering, working on examples from engineering practice;
- criticise results, from the methodological, implementation and problem context points of view.
Computing Theory
EIC0022 - ECTS
At the end of the semester, students should:
- Be capable of identifying the important contributions to computing theory and its protagonists;
- Be capable of identifying the problems that can be solved with finite automata and express them rigorously;
- Be capable of comparing deterministic finite automata (DFAs), non deterministic finite automata (NFAs), regular expressions and regular languages;
- Be capable of applying the properties of regular languages;
- Be capable of identifying problems which can be handled by context- free grammars (CFGs);
- Be capable of relating context- free grammars and pushdown automata (PDAs) in the processing of context-free languages;
- Be capable of expressing computing problems by using Turing machines;
- Be capable of relating the studied computing models with their applications in the computability theory and complexity theory.
Databases
EIC0023 - ECTS
The main objective of this course unit is to prepare students to design and develop database systems that meet the users' needs the organizational management goals.
Upon completion of this unit students should be able to:
- map the UML class model into the relational model
- use relational algebra to query databases
- design a relational database in the normalized form
- query relational databases in SQL and using a procedural language
- access a database through user interfaces
- use transactions and concurrency that ensure data integrity of a database
- explain the main features of a database management system
Computer Graphics
EIC0019 - ECTS
Provide the students with knowledge of Computer Graphics concepts, techniques, technologies and architectures.
We will enhance the practical application of the knowledge acquired, by implementing, testing and evaluating the algorithms presented in theory. The contents approach follows a philosophy Top-Down so we will start with themes related with 3D (image synthesis and modeling) and finish with several elementary algorithms within the 2D.
Exercises related to 3D contents are based on a large-use technology, the OpenGL.
At the end of the course unit, students should be capable of:
- understanding the interconnection of the different modules of 3D systems;
- designing and implementing 3D-oriented applications;
- designing and implementing applications with graphic interface;
- mastering event programming.
Algorithm Design and Analysis
EIC0110 - ECTS
This course unit aims to follow up and deepen the knowledge acquired in previous modules such as “Programming” and “Algorithms and Data Structures”, namely by introducing techniques for devising and implementing efficient algorithms to solve different classes of problems, as well as for analysing and assessing them. The course is intended to provide students with the following skills:
* be acquainted with and know how to apply efficient algorithms in graph problems, sets and strings;
* be acquainted with and know how to apply generic tecquniques to conceive and devise a wide range of algorithm classes;
* be acquainted with some classes of intractable problems and know how to conceive and devise algorithms to produce approximate solutions to some of those problems.
In the end of this course unit, it is expectable that students will be capable of characterising a given problem, of formalising it, of conceiving and devising efficient algorithms to solve it, as well as of assessing the devised solution.
Object Oriented Programming Laboratory
EIC0111 - ECTS
Specific aims:
To develop skills in the development (design, programming and testing) of fairly complex programs, using object oriented technologies, including the Java programming language, the Unified Modeling Language, the Eclipse IDE, and the JUnit unit testing framework.
Learning Outcomes:
At the end of this course, students should be able to:
- develop (design, code, document, analyze, test and maintain) object oriented programs with UML and Java;
- use tools to support the various phases of program development and maintenance;
- use patterns and frameworks.
Operating Systems
EIC0027 - ECTS
At the end of the semester, students should be capable of:
- describing the functions and structure of an operating system and identifying its main abstractions;
- understanding the functioning of the main components of an operating system, the way they interact with each other and the main algorithms used to implement them;
- using and exploring the application programming interface (API) and of a real operating system (UNIX/LINUX).
Databases
EIC0023 - ECTS
The main objective of this course unit is to prepare students to design and develop database systems that meet the users' needs the organizational management goals.
Upon completion of this unit students should be able to:
- design the UML class model
- map the UML class model into the relational model
- design a relational database in the Boyce-Codd normalized form
- implement a database using the SQL data definition language
- use relational algebra to query databases
- query relational databases using the SQL data manipulation language and a procedural language
- optimize queries using indexes
- guarantee an adequate access control
- use transactions and concurrency that ensure data integrity of a database
- explain the main features of a database management system
- explain how can we access a database in a client-server architecture
- explain the main characteristics of Data Warehouses
Software Engineering
EIC0024 - ECTS
Specific Aims:
This course aims to acquaint students with techniques and procedures which are necessary to develop software systems. They are essential to improve the quality and to simplify the maintenance of these systems.
Learning Outcomes:
At the end of the semester, students should:
- be capable of describing the principles, concepts and practices of software engineering and software life cycle;
- be acquainted with and be capable of applying the required tools and techniques to carry out and manage the various tasks in the development of high quality software.
- be capable of explaining the development methods and processes of different types of software systems.
Graphical Applications Laboratory
EIC0084 - ECTS
The objective of this course is to develop a set of practical skills, some of them already tough in above courses. This course is focused in development practical works, multidisciplinary as possible, namely in the areas of Computer Graphics and Interfaces, Logic Programming, Operating Systems.
At the end of this course, students must be able to
- Design adequate structures to the use in 3D rendering systems;
- Design, develop and evaluate software applications with a 3D graphical interface by the use of a proper graphical technology;
- Integrate code developed in different environments and languages, by the use of communication technologies.
It is also an objective to give the students the capacity to develop software, namely in the creation of 3D environments (polygonal representation, illumination and interaction) and in the use of services offered by the operating system, with emphasis in communications and synchronization.
Web Languages and Technologies
EIC0112 - ECTS
The goal is providing the students with skills in the most significant languages and Web technologies in the current technological context or that were breakthroughs in the Web's evolutionary process. Therefore, students who obtain a passing grade shoud:
1- Recognize the different types of HTTP requests and responses
2- Implement, in a script language, a simple HTTP client
3- Identify and select the more appropriate languages and technologies for a Web site's development
4- Have a good understanding of several languages for the development of Web pages and styles
5- Write, in javascript, dynamic Web pages
6-Integrate in HTML, through the DOM Interface, XML ou JSON contents, asynchronous received through the HTTPRequest method
7- Develop server scripts to process requests and generate responses through the CGI interface
8- Describe a set of information in valid XML document according to a DTD or a XML Schema
9- Create a DTD, or a XML Schema, to specify a small language for a well defined domain
10- Define, using the declarative XSL language, a set of rules for XML documents transformation
11- Identify the different components of a WSDL description for a Web-Service
12 - Implement a REST Web Application Client
Logic Programming
EIC0026 - ECTS
Get acquainted with Logic Programming and Constraint Logic Programming paradigms and with Prolog programming language.
Develop competences for abstract reasoning and for representing problems in a declarative manner.
Recognize problem categories for which (constraint) logic programming is appropriate.
Practice of Prolog and Constraint Logic Programming techniques.
Development of complete Prolog applications with connection to other programming languages.
Development of the programming competences required in other disciplines related to Artificial Intelligence.
Computer Networks
EIC0032 - ECTS
Provide the students with basic training in Data Networks - knowledge of the essential architectural concepts and principles, the more used technologies and solutions and also the main standards. Furthermore, the student must be capable of analyzing and evaluating the performance of different types of systems and communication networks.
Compilers
EIC0028 - ECTS
Provide concepts which allow:
- to understand the languages’ compilation phases, specially imperative and object-oriented (OO) languages;
- to specify the syntax and semantics of a programming language;
- to understand and use the data structures and the main algorithms used to implement compilers.
The skill and learning outcomes will allow students to:
- develop and implement in software language processing systems of artificial languages and information textually specified under certain lexical and grammar rules;
- design and implement in software the various compiler stages, namely:
- regular expressions and finite automata;
- syntactic and semantic analyzers;
- semantic analyzers;
- code optimization;
- code generators having processors or virtual machines as target;
Artificial Intelligence
EIC0029 - ECTS
To know what characterizes and distinguishes AI and how to apply it.
To understand the notion of computational agent.
To know how to automatically represent, acquire, manipulate and apply knowledge:
-How to represent inexact knowledge.
-To compare heuristic and systematic methods in the search for solutions.
- To apply a logic-based language:
--To develop interfaces in Natural Language and inference engines for Expert Systems.
-To get acquainted with inductive and deductive learning algorithms.
-To develop a small project using Prolog and AI techniques.
Database and Web Applications Laboratory
EIC0085 - ECTS
In this course, the students will learn how to design and develop web-based information systems backed by database management systems.
After completing this course, the student will be able to:
1. Elicit the requirements of an information system
2. Identify the actors and their Use Cases
3. Prepare Use Case Diagrams using UML
4. Obtain the Domain Object Model
5. Obtain the Logical Relational Database Schema
6. Validate the relational schema based on functional dependencies
7. Obtain the database Physical Schema
8. Tuning the Logical Relational Schema
9. Explore the database using the Database Management System PostgreSQL
10. Write queries to the database using SQL
11. Implement integrity constraints and triggers
12. Define transactions
13. Define an architecture for handling errors in the data accesses
14. Set privileges of users and user groups
15. Use the scripting language PHP and libraries to build the user interface and business logic of the Web Application
16. Obtain the user interface in HTML
17. Set presentation styles using CSS
18. Validate integrity rules on data entry forms through the use of JavaScript
19. Use the JavaScript library jQuery to interact with the document and to make AJAX requests
20. Ensure that Web pages are obtained in accordance with the accessibility and usability standards
Personal and Interpersonal Proficiency
EIC0031 - ECTS
• Identify and acquire the basic knowledges to know how to progressively maximize the successful conditions of the personal and interpersonal performance.
• Apply self-control techniques and strategies of interpersonal relationships that allow managing with high mastery the efficiency of work processes implementation and the effectiveness of the outcomes to achieve in each organization.
• Be aware of the importance of knowing how to use soft skills and to perform growing changes in order to develop a professional profile that contributes to improve the future performance of the computer engineer.
Distributed Systems
EIC0036 - ECTS
Upon completing this course, the students should be able to
- understand the basics of the design and implementation of simple distributed applications
- analyze simple distributed solutions and evaluate their adequacy to the problems they aim to solve.
Agents and Distributed Artificial Intelligence
EIC0033 - ECTS
1- BACKGROUND
We assume in this course a technological-oriented approach to Software Agents design and applications. Students are expected to acquire a technological perspective on the subject.
2- SPECIFIC AIMS
Agents Oriented Programming is introduced as a new metaphore for designing and implementing distributed computer systems.
However, students will be able to deal with agents, as well as multi-agent systems, design through the support of formalization tools, including logics (intentional, BDI...).
Through small projects, students will be able to illustrate agents and MAS concepts in their practical aspects and importance.
3- PREVIOUS KNOWLEDGE
Knowledge of Artificial Intelligence techniques.
4- PERCENT DISTRIBUTION
Scientific component:50%
Technological component:50%
5- LEARNING OUTCOMES
At the end of the course, the student is expected to:
- Know the specificity of software agents;
- Recognize and describe the classes of problems more appropriate to use Agents and Multi-Agent Systems;
-Specify, by logical formalisms, the behavior of agents;
- Explore tools for building Agents and Multi-Agent Systems;
- Define and include intelligent decision strategies for Software Agents.
Enterprise Management
EIC0034 - ECTS
This course aims at developing management competencies, integrating a solid theoretical basis with casa study discussion and the development of a project. After completing this course, students should:
1. Understand the different functional areas of management and how they can be integrated in the firm's strategy.
2. Understand and explore how information technology can enable the firm's management and strategy.
3. Be able to apply managemment concepts, methods and tools.
4. Be able to coordinate multiple interdisciplinary tasks, integrating the different management functions, to attain shared business goals.
5. Be able to apply management methods and tools to analyze companie's management and identify improvements.
6. Be able to apply the management concept,s methods and tools to case discussion.
7. Be able to work in teams.
Software Development Laboratory
EIC0086 - ECTS
- To facilitate the application and integration of the contents acquired by the students in courses within the areas of Software Engineering, Data Bases, Graphic Interfaces, Operative Holidays, Programming Languages and Artificial Intelligence.
- To provide the students with the capacity of applying a Software Engineering process to the complete development of an application. All this, by using a methodology appropriate for the specification of requirements and software design and which enables the acquisition of reports, requirements and projects.
- To provide the students with knowledge on the use of software development tools appropriate for the recent methodology. These tools must enable the supervision of the product’s development during all its life cycle, including the purification, tests and documentation.
To allow the use of large-scale APIs with class packages; to induct the component-based computing and the problems related with application integration.
Formal Methods in Software Engineering
EIC0039 - ECTS
1- BACKGROUND
Students should have knowledge about software processes and software modelling.
2- SPECIFIC AIMS
To develop abstraction capabilities in order to describe what the system should do and not the way to do it. Be familiar with formal methods and the way they can contribute to increase the quality of software systems.
3- PREVIOUS KNOWLEDGE
Software engineering; Computing Theory; Algorithm design and analysis.
4- PERCENT DISTRIBUTION
Scientific component:50%
Technological component:50%
5- LEARNING OUTCOMES
At the end of the course students should be able to:
- Apply formal methods of specification (based on models, based on properties, based on behavior) and verification ("Model-checking, formal proofs and test) in the development of software systems.
- Identify existing formal methods and know when they should be applied and which are most suitable in each case.
Information Systems
EIC0040 - ECTS
Prepare students to understand the role of Information Systems (IS) in organizations and the importance of their alignment with the enterprise strategy.
At the end of the course, students should be able to use and develop applications that integrate with an ERP. The ERP systems used in the course are: SAP, SAGE X3, Microsoft Dynamics NAV and Primavera.
Software Systems Architecture
EIC0048 - ECTS
As the dimension and complexity of software systems grows, it becomes more important to understand them at more advanced abstraction levels.
The architecture of a software system describes the global structure in terms of its components, external proprieties and its interrelations. For medium and big-dimension systems, to chose the right architecture becomes crucial to the success of its development.
This course aims to introduce the concepts of software architectures, design patterns and topics directly related, such as the software components’ one. Furthermore, it aims to teach how to design, understand and evaluate software systems architectures both at the level of abstraction of macro-architecture and micro-architecture. All this to familiarize the students with the fundamental concepts of software architecture, the proprieties and applicability of the different architecture styles, the most popular design patterns, software components, reusable architectures and the relations of all these concepts with the software reuse.
At the end of the year, the students must be able to:
*Recognize the main architecture styles existent for software systems.
* Make a precise description of an architecture.
* Idealize different alternative architectures to solve the same problem and evaluate (justifying) which is the best one in terms of design and reuse.
*Recognize and understand several design patterns.
*Understand and apply several methods and techniques of software reuse.
*Build a medium-dimension software system following a requirement and architecture specification, selecting and applying design patterns and using a component-based development method.
*Use development definitions and tools to make the previous tasks more efficient.
Parallel Computing
EIC0089 - ECTS
The main objective is the acquisition of useful knowledge towards the simultaneous use of several processors in a computation system, by exploring techniques and technologies of parallel programming.
The skills to be acquired include:
- design and implementation of parallel algorithms adapted with the possible multi-processing architectures;
- choosing apropriately the programming models or patterns and estimate its performance;
- the fluent use of MPI and OpenMP;
- identifying and solve possible synchronization problems.
Computer Games Development
EIC0090 - ECTS
1 - BACKGROUND
Software engineers can take great advantages of having skills in the development of digital games, not only as a final product of the entertainment industry, but also due to the immersive and interactive capabilities of this technology that can enhance diverse software products, even in learning.
2 - SPECIFIC AIMS
The aim of this course is to convey knowledge about the process of computer games development, with particular emphasis on issues related to the programming of the distinct modules that compose a game engine.
3 - PREVIOUS KNOWLEDGE
Programming and Computer Graphics.
4 - PERCENT DISTRIBUTION
Scientific component: 30%
Technological component: 70%
5 - LEARNING OUTCOMES
At the end of the course the student will be able to:
- Identify the distinct tasks in a computer game project and all the skills involved;
- Apply computer games programming techniques within the context of computer games development;
- Select the algorithms and programming techniques that are best suited to the specification and design of a computer game;
- Develop, program and extend the distinct modules that compose a game engine.
- Develop a computer game project integrated in a multidisciplinary team.
Software Systems Requirements Engineering
EIC0053 - ECTS
------------
Objectives
------------
This course unit aims to endow students with planning and management skills, so that they can analyse and specify the requirements of a software system.
-------------
Learning outcomes
-------------
By the end of the course, students should be able to:
- define information system requirement;
- explain the importance of the requirements engineering process in the success of an information system;
- describe the requirements engineering process;
- identify and explain the roles and actors in the requirements engineering process;
- describe the application of problem solving techniques the requirements engineering process;
- describe and apply requirements workshops and prototyping for requirements identification;
- describe and apply scenarios and storyboarding techniques;
- describe and apply observation and other ethnographic methods;
- describe and explain requirements analysis techniques and their importance;
- explain the importance of requirements classification;
- classify requirements in terms of priority and risk;
- explain the importance of requirements negotiation;
- apply techniques of requirements negotiation;
- describe the several forms of requirements representation;
- describe the general structure of a requirements document;
- build complex use case based requirements descriptions;
- write a complete requirements document.
Operations Management and Logistics
Operational Research
EIC0037 - ECTS
The aim of this course to provide the students with competences to:
- identify decision problems;
- apply the different phases of the methodology for a decision problem resolution, in particular defining and structuring problems, building models, applying quantitative methods for obtaining a solution
- analyse critically the obtained solution
- understand the relevance of the role of an "agent of change" in the organizations
Project Management Laboratory
EIC0106 - ECTS
This course unit aims to develop students’ software project management skills and team work skills in software projects. Students will be capable of solving a vast diversity of problems, which may happen in these projects. This course unit will also stimulate students’ entrepreneurship.
Marketing
EIC0061 - ECTS
The course aims to develop competences in the Marketing Management area, integrating a sound theoretical component, through the presentation and discussion of Marketing concepts and methodologies, with an applied component, through the development of a marketing plan and case study discussion. By enrolling in this course, students should develop the following competences:
1. Understand the role of Marketing in organization management
2. Understand and apply the Marketing concepts to analyze the market environment and assess market opportunities.
3. Understand and apply Marketing fundamental concepts and tools to the development of Marketing strategies and programs in organizations.
4. Understand and apply Marketing concepts to manage the relationship with company’s customers.
5. Understand and apply the Marketing concepts and tools to support the development of new products and services in organizations.
Planning and Scheduling Methodologies
EIC0063 - ECTS
Enable students to use the most advanced scheduling and planning methodologies to solve complex scheduling and planning problems.
Expected competences:
- To know how to apply the conventional Planning and Scheduling methods to job shop and other processes and projects;
- To be able to deliberate about when and how to apply AI-based methods for Planning.
Multimedia and New Services
EIC0064 - ECTS
The objectives of this course are:
a) to present the concepts, services and their multimedia and hypermedia applications;
b) to present coding techniques and representation of multimedia information;
c) to introduce application development tools;
d) to develop applications.
At the end of the course the students will be able to:
- Identify the distinct technologies required for an multimedia application or service;
- To know the reality, the requirements and constraints of different technologies involved;
- Designing a multimedia application or service taking into account technological limitations;
- Develop an application or service using multimedia authoring software Adobe Flash.
Network and System Services
EIC0092 - ECTS
The aim of this course is to provide students with consolidated knowledge in the area of computer networks from a perspective of network designers and managers. In particular, students will learn how to identify the requirements of organizations and accordingly design the complete network infrastructure divided into sub-networks to satisfy specific requirements. They will be able to make the full assignment of IP addresses, identify the required network services, installed and configure them. At the end of the course students will be able to design and configure the network infrastructure and systems of an enterprise, equipped with all essential services such as DNS, email, Web, etc.
Critical Systems
EIC0073 - ECTS
This course unit aims to broaden students’ knowledge regarding Critical Systems.
This course unit will cover notions related to safety, which are fundamental during the development life-cycle of Critical Systems.
At the end of this course, it is expected that students will have consolidated their knowledge:
- The need for a systemic approach to safety;
- The main software-based fault tolerance techniques;
- The main verification and validation guidelines for the reliable operation in Critical Systems.
Geospatial Systems
Industrial Systems
EIC0075 - ECTS
The objective of this course is to present:
- The organizational model and its hierarchical organization. Control Systems and Industrial Supervision.
- Command and control architectures for industrial including requirements associated with the various levels.
- The industrial product, techniques and associated tools: design, rapid prototyping, CAD / CAE / CAM / CNC / DFM, etc..
- Supervisory and distributed control systems (SCADA)
- The main technologies used in manufacturing companies in the area of data acquisition and communication with the factory floor, including technologies related to Computer Networks and Industrial Field
At the end of this course, students must be able to
- Design, model and implement industrial control systems based on: State Machines, Petri Nets and SFC.
- Design and implement SCADA
- Understand the Technologies and Architectures for Networks and Industrial Control and Supervision Systems.
Database Technologies
EIC0076 - ECTS
The students should be able to design and manage large databases, namely to tune the physical schema, to optimize SQL queries, to recover systems and to define concurrency policies, as well as to profit from extensions to object manipulation and XML technology.
Distribution and Integration Technologies
EIC0077 - ECTS
The course main objectives are providing knowledge and practice acquisition of fundamental concepts in designing, architecture, choosing the the most appropriate technologies and implementing distributed business applications.
At the end of the semester, students presented with a complex business process description, should be capable of:
- developing an appropriate distributed system architecture
- choosing the most appropriate technologies, considering the presented scenario
- implementing and explore services and applications using the presented technologies
- integrating available services and applications, even with disparate technologies
Electronic Business Technologies
EIC0078 - ECTS
1. To understand the importance and opportunities of Electronic Business
2. To explain Electronic Business Models
3. To present Support Technologies of Electronic Business
At the end of this unit course, students should :
- understand and model a simple Electronic Business process
- use intelligent technologies that support simple Electronic Business processes, related to negotiation, e-contracting and computational trust.
Project Appraisal
EIC0044 - ECTS
This course unit aims to provide students with knowledge of basic methodologies for the analysis of the financial and economic feasibility of investment projects in certainty and uncertainty conditions.
After the completion of the course unit, students should be capable of:
- justifying a decision or real investments
- designing a business plan
Inf: the Business Plan will be based on Portuguese relevant legislation, so basic accounting concepts and basic financial mathematics are needed.
Data Warehouses
EIC0046 - ECTS
The students should be able to design, build and explore data warehouses.
Network and Systems Architecture and Management
EIC0095 - ECTS
Students should acquire competences in the planning and integrated management of network and system infra-structures. Learning results should provide students with competence in the procedures for managing a network, systems, and communication services infrastructure, in particular:
- Specify, acquire, and evaluate requirements for infrastructure planning and design
- Planning and designing the network and system infrastructure
- Perform a rigorous choice of support equipments and systems based on specified requirements
- Specify functional areas in management
- Select adequate management platforms and tools
Advanced Computer Architectures
EIC0049 - ECTS
This course introduces the main architecture of modern computers, explaining the relationship between architectural option, application domain and fabrication technology.
The analysis of options for physical and logical implementation of the various subsystems, together with the analysis of their impact on performance, will allow students to describe and critically evaluate current and future computers, as well as understand the implications of each type of architecture for the design and development computer applications.
After completing this course, students will:
- Identify and estimate the cost factors involved in the fabrication of processors;
- Evaluate the energy consumption of a processor;
- Identify the current technological limitations;
- Describe the fabrication technology trends;
- Use a set of benchmarks to assess performance;
- Quantitatively evaluate the main factors of CPU performance;
- Identify the types of dependencies between instructions of a program;
- Explain the main mechanisms, both static and dynamic, for extraction of parallelism from sequential programs;
- Identify the limitations of these approaches;
- Describe the basic techniques of dynamic scheduling of instructions;
- Recognize the importance of branch prediction;
- Quantitatively assess the performance impact of branches;
- Describe the salient features of multiple instruction issue;
- Describe the mechanisms to support the execution of instructions out of order;
- Use measurement tools based on hardware event counters ;
- Explain the organization of multi-processor shared memory processors (SMP);
- Specify and analyze protocols for access to shared memory (centralized and distributed);
- Use simulation tools to investigate the behavior of shared memory systems;
- Describe the available mechanisms for synchronization of processors;
- Explain the problem of shared memory consistency and the main solutions;
- Describe the memory hierarchy of a computer;
- Quantitatively evaluate the performance of the memory hierarchy;
- Identify and describe methods for optimizing cache memory use;
- Describe and evaluate the impact of memory circuit technology;
- Distinguish between different fields of application of computers;
- Explain the impact of the application domain on the architecture of the system in three cases: embedded systems (game consoles, mobile phones, cameras), vector processing of data (scientific computing), graphics generation (GPU).
Mobile Computing
EIC0050 - ECTS
The main ojectives include the acquisition of knowledge and practice of the main concepts of design, architecture and implementation of applications, mainly business, with particular access needs to data and computing in any place and at any time. Emphasis on the use of current and generic frameworks, taking into account the mobile devices’ specificity.
At the end of the semester, students presented with a complex application requirements description, should be capable of:
- choose a mobile platform, application architecture pattern, programming framework, and adequacy to the device characteristics and communication and storage needs;
- choose the most adequate technologies, taking into account the application scenario and audience;
- implement the local application and needed local and remote services, in the main available technologies;
- integrate applications and services, even if using different technologies.
Information Description, Storage and Retrieval
EIC0108 - ECTS
The "Information Description, Storage and Retrieval" unit assumes as its context the existence of large collections of heterogeneous information and the requirements for their organization, description, storage and retrieval.
Goals
1. Make the students feel the main issues in the organization and storage of large data collections.
2. Make the students familiar with the main concepts in textual information retrieval and their application in retrieval tools.
3. Explore the methods and tools for the description of web resources and for the use of such descriptions in applications which make use of data semantics.
On completion of this course, te student should be able to:
-Identify the uses of document markup languages in data repositories and in application support;
-Analyze an XML document and show its comformity to a model;
-Create models for XML documents;
-Interpret the results of document processing with XML-based technologies;
-Compare data organization in markup models and other models and explore data migration between models;
-Generate a markup model for data in an application domain, and choose an appropriate storage solution for them;
-Describe the models used in information retrieval, specifically in web retrieval;
-Recognize the various tasks considered in information retrieval;
-Apply information retrieval evaluation measures to the comparison of web retrieval tools;
-Relate web documents with the metadata that describes or relates them;
-Treat ontologies as providers of description tools;
-Explore the applications which manipulate semantic web information descriptions and create metadata sets for a chosen domain;
-Compare semantic web- based services with simpler approaches to resource description.
Dissertation
EIC0041 - ECTS
In accordance with the procedure laid down in specific standards of FEUP, characterisation of Dissertation is as follows:
1. individual Work, research and development leading to the development of a scientific dissertation about a desktop theme, or knowledge of the course towards integration and application to solving complex problems of engineering knowledge, skills and attitudes acquired along the course.
2. it may be a work of research or technological development and implementation, involving experimental media and/or simulation, which promotes the development of capacity for initiative, decision-making, innovation, creative thinking and critical, in the context of individual or group work.
3. should involve the analysis of new situations, the collection of relevant information, development and selection of design or approach methodologies and instruments proposed problem resolution, to its resolution, the Office of sin-thesis and drawing of conclusions, and the preparation of a relevant dissertation subject to public presentation and discussion of results.
4. Can be carried out in academic or academic and entrepreneurial environment. In this case the objectives, nature and form of monitoring of the work shall be subject to prior agreement between the student and the College's guiding and company, validated by the course Director, ensuring the satisfaction of the scientific and pedagogical objectives of the curriculum unit, and protect any confidentiality issues by the host institution/company.
Knowledge Extraction and Machine Learning
EIC0096 - ECTS
To provide the students with knowledge so that they can use analysis and extraction techniques of large data quantities’ patterns.
Human-Computer Interaction
EIC0057 - ECTS
Main aims:
The main aim of this course unit is to prepare students to analyse and project interactive components of systems, particularly the user interface. It should be adequately done, considering the short, the medium and the long term.
Aims:
1. To prepare students to analyse interactive systems concerning their quantitative and qualitative parameters.
2. To prepare students to use study, observation and questioning techniques based on the understanding of the conceptual model of system users
3. To prepare students to use a construction process of interactive products based on the design, user assessment, conception, prototyping, validation, construction and maintenance.
Agile Software Development Methodologies
EIC0062 - ECTS
At the end of the course, the students should:
-have acquired the minimal skills and acquisition of the fundamental knowledge to enable students to autonomously starting agile development processes, under several roles: process engineering, developer, manager.
- know the essentials about agile methods, their philosophy, values, needs and applicability, challenges and opportunities created in people, teams and software development organizations.
- acquired hands-on experience on practices of agile software development: iteration planning, unit testing, refactoring, pattern-based design, collective code ownershio, pair-programming, continuous integration.
- know about the most popular variants of agile processes: XP, Scrum, FDD.
- experienced on applying the knowledge and concepts through a real case study, developed along the course.
- learned to work in a small-team (~10 elements), integrating other participants in collective design and planning decisions, and to delegate, negotiate and review those decisions in group.
- experienced with development environments supporting and motivate agile software development.
Information Systems Strategic Planning
EIC0067 - ECTS
Aims:
This course unit aims to endow students with skills to plan information systems and technologies in an organisation according to a strategic perspective.
Learning Outcomes:
Strategy and information systems
- To identify the challenges placed by information systems and management solutions;
- To show how information systems may support different strategies;
- To state and assess strategic matters in the development of information systems;
- To show how information systems help companies using synergies, key competence and strategies based on a network in order to reach competitive advantages;
- To assess the challenges placed by strategic information systems associated to innovative management solutions;
- To describe a historical perspective of IS on organisations using Nolan’s model;
- To describe the critical factors of successes in IS and consequences of lack of IS/IT strategy;
- To describe the strategic procedures of IS/IT using Earl’s model;
- To describe and apply the model of strategic development cycle of IS;
- To describe and apply the model to the strategic development of IS;
Strategic analysis for IS
- To define business strategy, IS strategy, IT strategy, strategic alignment;
- To distinguish IS planning and IS strategic planning;
- To be able to assess the strategic impact of information systems on organisations;
- Main approaches of strategic planning and its application on Strategic Planning for Information Systems;
- Reasons of the gap between the theory and practice of Strategic Planning for Information Systems.
Strategies for information and knowledge management
- To explain the concepts of information management, knowledge management, collaboration, information and knowledge sharing;
- To identify the different types of information culture and describe its influence on the definition of information and knowledge strategies on organisations;
- To explain the close connection between collaboration and information management on organisations;
- To explain the emergence of collaborative networks of organisations as a business strategy supported by IS;
- To analyse an organisational situation and specify a collaboration and information management strategy.
Dissertation Planning
EIC0087 - ECTS
- To learn about the processes, methodologies, and best practices associated to scientific research, with a particular focus on informatics engineering;
- To develop a scientific criticism spirit;
- To acquire the capability to elaborate a plan for the MSc dissertation project, including the state-of-the-art, in a theme to be selected;
Virtual and Augmented Reality
EIC0070 - ECTS
Augmented reality is a technology which improves and augments the user’s vision of the real world with virtual images, using Computer Vision and Graphical Computing/ Virtual Reality techniques. The main aim of this course is to transmit to the students the basic knowledge of these techniques, allowing them to proceed more advanced studies in the emergent area of Augmented Reality. Furthermore, another aim is to provide the students with the capacity to do little assignments illustrating the methodologies studied.
At the end, the students must be able to:
- identify and characterize the components, structure and functions of a minimum system of augmented and/or virtual reality;
- understand the main algorithms used to implement each component;
- understand the interaction of several components;
- do the integration between real world and virtual object images.
Robotics
EIC0071 - ECTS
AIMS
To understand the basic concepts of Robotics and the context of Artificial Intelligence in Robotics.
To study methods of perception and sensorial interpretation (emphasizing computer vision), which allow to create precise world estates and mobile robots’ control methods.
To study the methods which allow mobile robots to navigate in familiar or unfamiliar environments using Planning and Navigation algorithms.
To study the fundamentals of cooperative robotics and robots' teams construction.
To analyze the main national and international robotic competitions, the more realistic robot simulators and the more advanced robotic platforms available in the market.
OUTCOMES
At the end of this UC, students should be able to:
- Define Robotic Autonomy
- Define Intelligent Robotic System (IRS)
- Explain relation of Artificial Intelligence (IA) and IRSs
- List Applications for Robotic Systems
- Know the current State of the Art in Robotics
- Know frequently used sensors and actuators
- Evaluate usage of vision sistems compared to other sensors
- Use methodologies from: Data Fusion, IA, data processing and vision processing in order to build perceptions of the world state
- Know and use methods for Localization, Planning and Navigation in robotics
- Know and use one or more robotic systems or simulators
- Know and use cooperation techniques for several types of collaborative robotics
Computer Systems Security
EIC0072 - ECTS
At the end of this course unit, the students should be able to:
- describe the security fundamentals of computer systems;
- specify a security policy for a typical computer system and select the adequate mechanisms for enforcing the policy and for verifying its compliance;
- analise a typical communication channel and identify its associated main protection levels or the ones that should be in use;
- study, program and operate some security devices and tecniques in real situations.
Intelligent Systems, Interaction and Multimedia Seminar
EIC0101 - ECTS
This course aims to make students acquainted with Intelligent Systems research work.
Students should show their knowledge on at least one of the presented themes, through writing an article on the State of the Art or a small project assignment.
The assignments (article and/or demonstration) should illustrate systems which are characterized by some “intelligent” component related to its adaptation, autonomy, classification or inference capabilities.
Main learning outcome of this course is to make students understand what can endow a computer system with a certain level of “intelligence”.
Decision Support Systems
EIC0074 - ECTS
The general philosophy, structure and components of a Decision Support System (DSS) will be studied, as well as methodologies and techniques that will alow the students to design and implement DSSs.
The students should be able to understand the complexity and the qualitative aspects of decision making processes, and to use problem structuring techniques and multicriteria approaches. Supported by spreadsheets, students should be able to develop data modelling and analysis, as well as scenario analysis.
They will also become familiar with Combinatorial Optimization models and applications, and generic heuristics techniques to solve problems with a practical interest, particularly in the context of Operations Management,
DSS examples will be presented and discusses, with an emphasys on user interface and Interactive Visual Simulation Systems.
Software Testing and Quality
EIC0103 - ECTS
1-BACKGROUND
Students should have knowlegde about software engineering and programming.
2-SPECIFIC AIMS
Be familiarized with the terminology used in software testing. Acquire knowledge about the main techniques that may be applied in software quality control. Acquiring sensitivity to issues relating to software quality processes.
3-PREVIOUS KNOWLEDGE
Software engineering; Computing Theory; Algorithm design and analysis
4-PERCENTUAL DISTRIBUTION
Scientific component: 50%
Technological component: 50%
5-LEARNING OUTCOMES
Know the terminology used in software testing. Be capable of selecting the testing technique to use in a specific context and for a specific testing level. Be capable to define good practices in order to increase the software quality produced.
Dissertation
EIC0041 - ECTS
In accordance with the procedure laid down in specific standards of FEUP, characterisation of Dissertation is as follows:
1. individual Work, research and development leading to the development of a scientific dissertation about a desktop theme, or knowledge of the course towards integration and application to solving complex problems of engineering knowledge, skills and attitudes acquired along the course.
2. it may be a work of research or technological development and implementation, involving experimental media and/or simulation, which promotes the development of capacity for initiative, decision-making, innovation, creative thinking and critical, in the context of individual or group work.
3. should involve the analysis of new situations, the collection of relevant information, development and selection of design or approach methodologies and instruments proposed problem resolution, to its resolution, the Office of sin-thesis and drawing of conclusions, and the preparation of a relevant dissertation subject to public presentation and discussion of results.
4. Can be carried out in academic or academic and entrepreneurial environment. In this case the objectives, nature and form of monitoring of the work shall be subject to prior agreement between the student and the College's guiding and company, validated by the course Director, ensuring the satisfaction of the scientific and pedagogical objectives of the curriculum unit, and protect any confidentiality issues by the host institution/company.
Dissertation Planning
EIC0087 - ECTS
- To learn about the processes, methodologies, and best practices associated to scientific research, with a particular focus on informatics engineering;
- To develop a scientific criticism spirit;
- To acquire the capability to elaborate a plan for the MSc dissertation project, including the state-of-the-art, in a theme to be selected;