• Racine du site
  • >
  • Le site
  • >
  • Enseignements
  • 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.