Introduction to algorithms and programming (aka. Informatique 1)

Course Description

This course has two parts: one that deals with concepts, methodology and practice of algorithms design and programming and a second that focuses on Web technologies and programming. Both of them are introductory lectures and target beginners in software programming and software (or software sensitive systems) engineeering. This course is also available for non IT curriculum students who want to learn and would like some knowledge in software programming and/or problem-solving approach (i.e. I am convinced such knowledge is interesting and usefull for most of the students, whatever their specialities or business domains are).

The course combines both theorical and practical aspects. The part dealing with algorithms and programming introduces algorithm fundaments in a problem-solving perspective. Abstract data types, (tail) recursion, sequential data structures (lists, queues, stacks); data structures sort algorithms are studied during the course. The course is based on a functional programming language named Racket a successor of Scheme, itself a LISP dialect. Students have to learn Racket during the semester. The part dealing with Web technologies is less theorical and focuses on the Web technologies fundaments (i.e. introduction to HTML, CSS, Static vs. Dynamic Web App., Javascript); it also covers Web apps good practice design.

The course and all the sessions and talks are in french but assignments and homeworks can be made and are accepted in english (foreign students are welcome).

Evaluation and Graduation

Evaluation combines final examination and continuous evaluation: continuous evaluation will be based on class participation, assignments, exercice and programming sessions, homeworks, sometimes oral presentations and open-ended final project(s). A final examination is organized in the end of the semester. Final grades will computed as a weighted average:


This course has no specific prerequisite except from basic mathematical background and notations that are required.


I'll give to students a small document that briefly introduces Racket. This document also contains all the required references, links to the documentation the students have to read and deal with.

Students are encouraged (sometimes obliged) but not limited to read parts of the following books:


Late homework will be accepted with a penalty of 3 points (out of a total of 20) per day (or partial day). For example, homework may be submitted up to 5:00pm on Tuesday for a 3 points penalty, 5:00pm on Wednesday for a 6 points penalty, and so on.

Honesty, Ethics,...

Collaboration on homework is encouraged. Students are also free to consult any outside sources such as tutorials, books, or wikis, and to seek help from sources (forums, irc channels, mailing lists,...). However, the following restrictions apply: you must cite any people or resources you consulted in completing an assigment. For example, at the end of an assignment you might write something like: ""I collaborated with Sophie Smith and Kevin Guy on this assignment, received help from aplisson on the #racket mailing lists and from on the PLT-Racket forum, and consulted http://...""

Don't forget to cite and indicate the complete bibliography and references. Don't copy and paste any portion of text, image, without explicitly cite the source and without to have the required rights (author authorization for images, videos,...that are copyrighted).

Some of materials in this page are adapted from the Brent Yorgey course Web pages (School of Engineering and Applied Science, Univ. of Penn.).