The objective of this course is to introduce the fundamental mechanisms of operating systems. 

The focus will be on understanding the design or modern operating systems, and its influence on computer performance and usability.

The course uses a combination of reading, interactive lectures and exercises to understand the organization of a computer system and the management of processes, memory and files. It also covers synchronization and scheduling as representative systems problems. We use examples from a variety of operating systems (Mac OS, Linux, Windows, UNIX) in class but the practical sessions use the Java programming language.

Only a moderate technical background is required, corresponding to the computer programming classes offered in the first years.

This course is a sound basis for any CS-oriented curricula. It also very well suited for non-CS majors wishing to understand the fundamentals of modern computer systems and explore some classical design and tradeoffs that can be found in many other branches of computer science and programming, including large-scale systems and Cloud computing.

Lectures: Fridays, 14h00->16h00

Practicals: Fridays, 16h00->17h00

Teacher: Dr. Valerio Schiavoni (

Sous-assistant: Loïc Schenker (

NOTE: this course is given in English.