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.
Contents
- Introduction to Constraints
- From Prolog to Constraints
- Finite Constraint Domains
- Programming with Finite Domain Constraints
- Examples of Applications
Bibliography
- 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.
Contents
- 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.
Bibliography
- 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:
- 20 hours of lectures carried out by ergonomists and designers coming from professional environments
- 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.
Contents
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
Bibliography
- 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.