Cette page regroupe les ressources pour les enseignements que je fais
pour les années passées. Accessoirement, puisque nombre d'étudiants ne
voient que cette page avec Internet Explorer, voyez la page principale
pour savoir à quoi ressemble ce site avec Firefox.
Quelques recommandations
Le monde merveilleux de l'informatique vous fascine ? Vous vous êtes
inscrits à une formation en informatique ? Seulement votre formation
ne vous fait pas mettre suffisamment les mains dans le cambouis à
votre goût ? Alors voici quelques conseils à appliquer, pour que vous
n'ayez pas à rougir de collègues ayant choisi des filières à l'aspect
plus pragmatique, bien au contraire :
- Entrainez-vous au moins 1/4 d'heure par jour avec un programme tel
que gtypist. Lorsque
vous pouvez retrouver les touches sans regarder sans trop de
problèmes (au bout d'un mois, à peu près), forcez-vous à rédiger vos
documents, et programmes, sans regarder le clavier. Vous rattraperez
très rapidement votre vitesse de frappe précédente, et elle ne fera
qu'accélérer avec le temps. J'en suis à 3 à 4 caractères par
secondes, avec un taux de 10% d'erreurs (testé avec typespeed, après que je m'y sois mis il y
a à peu près 3 ans et demi.
- Lisez la documentation, pour toute application ou langage de
programmation que vous utilisez : pages de man, FAQ, manuel de
référence, tutoriaux, forums,... Vous n'êtes pas les premiers à
utiliser ce logiciel/langage, servez-vous de l'expérience de ceux
qui sont passés avant vous.
- Utilisez un système de type Unix (Linux, *BSD) en ligne de
commande. Un Desktop Manager comme Gnome ou KDE ne vous apprendra
rien. Préférez un Window Manager léger, comme Xfce, WMaker, IceWM,
fvwm95... avec plusieurs terminaux et programmes ouverts <em>dans
plusieurs bureaux</em>. C'est la configuration optimale de nombreux
programmeurs de talent.
- Lisez la doc.
- Choisissez un langage qui n'est pas étudié dans votre formation, et
programmez de petites applications avec. Si vous arrivez à vous
abstraire de la syntaxe d'un langage pour vous concentrer sur la
modélisation d'un problème, alors vous adapter plus tard à d'autres
langages sera plus facile. Parenthèse : c'est la raison pour
laquelle OCaml est enseigné à Valenciennes. C'est le seul langage
regroupant tant de paradigmes de programmation que tout étudiant
doit avoir vu (programmation fonctionnelle, impérative, objet,
concurrente). Ne manquent que les paradigmes de programmation par
contrainte (avec Prolog, par exemple) et distribuée (avec Ada).
- Lisez la doc, je n'insisterai jamais assez là-dessus.
- Apprenez à utiliser un éditeur facilitant la conception de
programmes, et utilisez les raccourcis clavier de cet éditeur (le
voyage de main entre la souris et le clavier fait perdre énormément
de temps). Emacs et vim sont parmi les plus anciens éditeurs
utilisés pour programmer, faites donc confiance à plusieurs années
(voire décennies) d'affinage et essayez-les.
- Ai-je suggéré de lire la doc ? Si ce n'est pas le cas, faites-le.
- Vous avez tapé un document sous Word ou sous OpenOffice, que vous
trouvez très joli ? Seulement voilà, vous devez faire des
modifications, et toute votre belle mise en page est
fichue... Préférez alors utiliser LaTeX, le traitement de texte non
interactif. Il est basé sur des macros de formattage du texte, et
son utilisation est simple pour des programmeurs. Jetez un oeil à
un des nombreux tutoriaux décrivant son
utilisation.
- Lisez la doc, relisez-là, lisez-là encore parce que vous avez
sûrement laissé passer quelque chose d'important.
- Apprenez à utiliser un mécanisme de gestion automatique de
compilations séparées. Le plus connu, utilisé et ancien système de
ce genre est le Makefile. Plus votre
projet de programmation est vaste, plus il vous simplifiera la vie.
D'autres solutions de ce genre, plus récentes, existent également,
tel SCons.
- Si ici vous n'avez pas compris qu'il faut lire la doc, je ne peux
plus rien pour vous.
Ressources d'enseignement
Elles se trouvent ici, classées par module
puis par nature (sujet de TD, de TP, d'examen).
- En bases de la complexité (uniquement des TPs), ça peut intéresser
ceux qui aiment OCaml.
- En méthodologie de programmation. Les sujets de TD ont pour la
plupart proposés par Vincent Poirriez, les TPs par moi
et Arnaud Doniec,
et le sujet d'examen présent est une première version (plus
difficile que ce qui a été retenu pour l'examen) proposée par moi.
- En sûreté de fonctionnement. Le sujet d'examen est de Georges
Mariano, les sujets de TD
principalement de Dorian Petit, et les sujets de TP
de moi.
Les sujets d'examen et les sujets de TP sont respectivement réunis
dans un seul fichier postscript, les sujets de TP de complexité et de
méthodologie de programmation sont des tarballs contenant le sujet au
format postscript, et le matériel éventuel pour démarrer le TP. Les
sujets de TP de sûreté de fonctionnement sont des tarballs contenant
une description courte mais suffisante du formalisme utilisé (Coq ou
PhoX) et soit une fiche dont il faut suivre les instructions, soit un
fichier de théorèmes à prouver. Pour toute question, il y a bien
évidemment moyen de me contacter, de préférence sur mon email à
l'université dans ce cas précis.
Projets
Hop, maintenant, pour les idées de projet, il faut aller regarder sur
le projet Sandbox-OCaml sur
Gna!.
J'utilise aussi une grille pour noter les projets des étudiants, au
format postscript et au
format PDF. Je ne sais
pas ce qu'il en est des autres encadrants de projets.