Page for the (old) 2010/2011 edition and archives

Fundamentals of programming and algorithms (INF421)

421

Teacher: Leo Liberti

2012 edition

News

Aims of this course

The main aim of this course is to introduce the fundamentals of the theory and practice of computer science to 2nd year students of Ecole Polytechnique. A secondary, but only very slightly less important aim is to help students to further develop their (already considerable) intelligence.

In accordance with the latin etymology of of the word ("inter-ligo"), by "intelligence" I mean the ability of independently establishing links between different concepts. Do not be surprised, then, if at first you do not understand some concepts of this course. You are invited to make the link between what you do not understand (yet) and the background notions you possess, given by this course and your own education, so that understanding will arise. In order to make this link, you are invited to: (a) read didactical material, be it provided by your teachers or discovered on your own; (b) talking to fellow students; (c) asking your teachers. The more effort you put in this, the better your intelligence will become: the order (a),(b),(c) is not random.

Course material

TD material

Course evolution from last year

I received three main criticisms last year. The disconnection between notions taught in the course and exercises in the TD (a.k.a. "practicals"), the absence of Java code in the slides, and the absence of a polycopié (a.k.a. "lecture notes") written by myself.

As concerns the first point, since the course also aims to develop your intelligence, the disconnection is only apparent, and functional: you are supposed to make the connection. Of course, the lectures sometimes introduce concepts that are not explored further in the TD, and vice-versa. See this as bonus material. This is going to make you an even better and more knowledgeable computer scientist!

As concerns the second point, I chose to mention some Java code in the teaching material (specially at the beginning of the course), but this decreases as we progress, in favour of more abstract pseudocode. I took this decision in accordance with the whole teaching staff of the course. We all firmly believe this favours you in the long run, in exchange for more effort now (again, this is related to the development of your intelligence).

As for the third point, I spent all summer writing a polycopié, which you can download here. It is in its first version, so it will contain many errors and imprecisions, I'm sure. I shall correct it as I go along, and your help here is precious. When you find something you believe inconsistent or wrong, drop me an email about it at leoliberti at gmail.com.

Language

Written material (website, slides, notes, exercises and practicals) in English or French. Spoken language: French (sometimes English). Programming language: Java.

Teaching team

Course schedule

Courses take place on 9 consecutive fridays from 31st august to 26th october. Lectures are in Amphithéâtre Arago from 10:30 to 12:00, and TDs are in all the salles informatiques (SI31-SI36). If you're new to Ecole Polytechnique and don't know your way around the place yet, find every lecture hall and class here.

Books

I mainly based my lecture notes and slides on the following books.

I particularly recommend Mehlhorn and Sanders' book, as (i) it is the main inspiration for the course, and (ii) you can download it for free from either the link above (a draft version) or the single chapters of the final version from the book's web page.

You can also refer back to polycopiés from other years, such as the one from 2008-2010

Evaluation

One of the TDs (date still TBA) will be evaluated (let T be the mark gained in this test), and there will be an exam ("contrôle classant") at the end of the course (let E be the mark gained in this test). The total mark will be given by

max(E, ¾E + ¼T).
Examples of past tests and exams can be found in the archives.

Errata in the polycopié

  1. In Chapter 1, it is "Church's Thesis", rather than "Church's Hypothesis" (sorry)















---------------- OLD MATERIAL HERE, FOR REFERENCE ONLY ---------------------

2011 edition

News

I opened a blog to try and improve two-way communication between students and teacher. I know it's almost the end of the course, I'm sorry about this, but better late than never.

Language

Written material (website, slides, notes, exercises and practicals) in English or French. Spoken language: French.

Teaching team

This course takes students from the basic level given by the 1st year course INF311 to an intermediate level, more or less like students out of the INF321 course. This course is offered to students having taken INF311 and is a prerequisite for the more advanced INF431 course.

Course schedule

Courses take place on 9 consecutive fridays from 26th august to 21st october. Lectures are in Amphitheatre Arago from 10:30 to 12:00, and TDs are SI31, SI32, SI33, SI34, from 13:30 to 15:30 (groups 1-4) and from 15:45 to 17:45 (groups 5-7). If you're new to Ecole Polytechnique and don't know your way around the place yet, find every lecture hall and class here.

  1. 26/08/11. Lists and Complexity: slides, for printing and code
  2. 02/09/11. Queues and Bread-First Search: slides, for printing and code
  3. 09/09/11. Stacks and Recursion: slides, for printing and code
  4. 16/09/11. Sorting (this TD will be marked): slides, for printing and code
  5. 23/09/11. Hash tables: slides, for printing and code
  6. 30/09/11. Trees and Depth-First Search: slides, for printing and code
  7. 07/10/11. Balanced trees: slides, for printing and code
  8. 14/10/11. Graphs: slides, for printing and code
  9. 21/10/11. Shortest paths: slides, for printing and code

The TD on 16/9 will be marked ("pâle machine"). It will focus on material from lecture 1 to lecture 4 inclusive (this means you better come to the lectures, specially on 16/9, since you might be tested on it in the afternoon). Examples of past tests and exams can be found in the archives.

Webpage of the TDs

Lecture notes

This is the first year I'm giving this course, and since I think good lecture notes come out of didactical experience, I shall write them up during this and the next few years. For the time being, please refer to last year's polycopié.

Notwithstanding, I am actually writing some lecture notes, which for the moment are nothing but introductory material. I shall not assume you read this, but I encourage you to, and if you do please let me have your feedback.

Books

I mainly base my notes and slides on the following books.

I particularly recommend Mehlhorn and Sanders' book, as (i) it is the main inspiration for the course, and (ii) you can download it for free from either the link above (a draft version) or the single chapters of the final version from the book's web page.

Evaluation

One of the TDs will be evaluated (let T be the mark gained in this test), and there will be an exam ("contrôle classant") at the end of the course (let E be the mark gained in this test). The total mark will be given by

max(E, ¾E + ¼T).
Examples of past tests and exams can be found in the archives.