Courses

The list of courses seeks to cover all the basic aspects of Computer Science, in addition to meeting the demands of the different areas of research. The core courses comprise Design and Analysis of Algorithms, Computer Architecture (also associated to the Computer Systems resesarch line) , Language Theory (also in the Theory research line) and Special Topics on Computer Science (covering variable topics of general interest). The Design and Analysis of Algorithms course is mandatory for Master’s students. Credits corresponding to Teaching Assistantship activities are also offered, being one semester mandatory to Master’s students and two to doctorate’s students.

No distinction is made between courses for master and doctorate degrees. A large number of advanced courses, covering specific topics on different subjects, reflect the current research activities and interests of our professors.

Most courses are worth 4 credits each; however, the program also offers subjects called “Special Topics”, worth 1, 2, 3, or 4 credits. Students can also develop special assignments or studies up to a maximum of 1/6 of the minimum number of credits required to obtain the desired degree.

To facilitate planning, courses are grouped into a common core and seven knowledge areas, as shown below:

  • Computer Systems

    DISTRIBUTED ALGORITHMS: Computational models; fault models; logical time; synchronous and asynchronous algorithms; propagation of information; leader election; the byzantine generals problem; self-stabilization; synchronization; detection of stable and unstable properties; verification of algorithms; distributed algorithms for the Internet; mesh, grid, mobile ad hoc networks and wireless sensor networks.

    ANALYSIS AND PERFORMANCE MODELING OF COMPUTING SYSTEMS: Capacity planning. Introduction to performance modeling. Review of probability theory and transforms. Simulation. Markov models. Single queue models. Network of queues: MVA algorithm. Operational analysis. Case studies.

    COMPUTER ARCHITECTURE: Review of computer organization. Design of memory systems. Pipeline processing techniques. Integer and floating point arithmetics. Interconnection networks. Matrix and vectorial processors. Multiprocessors. Non-conventional processors. (Also in the Computer Systems area)

    UBIQUITOUS COMPUTING: Computational paradigms; associated technologies; concepts of mobile, ubiquitous and autonomic computing; location of base stations, channel allocation; MAC protocols; mobile IP; transport protocols; context aware applications (physical and logical context); security; emdedded systems; adaptation-aware systems design; networks for ubiquitous computing (wireless networks, mesh networks, mobile ad hoc networks, wireless sensor networks).

    ENGINEERING NETWORK APPLICATIONS: Basic distributed systems concepts applied to the Internet. Distributed Systems concurrency models and architectures: client-server, peer-to-peer, etc. Servers and Services implementation aspects. Interaction between the application domain and the network architecture: overlay networks, content distribution networks.

    FUNDAMENTS OF DISTRIBUTED AND PARALLEL SYSTEMS: Concurrency and communication, synchronization and consensus, in parallel and distributed systems. Persistency and distributed file systems. Resource sharing, performance analysis and evaluation in parallel and distributed systems. Design and implementation of Internet applications, such as caches, content distributed networks, peer-to-peer networks, multimedia and electronic-commerce systems.

    COMPUTER NETWORKS: Concepts of computer networks and distributed systems. Architecture of computer networks. Protocols and services. ISO OSI reference model. Local networks. Physical, Link, Network and Transport layers.

    OPERATING SYSTEMS: Process synchronization and management. Input/output techniques. File Systems. Buffering techniques. Process scheduling. Memory management, virtual memory. Resource allocation and deadlocks. Performance evaluation. Distributed System concepts.

    TOPICS ON COMPUTER NETWORKS: Variable course syllabus depending on emphasis offered on computer networks.

    TOPICS ON COMPUTER SYSTEMS: Variable course syllabus depending on emphasis offered on computer systems.

  • Theory

    FORMAL LANGUAGE THEORY: Classification and properties of formal grammars. Decidable problems in each grammar type and the respective language. Languages accepted by linear-bounded automata and Turing Machines. Notions of language parsing. Deterministic parsing. LL(k) and LR(k) grammars.

    GRAPH THEORY: Concept of graphs and applications. Problems in graphs: paths, planarity, coloring, partitioning, matching, flow. Algorithms

    MODEL CHECKING: Automatic model checking.

  • Common Core

    DESIGN AND ANALYSIS OF ALGORITHMS: Algorithm time complexity, Advanced design and analysis paradigms. Graph algorithms. NP-Complete and NP-Hard problems. Approximate algorithms.

    COMPUTER ARCHITECTURE: Review of computer organization. Design of memory systems. Pipeline processing techniques. Integer and floating point arithmetics. Interconnection networks. Matrix and vectorial processors. Multiprocessors. Non-conventional processors. (Also in the Computer Systems area)

    FORMAL LANGUAGE THEORY: Classification and properties of formal grammars. Decidable problems in each grammar type and the respective language. Languages accepted by linear-bounded automata and Turing Machines. Notions of language parsing. Deterministic parsing. LL(k) and LR(k) grammars. (Also in the Theory area)

    SPECIAL TOPICS ON COMPUTER SCIENCE: Variable course syllabus depending on emphasis offered.

    TEACHING ASSITANTSHIP I

    TEACHING ASSISTANTSHIP II