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.
News
-
Some students have asked me some pointers about how to use GNU/Linux from the command line.
Here are my suggestions.
-
2008-02-06:
The
written exam questionnaire
and its commented solution are available.
-
The exam has been re-scheduled in order to comply with the legal requirement of
announcing the exam date at least 15 days in advance.
You can still choose a ten-minutes oral exam (I will speak English; you
can speak French if you want but I must be able to understand you),
xor a
90-minutes multiple-choice written exam in French. The difficulty will
be the same, and in either case I will keep into account good
submissions for the optional part.
You have to subscribe at the secretariat (or in room D203? is it the
same room? I don't know. Well, I think they'll tell you) on Tuesday
2008-01-29, in the morning (from 9.00 to 12.00).
-
The written exam is scheduled for:
- Tuesday 2008-01-29 from 13.45 to 15.15 at C102
-
The oral exams are scheduled for:
- Tuesday 2008-01-29 from 15.30 to 18.00 at B105
- Wednesday 2008-01-30 from 15.30 to 18.00 at C216
- Thursday 2008-01-31 from 12.00 to 13.30 at B105
- Friday 2008-02-01 from 13.45 to 15.15 at C216
Please bring with you your student card and an identity document.
-
2008-01-08: The final information about examinations is online.
-
2007-11-23: I've put online the final TP web
page. Please also read the information about
it.
-
2007-11-21: Please read the information about the final "long" TP.
-
2007-11-16: I've just discovered that the original document I was
linking for the Scheme turorial Teach yourself Scheme in fixnum days
has become unreachable. I've updated the link, and now it should work.
-
2007-11-15: for students: notwithstanding the possible strike ("grève")
I will be present tomorrow. Do you think you will come? I can schedule two extra lessons later
(lab session for Scheme (2/2), and another for the non-practical part)
if you don't show up, but I'd prefer to avoid this so that you have time to prepare yourself
for this and your other exams, without the hurdle of extra unplanned lessons.
-
2007-11-11: I've put online the questionnaires' solutions:
-
2007-11-01: Here (PDF, 88Kb) is the full text
of the GNU General Public License version 3 which I distributed.
Some students couldn't get it on paper because I didn't have enough
copies; I apologize to them.
You can also find the GPL text in other formats here.
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:
- decent programming ability with C
- very superficial knowledge of Scheme
- at least a minimal familiarity with the use of a Unix-like
system (of course we're going to use GNU/Linux)
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
OpenOffice.org
suite. Presentations are available here as
gzipped
tarballs.
The
Ogg/Theora
videos (typically screencasts) I show in class are also available.
-
2007-10-26 - 1 - History of the Free Software and Open Source movements
History of the free software and open source movements:
1-history.tar.gz (2344 Kb)
User-extensible applications: screencast demo of my
glyphify-mode for GNU Emacs:
funny-glyphs.ogg (1.5Mb). Emacs is the
canonical example, and probably the first one, of an extensible application.
User-extensible applications: LOGOS running on NAUSEA:
nausea-logos.ogg (2.7Mb). Another very visual
example of an extensible application. The application logic is
expressed with only ~500 lines of Scheme.
The Scheme dialect of Lisp: on the blackboard
.
-
2007-10-26 - A - Scheme (1/2)
Exercises with GNU Guile: Practical session
-
2007-11-01 - 2 - Copyright, licenses and free software
Copyright and basics of copyright licenses: on the blackboard
Copyright, software licenses and free software:
2-licenses.tar.gz (1200 Kb)
X: short live demo
Handout: the GNU General Public
License version 3 (PDF, 88Kb).
-
2007-11-09 - 3 - Free software development: practice and tools
Questionnaire (here is the solution)
Another questionnaire about the next 3-hour computer session (here is the solution)
Copyright, software licenses and free software:
3-development.tar.gz (3900 Kb)
GNU Emacs: short live demo
Web tools for collaborative development: GNU Savannah
savannah.ogg (5.4Mb).
Web tools for collaborative development: Bugzilla
bugzilla.ogg (2.4Mb).
Mailing lists in free software development.
-
2007-11-16 - A - Scheme (2/2)
Exercises with GNU Guile: Practical session
-
2007-11-16 - 4 - Bits and pieces
Some more history, and an anticipation of what will come in the
final lesson.
I've tried to make this lesson very "lightweight", in consideration of the
strike; the remaining important topics will be covered in the final lesson.
-
2007-xx-xx - 5 - Threats to free software (and not only)
[to be prepared]
This is not required for the exam.
-
2007-xx-xx - B - Final lab sessions (six hours) (1/2)
Writing and modifying free software: Practical session
-
2007-xx-xx - B - Final lab sessions (six hours) (2/2)
Writing and modifying free software: Practical session
-
2008-01-18, 8.30..10.00 - Written examination
-
from 2008-01-21 to 2008-01-25, 12.00..13.30 - Oral examinations
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):
-
Written examination
on Friday 2008-01-18, from 8.30 to 10.00. It will be a multiple-choice
questionnaire in French.
-
Oral examinations
in the week from Monday 2008-01-20 to Friday 2008-01-25, from 12.00 to 13.30.
Each session will last less than ten minutes. Students can speak French, but of course I have to understand
what they say.
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.
-
I've received very few nanolisp submissions. If you think you've done something nice then send me
your solution (only compressed sources, please).
-
Two students have already shown me a presentation about X.
-
Two other students (I don't have their names: the two female students who were on the front row during
the last TP, who said they had problems with English) were also interested in making a presentation.
If they are still interested they can
contact me
to fix an appointment for their presentation; or they can also do it during their oral sessions, if they
choose the oral modality and their presentation is very short.
-
Any other students who want to make a presentation about some interesting free software project,
or on some phisolophical or juridical aspect related to free software can
contact me.
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.
Lisp
I think everybody should at least try the SICP video lectures. Watch them when you have some time.
-
The Lisp Wikipedia article. This deals with the whole
family of languages, which includes Scheme.
-
The Scheme Wikipedia article.
-
Structure
and Interpretation of Computer Programs ("SICP"), by Abelson and Sussman
(the full text is online).
This is a very beautiful textbook about languages and programming, which also uses and
teaches Scheme.
Some parts may look simple for Master students, but despite being
easy to read this text is surprisingly deep.
-
Structure and Interpretation of Computer Programs -
video lectures:
a full course of twenty lectures given by Abelson and Sussman in 1986,
teaching Scheme and many other things. Enlightening.
-
Teach
yourself Scheme in fixnum days is a good Scheme tutorial. I
recommend this to students whose interest was captured by my
explaination and now want to have a better practical knowledge of the
language. It doesn't need a big effort.
2007-11-16: I've just discovered that the original document I was
linking is now unreachable. I've updated the link, and now it should work.
-
Recursive
Functions of Symbolic Expressions and Their Computation by Machine
(Part I), John McCarthy, 1960 (!).
The original article on Lisp, with the original notation.
An absolute must-read for anyone interested in languages.
-
Transcript of Richard
Stallman's speech at the 2002 International Lisp Conference:
about the early Lisp Machines history.
-
If you like Scheme you will surely be interested in the
original Lambda Papers (1975-1980) by Guy Steele and Gerald
Sussman. They're deep but written in an informal style, quite a
pleasure to read.
Extension languages
Emacs
X
-
The X Window System Wikipedia
article is very good, and contains other pointers.
GCC
-
The GCC home page is a good starting point for
understanding GCC. GCC internals are extremely complex, but you can try.
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.
-
The Jargon File,
edited by Eric Raymond (hence not written from a free software
perspective).
I particularly recommend
Appendix A: The story of
Mel (here
are some annotations which may be helpful for inexperienced readers).
-
Hackers: Heroes of the Computer Revolution (ISBN 0-385-19195-2), by
Stephen Levy, 1984, Anchor Press/Doubleday. I don't know whether a French translation exists.
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.