Teaching: full list by academic year

Overview: courses × academic years

2026/27

  • Computer Systems and Networks 1st semester · PhD
    Lecturing a module on Concurrency.
  • Concurrent Systems 1st semester · MSc
    Concurrent Systems covers the principles and practice of shared-memory multiprocessor programming, based on The Art of Multiprocessor Programming. The theory runs from mutual exclusion and the correctness and progress of concurrent objects (linearizability, lock- and wait-freedom), through consensus and the relative power of synchronization primitives, to practical techniques: spin locks and contention, fine-grained and lock-free data structures, data races and deadlocks, and transactional memory. In a semester-long group project, students design, implement, test and evaluate a concurrent system, from lock-free data structures and synchronization primitives to memory reclamation and analysis tools. They develop it in checkpointed phases, review each other’s work, present it publicly, and defend it individually. The course aims to make students able to reason rigorously about concurrent algorithms and to build, measure and justify efficient, correct concurrent software.
  • Computer Architecture 2nd semester · BSc
    Computer Architecture is a first-year course on how computers work, from the representation of information to the execution of programs by the hardware. It covers digital representation of data (integers and their operations, floating point, text and Unicode), C programming, the RISC-V instruction set and assembly language (including procedure calls and the call stack), and the translation from C to assembly and machine code. It then turns to processor organization (the datapath, pipelining and its hazards), the memory hierarchy (caches and virtual memory), and input/output. In the practical classes, students write weekly exercises and programming projects in C and RISC-V assembly. Assessment combines regular Moodle quizzes, the projects and tests about them, and written theory tests. The course aims to give students a solid understanding of the hardware/software interface and of how architecture affects program behaviour and performance.

2025/26

  • Computer Systems and Networks 1st semester · PhD
    Lecturing a module on Concurrency.
  • Concurrent Systems 1st semester · MSc
    Concurrent Systems covers the principles and practice of shared-memory multiprocessor programming, based on The Art of Multiprocessor Programming. The theory runs from mutual exclusion and the correctness and progress of concurrent objects (linearizability, lock- and wait-freedom), through consensus and the relative power of synchronization primitives, to practical techniques: spin locks and contention, fine-grained and lock-free data structures, data races and deadlocks, and transactional memory. In the practical classes, students solve exercises that put these concepts into practice and develop a project in groups of two: implementing and evaluating a concurrent algorithm or system. The course aims to make students able to reason rigorously about concurrent algorithms and to build correct, efficient concurrent software.
  • Computer Architecture 2nd semester · BSc
    Computer Architecture is a first-year course on how computers work, from the representation of information to the execution of programs by the hardware. It covers digital representation of data (integers and their operations, floating point, text and Unicode), C programming, the RISC-V instruction set and assembly language (including procedure calls and the call stack), and the translation from C to assembly and machine code. It then turns to processor organization (the datapath, pipelining and its hazards), the memory hierarchy (caches and virtual memory), and input/output. In the practical classes, students write weekly exercises and programming projects in C and RISC-V assembly. Assessment combines regular Moodle quizzes, the projects and tests about them, and written theory tests. The course aims to give students a solid understanding of the hardware/software interface and of how architecture affects program behaviour and performance.

2024/25

  • Computer Systems and Networks 1st semester · PhD
  • Concurrent Systems 2nd semester · MSc
    Concurrent Systems covers the principles and practice of shared-memory multiprocessor programming, based on The Art of Multiprocessor Programming. The theory runs from mutual exclusion and the correctness and progress of concurrent objects (linearizability, lock- and wait-freedom), through consensus and the relative power of synchronization primitives, to practical techniques: spin locks and contention, fine-grained and lock-free data structures, data races and deadlocks, and transactional memory. In the practical classes, students solve exercises that put these concepts into practice and develop a project in groups of two: implementing and evaluating a concurrent algorithm or system. The course aims to make students able to reason rigorously about concurrent algorithms and to build correct, efficient concurrent software.
  • Curricular Development Activity 1st semester · BSc

2023/24

  • Computer Systems and Networks 1st semester · PhD
  • High Performance Computing 1st semester · MSc
  • Informatics for Sciences and Engineering E 2nd semester · BSc
  • Introduction to Programming for Science and Engineering 1st semester · BSc

2021/22

  • Computer Systems and Networks 1st semester · PhD
  • Concurrency and Parallelism 2nd semester · MSc
  • Big Data Processing Systems 1st semester · MSc
  • Foundations of Operating Systems 1st semester · BSc

2020/21

  • Computer Systems and Networks 1st semester · PhD
  • Concurrency and Parallelism 2nd semester · MSc
  • Big Data Processing Systems 1st semester · MSc
  • Computer Architecture 1st semester · BSc

