This course deals with the formal modeling of concurrent systems such as parallel or multi-threaded programs, distributed hardware and software systems, mobile systems, etc.

This course presents the major methods for defining the meaning of languages and programs (operational semantics, denotational semantics, axiomatic semantics) and discusses their relationship.

In this course we discuss (as a continuation of the course "Programming 1") object-oriented programming in C++.

This seminar discusses techniques and tools for formal methods and/or automated reasoning such as formal specification languages, program verification systems, model checkers, interactive proof assistants, automated theorem provers, satisfiability solvers, decision procedures, etc.