Teaching at RUG 

[Since 2014]


Forthcoming Courses:

Past Courses:



Minicourse Lecturer 

[July 2012]


I designed and taught a mini-course (5 lectures, 3h each) on fundamentals of concurrency theory and process calculi at the ECI Winter School at the Universidad de Buenos Aires, Argentina

This course was offered to advanced undergraduate and graduate students from all over Argentina. 

It presented the foundations of process calculi by introducing a combination of classic and recent results:

  • CCS Syntax and semantics. 
    • Reduction and labeled transition system. Examples and applications. Strong and weak bisimilarity.
  • The π-calculus 
    • Syntax and semantics. Bisimilarities in a mobile context. Interesting sub-calculi and extensions.
  • The expressiveness of process calculi 
    • Basic definitions and expressiveness criteria. Types of results and associated techniques. Separation results in CCS and the π-calculus. The higher-order π-calculus and its encoding into (first-order) π- calculus.
  • Higher-order process calculi in depth 
    • Syntax and semantics; contrast with CCS and π. Behavioral equivalence in the higher-order setting. Basic higher-order com- munication: the HOcore calculus.
  • The expressiveness of higher-order process calculi 
    • Encoding infinite behavior. Functions as processes. The expressiveness of HOcore and its variants. Adaptable processes.

Teaching Assistant
[Aug - Nov 2001, Aug - Nov 2002, Aug - Nov 2005]


As a teaching assistant at the University Javeriana (Colombia), I was in charge of lab sessions of about two hours each. The courses in which I was teaching assistant are:

  • Fundamentals of Programming (“Introducción a la Programación”). The language used in this course was Python. This mandatory course for first-year Engineer- ing students focused on problem solving skills with the aid of programming languages.
  • Fundamentals of Informatics (“Introducción a la Informática”). This course was based on an in-house visual language used to program Lego Mindstorm robots. This is the introductory course on programming for students of Computer Science Engineering.
  • Data Structures in Java (“Estructuras de Datos II”). The language used in this course was Java. The goal was to introduce basic concepts on object-oriented programming through the implementation of basic data structures such as lists, trees, and hash tables. This course was taught to second-year students of Computer Science Engineering.