2019/20

  • Computer Systems and Networks 1st semester · PhD
  • Scientific Text Processing with LaTeX · Doctoral School · PhD
    Co-lectured with José Alferes and João Leitão.
  • Concurrency and Parallelism 2nd semester · MSc
  • Big Data Processing Systems 1st semester · MSc
  • Computer Architecture 2nd semester · BSc

2018/19

  • Computer Systems and Networks 1st semester · PhD
  • Scientific Text Processing with LaTeX · Doctoral School · PhD
    Co-lectured with José Alferes and João Leitão.
  • Concurrency and Parallelism 1st semester · MSc
  • Computer Architecture 2nd semester · BSc

2017/18

  • Transactional Systems 1st semester · PhD
  • Scientific Text Processing with LaTeX · Doctoral School · PhD
    Co-lectured with José Alferes and João Leitão.
  • Concurrency and Parallelism 1st semester · MSc
  • Computer Architecture 2nd semester · BSc

2016/17

  • Transactional Systems 1st semester · PhD
  • Scientific Text Processing with LaTeX · Doctoral School · PhD
    Co-lectured with José Alferes and João Leitão.
  • Scientific Text Processing with LaTeX · Doctoral School · PhD
    Co-lectured with José Alferes and João Leitão.
  • Concurrency and Parallelism 1st semester · MSc
  • Computer Architecture 2nd semester · BSc

2015/16

  • Transactional Systems 1st semester · PhD
  • Scientific Text Processing with LaTeX · Doctoral School · PhD
    Co-lectured with José Alferes and João Leitão.
  • Scientific Text Processing with LaTeX · Doctoral School · PhD
    Co-lectured with José Alferes and João Leitão.
  • Concurrency and Parallelism 1st semester · MSc

2014/15

  • Transactional Systems 1st semester · PhD
  • Scientific Text Processing with LaTeX · Doctoral School · PhD
    Co-lectured with José Alferes and João Leitão.
  • Scientific Text Processing with LaTeX · Doctoral School · PhD
    Co-lectured with José Alferes and João Leitão.
  • Concurrency and Parallelism 1st semester · MSc
  • Computer Architecture 2nd semester · BSc

2013/14

  • Transactional Systems 1st semester · PhD
  • Concurrency and Parallelism 1st semester · MSc
  • Computer Architecture 2nd semester · BSc

2012/13

  • Operating Systems 2nd semester · MSc
  • Integrative Project 2nd semester · BSc
  • Cross-cutting Skills for Science and Technology 1st semester · BSc
  • Introduction to Computer Systems and Networks 1st semester · BSc

2011/12

  • Transactional Systems 1st semester · PhD

2010/11

  • Transactional Systems 1st semester · PhD
  • Integrative Project 2nd semester · BSc

2009/10

  • Operating Systems 1st semester · MSc
  • Computer Architecture 2nd semester · BSc

2008/09

  • Introduction to Computer Systems and Networks 1st semester · BSc

2007/08

  • Advanced Topics in Parallel and Distributed Computing 1st semester · MSc
  • Introduction to Computer Systems and Networks 1st semester · BSc

2006/07

  • Advanced Topics in Parallel and Distributed Computing 2nd semester · MSc
  • Operating Systems 2nd semester · MSc
  • Introduction to Computer Systems and Networks 1st semester · BSc

2005/06

  • Advanced Topics in Parallel and Distributed Computing 2nd semester · MSc
  • Operating Systems 2nd semester · Lic
  • Parallel and Distributed Computing Systems 1st semester · Lic

2004/05

  • Advanced Topics in Parallel and Distributed Computing 2nd semester · MSc
  • Operating Systems 2nd semester · Lic
  • Parallel and Distributed Computing Systems 1st semester · Lic

2003/04

  • Operating Systems 2nd semester · Lic
  • Parallel and Distributed Computing Systems 1st semester · Lic

2002/03

  • Computer Systems and Architecture III 1st semester · Lic

2001/02

  • Operating Systems 2nd semester · Lic
  • Computer Systems and Architecture III 1st semester · Lic

2000/01

  • Operating Systems 2nd semester · Lic

1999/00

  • Operating Systems 2nd semester · Lic
  • Computer Systems and Architecture III 1st semester · Lic

1995/96

  • Operating Systems 2nd semester · Lic
  • Computer Systems and Architecture III 1st semester · Lic

1994/95

  • Operating Systems 2nd semester · Lic
  • Advanced Operating Systems 1st semester · Lic
  • Computer Systems and Architecture II 1st semester · Lic

1993/94

  • Operating Systems 2nd semester · Lic
  • Advanced Operating Systems 1st semester · Lic
  • Computer Systems and Architecture II 1st semester · Lic

1992/93

  • Operating Systems 2nd semester · Lic
  • Advanced Operating Systems 1st semester · Lic
  • Computer Systems and Architecture II 1st semester · Lic

1991/92

  • Operating Systems 2nd semester · Lic
  • Advanced Operating Systems 1st semester · Lic