I taught in public universities a wide range of subjects with varied syllabi, covering the most diverse thematic areas of Mathematics and Computer Science.
I also received quite often the mention of excellency in teaching along four decades.
Most of the following courses were coordinated by me:
Algebraic Elements of Programming, BSc (1991/93).
Complexity, BSc and PhD (1998/99 and 2010/11).
Computability and Complexity, BSc, MSc, and PhD (2001/02, 2003/07 and 2009/21).
Computability and Complexity of Learning, MSc and PhD (2013/15 and 2016/20).
Concurrent Processes, BSc (2001/02).
Data Structures and Algorithms, BSc (1988/90).
Differential Geometry, BSc (1984/85).
Discrete Mathematics, BSc (2013/20).
Formal Specifications, BSc (1991/92).
Functional Programming, BSc and MSc (1994/95).
History of Mathematics, BSc (1985/86).
Imperative Programming, BSc (1987/90, 1992/93 and 1994/98).
Introduction to Physics and Chemistry, BSc (1984/87).
Languages and Paradigms of Programming, BSc (1993/94).
Logical and Algebraic Elements of Programming, BSc (1989/90).
Logical Foundations of Programming, BSc (1990/91).
Mathematical-Physics, BSc (1983/85).
New Paradigms of Computation, BSc, MSc and PhD (2001/02, 2003/06 and 2009/11).
Neurocomputation, MSc (1994/99).
Neurodynamics, MSc (1994/96).
Programming in Logic and Functional Programming, BSc (1990/91).
Seismology, BSc (1985/87).
Syntax and Semantics of Languages, BSc (1999/01 and 2000/01).
Theory of Computation, BSc (1989/90, 1994/98 and 1999/00 and 2009/12).
Intensive Course on Neuronal Computers, COCITE, June / July 1996.
Intensive Course on Neuronal Computers, Faculty of Sciences, University of Lisbon, from 13th to 17th May 1996.
Object-oriented Specification with OBLOG, University of Lund, Sweden, June 1992.
OBLOG: Development of Systems with Objects, INESC, carried out in October 1991.
OBLOG: Development of Systems with Objects, INESC, carried out in January 1990.
OBLOG: Development of Systems with Objects, INESC, carried out in July 1989.