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:

  • Data and Information Management

    DATABASES: Basic concepts on databases. Data models and languages. Database design and conceptual modeling. Operational aspects in database systems: query processing and optimization, transaction processing, concurrence control, database recovery, security and integrity.

    DIGITAL LIBRARIES: Definitions of Digital Libraries; Theoretical Models, Basic and Complex Components (e.g, Collections, Catalogs, Services), Technological Aspects (e.g, Interoperability), Socio-Economic Aspects (e.g, Preservability, Sustainability, Copyright Laws), Digital Library Systems, Research Challenges.

    WEB DATA MANAGEMENT: Web data characteristics, Semi-structured data modeling, Query languages, Web applications and environments.

    INFORMATION RETRIEVAL: WEB SEARCH ENGINES: Information retrieval systems; Techniques, processes and metrics for information retrieval; Search engines.

    DATA MINING: Process of knowledge discovery in databases. Basic concepts of data collection and engineering. Data Mining Techniques. Aspects of implementation. Fields of application.

    TOPICS ON DATABASES: Variable course syllabus depending on the emphasis offered on databases.

  • Artificial Intelligence

    ARTIFICIAL INTELLIGENCE: Troubleshooting. Introduction to first order logic. Programming in logic. Representation of knowledge. Advanced topics in artificial intelligence.

    TOPICS ON ARTIFICIAL INTELLIGENCE: Variable course syllabus depending on the emphasis offered on artificial intelligence

  • Optimization

    COMBINATORIAL OPTIMIZATION: Data Structures. Complexity Theory. Assignment Problem. Matching Problem. Minimum Spanning Tree and matroids. Shortest Path Problem. Dynamic Programming. NP-Hard Problems. Branch-and-Bound. Approximation Algorithms.

    NETWORK OPTIMIZATION: Classical problems in network optimization: minimum spanning tree, shortest path, transportation problems, assignment problems, minimum cost flow and maximum flow problem. Primal, dual and primal-dual algorithms. Dynamic programming and heuristics. Large-scale optimization: telecommunication, computers and transportation networks. Parallel computing and complexity theory.

    TOPICS ON OPTIMIZATION: Variable course syllabus depending on the emphasis offered on Optimization.

  • Software engineering and Programming languages

    COMPILERS: The Compilation Phases. Regular and Context-Free Languages. Finite and Pushdown Automata. Syntax Analysis. Intermediate Program Representations. Symbol Tables. Syntax-Directed Translation. Attribute Grammars. Error Handling. Frameworks for the Implementation of.

    SOFTWARE ENGINEERING: Principles and techniques. Software quality; Software specification and design; Software verification; Software process.

    USABILITY ENGINEERING: Motivation and basic concepts. usability maturity assessment models. Design principles. Process aimed at usability. UML notions. using context analysis. Specification of usability requirements. Standardization interfaces. Design Interaction. Prototyping. Usability guidelines. Elements of interaction. Usability evaluation. Usability in Web interface.

    TOPICS ON COMPILERS: Variable course syllabus depending on the emphasis offered on compilers.

    TOPICS ON SOFTWARE ENGINEERING: Variable course syllabus depending on the emphasis offered on Software Engineering.

    TOPICS ON PROGRAMMING LANGUAGES: Variable course syllabus depending on the emphasis offered on Programming Languages.

  • Robotics, Computer vision and Computer graphics

    MOBILE ROBOTICS: Basic Concepts of Mobile Robotics, Architectures, Programming Paradigms, Locomotion, Path Planning, Location and Mapping, Multi Robot Cooperation.

    COMPUTATIONAL VISION: Image formation. Binary images and their geometric, topological and morphological properties. Regions and segmentation. Borders and their detection. Brightness and color. Movement and optical flow. Classification of standards. Shape from X. 2D and 3D rendering. Relational structures; Inference. Active vision.

    SOUND AND VIDEO PROCESSING: Analog and digital sound concepts, digital sound standards, streaming sound, analog and digital video concepts, digital video standards, streaming video. Methods for image retrieval based on visual content (color, texture and shape).

    DIGITAL IMAGE PROCESSING: Basic concepts. Scanning and representation of images. Elements of an image processing system. Visual perception. Image enhancement. Gray scale modification techniques. Pseudo-coloration. Image smoothing. Sharpening edges. Spatial filtering. Concepts of segmentation, coding and classification of images.

    TOPICS ON ROBOTICS: Variable course syllabus depending on the emphasis offered.

    TOPICS ON COMPUTER VISION: Variable course syllabus depending on the emphasis offered.

    TOPICS ON ACTIVE PERCEPTION: Variable course syllabus depending on the emphasis offered on Robotics.

    TOPICS ON IMAGE PROCESSING: Variable course syllabus depending on the emphasis offered on Image Processing.

  • 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