MC971 Introduction to Concurrent Programming

Since 2016



Principles of concurrent programming. Concurrent Process. Mutual Exclusion. Shared Memory. Sincronization primitives. Consensus. Concurrent data structures.



- Foundations of concurrent algorithms, Multicore Processors, Moore's Law and Amdahl's Law;

- Mutual Exclusion: time, critical regions, classic algorithms for mutual exclusion, concurrent objects, consistency, sequential and linear. The Java memory model;

- Foundations of shared memory: registers and photographies;

MC921 - Compilers Construction and Design

Since 2016


Prerequisite: MC504



Syntactic analysis methods. Execution systems. Object code generation and optimization. Error recovery. Implementation of a compiler.




- Techniques, methods and algorithms used in the construction of modern compilers:

- Lexical, syntactic and semantic analysis;

- Type verification;

- Activation Records;

- Translation to intermediate code;

- Code generation;

- Data flow analysis;

MC750: Human-Computer Interface Construction

Prerequisite:  MC504 / EA876 / MC436


Introduction to Human-computer Interfaces. Human aspects. Technological aspects. Design methods and techniques. Support tools . Evaluation.


1.     Introduction

a.     What is HCI?

b.    HCI components

2.     Human aspects

a.     Perception and representation

                                      i.        Visual perception

MC722: Computer Architecture

Prerequisite:  MC404


An introduction to architecture and organization of computers. Technologies and historical perspective. Performance measures. Instruction sets. Memory. Arithmetic logic units. Basic design of a processor. Pipeline. Memory hierarchy: cache and virtual memory. Input/Output devices.


1.     An introduction to architecture and organization of computers

2.     Performance measures

3.     Instruction sets

4.     Memory

MC658 - Design and Analysis of Algorithms III

Since 2016



 1. Classes of Problems

 - Complexity hierarchy. Classes P, NP, NP-hard and NP-complete

 - Concept of completeness and  Cook’s Theorem

 - Fundamental problems and reductions in NP-completeness

 - Other classes of problems: co-NP, PSPACE, undecidable problems (Halting Problem) 

 2. Exact algorithms

 - Pseudo-polynomial algorithm for the Knapsack Problem

 - Backtracking Algorithms. Suggested examples:

- Graph coloring

- Subset sum

MC602: Logic Circuits and Computer Organization

Since 2010.

Prerequisite:  None.


Introduction to basic concepts on logic projects. Logic gates. Simulation of digital circuits. Minimization of logic functions. Karnaugh maps. Combinatorial Circuits. Memory elements: latch, flip-flops, counters. Synthesis of synchronous and asynchronous sequential circuits. Memory organization and hierarchies. Basic processor.


1.     Introduction to basic concepts on logic project

2.     Logic gates

MC558 - Design and Analysis of Algorithms II


    1. Graphs

     - Definition  and representation of graphs and digraphs

     - Isomorphism

     - Neighborhood, cuts and degree

     - Paths and cycles

     - Subgraphs

     - Connected graphs and connected components

     - Independent sets, cliques and covers

     - Vertex coloring

     - Matching

     - Edge coloring

   2. Graphs algorithms

   - representation by lists of adjacency and by matrix adjacency

   - depth-first search

MC504: Operating Systems

Since 2010.

Prerequisite:  MC404 / EA869


Process concept: concurrency, critical regions, scheduling. Concepts on addressing space and virtual memory management, paging and segmentation. File systems: hierarchy, protection, organization and security. Input/Output management. Case studies.


1.     Definitions of processes and threads

2.     Process communication and synchronization

a.     Critical region

b.    Semaphores

c.     Monitors

MC458 - Design and Analysis of Algorithms I


    1. Review of concepts

       - Computational Models

       - Analysis of an algorithm

       - Cost analysis (time, space,  etc)

       - Lower bound of a problem

       - Examples: search in a sorted array, input/output

    2. Mathematical Tools for Analysis of Algorithms

       - Function Growing and Asymptotic Notation

       - Recurrence relations: asymptotic and exact solutions


    3. Design of algorithms by induction

MC437: Information Systems Project

Since 2010.

Prerequisite: MC426 MC536 / MC426 MC750


Analysis and design of information systems using database, human-computer interface and software engineering techniques.

Recommended Literature:

      I.        Elmasri/Navathe, Sistemas de Bancos de Dados, Addison-Wesley, 4th edition in portuguese, 2005

     II.        Ramakrishnan and Gehrke, Database Management Systems, McGraw-Hill, 3rd edition, 2002