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 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. (These are currently on hold due to the ongoing coronavirus pandemic).

  • Introduction to verified programming. An abridgment of the verification and security course with a focus on the former.

  • Advanced functional programming. Another course in preparation.

In addition to these, we will propose a new and revised edition of the verified and secure programming course.


  • 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.