I love teaching. It is deeply rewarding both personally and intellectually, and a necessary extension of personal study and research.

I am interested in organizing and teaching innovative courses as head instructor, as well as in collaborating with others to teach such courses at various levels.

In particular, I am very keen to make novel and important developments accessible and useful to students and professionals alike, especially in my areas of expertise; as well to mentor people interested in these areas.

This page lists some courses that I have been fortunate to teach and plan to teach in the near future, as well as related activities.


I am also planning to teach a series of short courses tailored to introduce both students (advanced undergrads and up) and professionals to the practical use of formal methods in Spain, where these topics are still greatly understudied vis-à-vis other countries.

  • Introduction to verified programming. A slight abridgment of the verification part of our introductory course to verified programming. Originally scheduled for 9-10 and 16-17 February 2021, currently awaiting postponement.

  • Introduction to functional programming. Another course in preparation.


  • Software foundations: introduction to verified programming. I proposed, directed and taught, together with Ricardo Rodríguez, a 50-hour summer school on verified and secure programming, as part of the 93th edition of the summer university of the University of Zaragoza. I was in charge of the verification part, based on Software foundations and which comprised three fourths of the lectures, as well as tailored projects for students taking the class for credit. Due to the coronavirus pandemic, the course took place remotely. The class was extremely well received, obtaining the top 2nd evaluation among the 75 courses in the summer university.

  • Software engineering (CS3053). I was a lecturer at the American University of Paris, teaching a full course based on the excellent Engineering Software as a Service. The second half of this class, including the group projects in which students built web applications applying modern technologies methodologies, was carried out remotely in a geographically distributed clasroom and teams of students.



During this and the previous two school years I taught laboratory classes in the computer science track of the engineering cycle at École polytechnique, typically in weekly two-hour sessions for two separate groups.




Between 2012 and 2014 I was in charge of various in-house training courses offered to junior engineers and testers covering a variety of topics, including software stacks, development processes, problem domains, systems architecture and business functions.