Over the years I lectured 23 different courses, 12 BSc, 8 MSc and 3 PhD courses.
Served on a total of 114 course editions (between 1992 and 2023), of which I coordinated 87 course editions.

  • Programming Fundamentals (1st year, LEFT Técnico Lisboa) [ Lecture Notes and Supporting Code]
  • Introductory Programming (1st year, LEI FCT NOVA, course co-creator)
  • Introduction to Computers and Programming (1st year, all FCT NOVA Engineering Programs)
  • Data Structures and Algorithms (2th year, LEI FCT NOVA)
  • Algorithms and Data Structures I (2nd year, LEI FCT NOVA)
  • Theory of Computation (2nd year, LEI FCT NOVA, course creator)
  • Programming I (1st year, LEI FCT NOVA)
  • Programming Languages (2nd year, LEI FCT NOVA)
  • Compilation Techniques (5th year, LEI elective FCT NOVA)
  • Formal Languages and Automata (4th year, LEI FCT NOVA)
  • Compilers (4th year, LEI FCT NOVA)
  • Programming Languages II (4th year, LEI FCT NOVA)

Master Courses

  • Interpretation and Compilation of Languages (4th year, MEI FCT NOVA, course creator)
  • Foundations of Component Technology (Pre-Bologna MEI FCT NOVA, course creator)
  • Software Construction and Verification (4th year, MEI FCT NOVA, course creator)
  • Verification Logics ( 4th year, MEI FCT NOVA)
  • Advanced Topics in Programming Languages (Pre-Bologna MEI FCT NOVA)
  • Software Security (MSc elective, MEI elective FCT NOVA, course creator)
  • Languages and Models for Concurrency and Security (Pre-Bologna MEI FCT NOVA, course creator)
  • Data-Centric Web App Construction (MBA elective NOVA SBE, course creator)
  • Programming Languages (MSc elective, MEIC Técnico Lisboa)

PhD Courses

  • Scientific and Technical Communication (PhD INF FCT NOVA)
  • Foundations of Programming Languages (PhD INF FCT NOVA)
  • Advanced Topics in Software Systems (PhD INF FCT NOVA)