Components of a Computing System
Introduction to Computer Architecture and
École Polytechnique — Licence 3
A rich yet accessible and synthetic introduction to the design of
computers, with a double hardware-software perspective. These
concepts are important to understand and to harness modern
computing systems, from embedded and consumer electronics to the
largest networks. This course takes a top-down approach, from the
general goals and principles of an operating system down to the
hardware and software layers implementing it. It brings a
technological perspective essential to thorough understanding of
the INF431 course and of the motivations and technical challenges
behind. The course also brushes an overview of concepts covered in
the Master courses of computer architecture, operating system,
parallel programming, networking and databases.
(INRIA Paris-Rocquencourt and École Polytechnique).
Nhat Minh Lê (École Normale Supérieure).
Entry in the
Online Course Material
Documentation and references.
Frequently Asked Questions: read the FAQ.
- Handouts (3 slides per page), printed and distributed with
the first course.
The labs are in French for now. Based on student feedback, we will
consider translating them to English.
The labs take the form of design and
implementation projects covering the main aspects of a computing
system. Some exercices have to be completed before the next course,
uploading the answers on the web page
These exercises will be graded, contributing a [-1, ..., +2]
bonus/malus added to the grade of the final exam.
A project page
has been opened. Please refer to it for
further notification about the timeline and intermediate deliveries of
Direct links to the labs:
- TD 1 : Installation d'Android et prise en main
- TD 2 : Interface graphique et threads (2 semaines)
- TD 3 : Programmation réseau
- TD 4 : Programmation shell du réseau
- TD 5 : Programmation shell du système de fichiers
- TD 6 : Appels système et modules noyau
- TD 7 : Accès direct au périphérique écran
- TD 8 : Langage d'assemblage, compilation
The following books are not required for the course but can provide
interesting complements to the printed handouts.
A. Silberschatz and P. Galvin.
System Concepts. Eight Edition, John Wiley & Sons, 2008
(you may download a few online chapters). The Seventh
Edition is still very relevant, and comes with a more
applied Java-oriented book (algorithm examples in Java, not
Java system API).
D. P. Bovet and M. Cesati.
Linux Kernel. Third Edition, O'Reilly, 2005.
Detailed and insightful, complementary with classical textbooks about
operating systems. Requires an advanced level in the C
Embedded Systems Architecture. Elsevier, 2005. An industry and
standards-oriented view, a very accessible survey and an entry
point to more advanced material.
J. A. Fisher.
Computing: A VLIW Approach to Architecture, Compilers and
Tools. Elsevier, 2005. From the hardware to the tools, wide
view on embedded computing, principles and practice. By one of the
pionneers of microprocessor and compilation design.
James E. Smith and Ravi Nair: Virtual Machines:
Versatile Platforms for Systems and Processes, Elsevier
2005. Covers processor, full system and language/process-level
virtualization, with an emphasis on performance issues.
Linux embarqué. Second Edition, Eyrolles 2005.
Case studies, operating-system-oriented, a reference
for students and embedded Linux engineering.
Linux et UNIX par la pratique. Eyrolles, 2008.
Système en C sous Linux. Third Edition, Eyrolles, 2005.
If you wish to discover all the secrets behind the tools
we are using for the labs, and exploring the innards of
Android smarphones, Frédéric Brault digested his 2008 INF422 experience
in a convenient and inexpensive e-book.
Google Android - Introduction à la programmation
système. Eyrolles, e-book edition, 2009. [FRANÇAIS]
There are many books on Android development. They are
essentially Java-oriented, combining Google's reference
information with introductory and context material, as well as
case studies. M. L. Murphy wrote The Busy Coder's
Guide to Android Development, currently the most
appraised book in this category. But the book is very
expensive and Google's online documentation is really good
There are many more books on Java. Make sure you do not get one
specifically tight to your operating system or development
environment (Eclipse, Netbeans...).
If requested, the final exam will be bilingual.
All documents are authorized for reference (notes, slides,
books, etc.), but not communication-capable computers..
Archives of past exams:
- 2012–2013: Français,
- 2011–2012: Français,
- 2010–2011: Français,
- 2009–2010: Français,
- 2008–2009: Français,