Prof. Mireille Ducassé – Teaching

Constraint Programming (M1)

[Responsible of the module]

Many difficult problems of everyday life are known as “constraint problems”, for example timetable making or resource allocation. These problems are highly combinatorial. To automate their resolution one should use appropriate tools. Indeed, programming with traditional languages requires the programmer to manage an important complexity. Programming is difficult, the response time and the needed computational resources quickly become unbearable.

Constraint programming uses constraint solvers. The solvers support a large part of the complexity of the problems. However, their use is difficult, it requires a good knowledge base and specific expertise. This module lays the first foundations for constraint programming in the context of logic programming.


  • Introduction to Constraints
  • From Prolog to Constraints
  • Finite Constraint Domains
  • Programming with Finite Domain Constraints
  • Examples of Applications


  • Programming with constraints. An introduction, Kim Marriott and Peter J. Stuckey, MIT Press, 1998. Programmation
  • Constraint logic programming using ECLiPSe, Krysztof R. Apt and Mark G. Wallace, Cambridge University Press, 2007

Formal verification (M1)

[Responsible of the module]

It is difficult to picture software engineering without the use of formal methods. Software applications are becoming increasingly involved in activities with high levels of responsibility. With large-scale responsibilities including the global economy and human lives at stake, software applications must be flawless.
Formal methods require theoretical bases, which are hard to acquire through work-experience alone, therefore, their introduction is considered a fundamental feature of the computer science curriculum.
This module focuses on the B method developed by J.R. Abrial, which has numerous advantages. It is close to object-oriented programming. The theory behind it, although generous, is rather simple. It is based essentially on first-order logic and set theory. In critical software development, the B method has the advantage of being both state-of-the-art and already proven in practice, as seen at RATP, the major transport operator for the Paris area.


  • Proof mechanisms: Review of clause logic. Predicate logic. Induction.
  • Specification language: Generalised substitutions. Sets. Functions and relations. Abstract machines. Refinement.
  • Programming language: Abstract machines. Refinement. Implementation. Importation.
  • Case studies.


  • Assigning programs to meanings, the “”B”” Book, Jean-Raymond Abrial. Cambridge University Press, 1996.

User-centered Design (M2)

[Responsible of the module]

User-centered system design involves users throughout the process of design. The users take part as experts of the use of the technology in its context, and as innovators while contributing ideas which allow to explore new ways of design.
This course is divided into two parts:

  1. 20 hours of lectures carried out by ergonomists and designers coming from professional environments
  2. an exercise of participative design which aims at collectively proposing improvements for an Internet site. That takes the form of a series of supervised practical exercises where particular techniques are implemented.

The main objective is to make the students aware that they will enormously gain to consult their potential users. A second objective is to grasp the contribution of concrete use-scenarios to understand the core of a system. A third objective is to analyze the situations of group work to know which technical types to use in which types of situations.


The approached techniques are:

  • Role-play
  • Interview of users, not computer specialists
  • Specification of concrete and precise use-scenarios
  • Brainstorming
  • Prototyping
  • Audit by people external to the project, users and pairs
  • Birds of a Feather


  • Key principles for user-centred systems design. Jan Gulliksen, Bengt Göransson, Inger Boivie, Stefan Blomkvist, Jenny Persson et Åsa Cajander. Behaviour & Information Technology 22.6 (2003).
  • Collaboration Engineering. Kolfschoten, Gwendolyn L., de Vreede, Gert-Jan, & Briggs, Robert O. 2010. In: Kilgour, D. Marc, & Eden, Colin, Kilgour, D. Marc, & Eden, Colin (eds), Handbook of Group Decision and Negotiation. Advances in Group Decision and Negotiation, vol. 4. Springer Netherlands (2010).
  • Using Video to support interaction design. Wendy Mackay, INRIA, 2001.

Technical presentation (M1)

A three hours lecture on how to prepare technical presentations.

Slides are accessible here.

Comments are closed.