This page is kept for historical purposes only. Please see the home page for my current situation. —Luca Saiu.

Luca Saiu - Teaching - Free software course (2007)

Information about the rattrapage is now available here.

This course is a general introduction to the main themes of free software and open source, covering themes of technical, historical and philosophical interest.
Due to time constraints many topics are only touched in passing, and pointers to other resources are provided instead.

In order to make students know at least some of the tools in widespread use in the free software community I also present at least one particularly influential free software project in each lesson.
Despite being a necessity dictated by the impossibility to illustrate all interesting examples, such a kind of judgement is inherently subjective; when forced to choose I tend to give precedence to some topics with a deep significance for Computer Science which I deem unjustly neglected (hence my choice of dedicating one lecture to Lisp by teaching the basics of the Scheme programming language), or software systems with a particularly beautiful and inspiring internal architecture (like Emacs and X, whose inner workings can and should serve as examples).

You can contact me for any question or comment. I appreciate feedback.


Final "long" TP [2007-11-23 update: the final TP web page is online]

The final TP will be divided in several sessions, totaling six hours per group. Due to the good amount of time available I've prepared a larger project, much more interesting than the thing I was anticipating before. Of course the same rule continues to hold: any negative result in a TP does not contribute to evaluation; but, particularly in this case (because of the relatively large size of the project), good results will yield a bonus.

The project will consist in modifying an existing free software system I will provide, written in the C language. It will be a somewhat simplified simulation of what may happen in the real free software community.

Some knowledge of the Scheme dialect of Lisp (the one I introduced in the first lesson) will also be required - of course I don't require anyone to become a master Scheme programmer: but please review your notes on Lisp before coming; if you don't have notes or you were not present at the first lesson then please learn at least the basics of Scheme from the resources linked below. Of course I will answer questions, but I won't have time to re-explain Lisp from scratch.

I understand that different students have widely varying levels of experience: to allow both beginners to learn by doing something interesting and experts to creatively express themselves in daring endeavors, I've designed the TP to consist in completing one or more tasks, chosen from a list by each students or group; I will also happily accept reasonable suggestions for other tasks which I have not anticipated: the system I will provide lends itself to be extended in many ways.

Each task has different requirements and different difficulty, explicitly stated: all the needed information will be available online.

Students will (optionally, of course) submit their solutions to me by e-mail.

Requirements for the final TP

The only abilities absolutely required for the TP are: Some individual tasks need a deeper understanding of these (and other) matters; but, keeping in mind the survey answers, I've tried to design tasks appropriate for everyone.

Documentation will be provided to explain step-by-step some typical operations which inexperienced students might not know of (for example, how to uncompress and compile a project distribute as source code); I will provide scripts or Makefiles to automate most "uninteresting" operations.

Slides and course diary

I try to make slides available one or two days before each lesson.
All my slides are in
ODF format, easily accessible from reasonably recent versions of the suite. Presentations are available here as gzipped tarballs.
The Ogg/Theora videos (typically screencasts) I show in class are also available.

Exams [updated on 2008-01-10]

As I had promised, I will make oral sessions for all students who prefer this solution. However, since there is a lot of students and some have said to have problems with English, I also offer the possibility of a written multiple choice examination, in French.

Each student is free to choose one modality (the difficulty is the same):

Of course what I have previously said about optional bonuses continues to hold. Good submitted solutions to the final TP and presentations will yield a bonus on the final mark; but the written or oral examination is compulsory for everybody.

General notes

Also in consideration of the fact that we communicate in English, I'll be completely satisfied if a student shows me to have understood two thirds of what I say in class, but recalling just the main points of each lecture is enough to pass (of course not with the maximum mark in this case).

Computer sessions (TPs) are meant as practical exercises for students, and any possible negative outcome will not contribute to evaluation. I want students to freely ask me questions during TPs without any fear of being judged for this.

Remembering minute details such as dates or exact definitions is not required.

Optional "bonuses": solutions to the final TP and presentations

The written or oral exam is required for everybody, but in addition to that students can optionally submit me their solutions to the final TP (by sending me the compressed sources of their modified nanolisp; submitting more than one version is ok, since many students had to work on different nanolisp versions because of setup problems in the TP rooms), or make a presentation. If their work is good they will get a bonus on their final mark.

Of course students can contact me for any question about the exam, or about anything which was covered in the course.

More resources

Here I provide some resoruces for interested students who want to get a deeper understanding.

I appreciate personal enquiry, and take it into account as a bonus for the final evaluation.

Free software philosophy and history

If you have little time I recommend to read at least
Why software should not have owners, by Richard Stallman.

Open Source

I recommend The Cathedral and the Bazaar by Eric Raymond.


I think everybody should at least try the
SICP video lectures. Watch them when you have some time.

Extension languages




Copyright and licenses

Development methodologies

These are not necessarily related to free software, but they're a very instructive reading.
I admit that this selection is biased towards Lisp.

Hacker culture

This is light reading.

Back to my home page...

Luca Saiu
Last modified: 2008-02-28
Copyright © 2007, 2008 Luca Saiu
Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.