Teaching GNOME to students



Hi all,

I'm one of the teachers making the "Code Evaluation & Maintenance"
course (see: http://www.labri.fr/~fleury/courses/EMC07/, in french). I
just have few comments on this course and maybe some explanations on how
we got the idea of it and what is our real goal...

First, all the teachers of the EMC course did read the book "Code
Reading" by Spinellis and got struck by the idea that in fact you do not
only learn code by writing but also by reading. Indeed, I do read code
when I'm stuck with something that I cannot figure out how to do, when
documentation is not enough, when I'm the only one skilled enough in my
lab to get what I want, when I do have to evaluate a library or an
application that one of my software will depend on, and, ultimately, I
do read code just for pleasure, to get some ideas, some inspiration for
later on.

Some people did push the metaphor a bit too far by comparing code and
literature, I'm not one of those. Code is code and literature is
literature even though similarities between both of them are numerous.

So, once I accepted the idea that not only you learn better by reading
code from others and that once you have assimilated this technique
you'll never loose your way through big projects, I started wondering:
"But when did someone tell me about this while my studies or after ?"...

NEVER !

None of my teachers, nor even other hackers that I know did push forward
this obvious fact before Spinellis. And more strangely, no course have
been yet made up to teach students to do so.

You may say that we lack of "good" code to read (whatever you mean by
"good"). But since last decade Open Source projects are providing us
with A LOT of code... "good" and "bad"... and, indeed, reading both
"good" and "bad" code is absolutely necessary to know what "good" code
is, to learn how to identify weaknesses in one project, to capture code
gems or idioms that you will reuse all life long.

And it's not only about code ! You can also access all project history
through the SCM database, archived websites, mailling-list archives, ...
and thus also teach project management, software engineering, legal
aspects of coding, and others... through REAL LIFE EXAMPLES.

So, Open Source projects are a bless if you want to teach coding and
probably all aspects of computer science in a "code reading"-way because
they give us the material to do so. The question now being more about:
"How to do it properly ?".

Our goal in this EMC course is not really yet to fill the lack of such a
course but to experiment methods to teach it. Try to see how far we can
push the idea and how are the students behaving when facing this way of
thinking. We took deliberately Master students in their last year in
order to have them knowledgeable about most of the basis and be able to
be more independent for the projects (the university didn't give us a
lot of teaching hours for our experiment).

We do have classical theoretical course but the core of the teaching
rely on a trilogy of projects which are focused on one Open Source
project that we choose at the beginning of the year:
- Code Reading (browse a project focused on a specific point:
build-system, libraries binding, ...)
- Bug fixing (take an item in the bug-list, dig it and patch it)
- Feature implementation (take an item in the wish-list and go for an
implementation)

The theoretical courses insist on the method and the tools to use in
order to apply it during the projects.

Last year (2006) was our first time with the Subversion project as focus
and it came surprisingly smooth... even though students revealed a lot
of lacks in what should be considered as basis in our field
(build-systems, complex compilation frameworks, advanced debugging,
better understanding of low-level memory management, ...).

This year we focus on the GNOME project (and we might stick with it for
the following years because it brings a lot of good points for the
teaching of our course such as active projects, good documentation, good
code, nice bug-list, nice wish-list (with love-bugs), ...).

Of course, we are just trying ideas here... Our dream would be that
based on our experience other teachers follow our example and open
similar courses. Hopefully it will happen. :)

Regards
-- 
Emmanuel Fleury

Out the 10Base-T, through the router, down the T1, over the leased
line, off the bridge, past the firewall...nothing but Net.
  -- Tony Miller


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]