Teaching |
These courses present the POSIX standard and use the main system calls to
explain the principles of an operating system and to show how to build efficient programs
based on classic OS services. The introductory course focuses on process creation and local IPC: signals, tubes,
files, semaphores, message queues, and shared memory. The advanced course puts an emphasis on the realtime
aspects of an OS (multithreading, adaptive scheduling, real-time signals, asynchronous I/O, clocks and timers) and
on network programming (ie. socket programming)
Two thirds of the lectures consist of lab sessions, where students can get hands-on experience under the supervision
of the teaching staff.
A good knowledge of the C language is required before applying to any of these courses.
This course explores the fundamental notions of distributed programming in the context of asynchronous networks
such as the Internet. Such notions include: networking protocols (TCP, UDP, Multicast), agreement and transactions,
and basic mechanisms for failure detection and recovery. Several middleware platforms (RMI, CORBA, and EJBs) are used
to illustrate and experiment on these notions.
Students who wish to apply for this course must be proficient in Java and must have a minimal experience of
concurrent programming (ie. Java multithreading and monitors)
These courses explore the algorithmic problems that arise when a computation gets distributed among several nodes.
The introductory course limits the context to message-passing solutions (ie. no distributed shared memory)
in failure-free environments. Among other issues, it delves into the construction of causal relationships,
wave algorithms for information diffusion, termination detection, and global state recording.
The advanced course extends the context to failure-prone (aka. real) environments, and aims at covering
the main theoretical approaches for failure detection, distributed consensus, reliable diffusion, and fault tolerance
(including but not limited to: checkpointing, replication, and self-stabilisation)
Students who wish to apply for this course must have a solid background with respect to the theory of
computation.