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

MC426: Software Engineering

Prerequisite:  MC302


Software engineering paradigms. Data gathering/elicitation. Techniques and tools for user and system requirements specification. Analysis methods and information systems project. Information systems implementation.


1.     Introduction

a.     Basic concepts

b.    Software engineering paradigms

c.     The importance of user requirements specification

d.    The software project's role in developing systems

MC358: Mathematical Foundations of Computer Science

Since 2016.

Prerequisite:  None.


Basic concepts on discrete mathematics and logic for computing. Proof techniques, mathematical induction. Relations and graph theory concepts. Modeling problems using graphs.


1. Sets

2. Mathematical speech: mathematical reading and writing

3. Elements of logic:

        - proposition, logical connectives and quantifiers.

4. Proof strategy

5. Mathematical induction

6. Relations