UNIX et outils de développements:
 - Objectif: leur faire essayer les outils; après, libre à eux
   d'utiliser Windows ou UNIX, clickodrome ou interpréteur de
   commande.  Autant que possible, les laisser apprendre de manière
   autonome en suivant des tutoriaux sur le web.
 - Présentation de LaTeX, LyX, acrobat reader, star office, Abiword ?
 - Création de page HTML ?

Introduction à java:
 - Objectif: être sûr qu'ils maîtrisent raisonnablement au moins un
   langage de programmation; après, libre à eux d'en utiliser un
   autre, à condition qu'ils puissent justifier leur préférence par
   autre chose que "c'est le seul que je connaisse".
 - Contenu:
   - Instructions de base, tableaux
   - Entrées - sorties
   - Définitions de nouvelles classes
   - Graphiques simples avec la bibliothèque standard, et fonctionnant
     en particulier dans une applet.

Culture générale:
 - analyse numérique, optimisation, ...

Questionnaire:
 - Bibliographie sur les langages de programmation existants
 - Concepts de programmation
 - Nettiquette, droit du logiciel

==============================================================================
Tentative de programme:
=======================
Semaine 1:
Lundi:
 - Marguin 2h: intro maple/mupad, recursivité:
   Cnp,  Fibonacci, Hackerman, avec comptage du nombre d'opérations
 - Dumont 2h: initiation linux, interpréteur de commande, fichiers,
   répertoires, complétion automatique, jokers, emacs
Mardi:
 - Tounissoux 4h:
   Introduction à java: compilation, programme en ligne de commande,
   boucles, vecteurs
Mercredi:
 - Harel 2h: conférence de vulgarisation sur la complexité et la
   calculabilité
 - Thiéry 2h:
   - "Coding standards"
   - Utilisation de CVS, make, tar, gzip; batteries de tests.
Jeudi:
 - Delorme: Structures de données & récursivité:
   - Vecteurs, listes chaînées, files, piles, arbres
   - Recherche dichotomique
   - Quelques démonstrations par induction sur les arbres

2eme semaine:
Lundi:
 - Marguin 2h: suite récursivité; tables de hachage ?
 - Dumont 2h:
    - Outils UNIX un peu plus avancé: find, locate, grep, sed, sort,
      uniq, cat, echo, less; processus, pipes, redirections, ...
      petits scripts
 - Tounissoux 4h:
   Intro programmation objet, applications avec mini interface graphique
   Objectif: function qui trace une courbe donnée par un vecteur
 - Thiéry 4h:
   - Implantation en java d'une classe pour une pile
   - Application: vérifier qu'une expression comme [[(()())]()]
     est bien parenthésée
   - Implantation en java d'une classe pour une liste chaînée.
     Recherche dichotomique dans un vecteur trié.
     Comptage du nombre d'opérations pour trouver et pour insérer
     un élément dans un vecteur et dans une liste chaînée.
     Application: recherche de mots dans /usr/share/dict/words.

Jeudi:
 - Delorme 4h: cours sur les tris:
   - Tris en place (bulle, insertion et quicksort ?)
   - Tris par arbre binaire de recherche (arbres équilibrés ?)

3ème semaine:
Lundi:
 - Marguin 2h: tables de hachage
 - Dumont 2h: ?
Mardi: 
 - Tounissoux 4h:
   - Implantation en java d'une classe pour les arbres et arbres binaires
   - Applications:
     - Comptage du nombre de sommets
     - Parcours prefixe, infixe, postfixe, ...
     - Évaluation d'un arbre syntaxique
     - Arbre préfixe d'un ensemble de mots
       Complexité en mémoire pour stocker /usr/share/dict/words
     - Recherche dans un arbre préfixe
       nombre d'opérations
Mercredi:
 - Thiéry 4h:
   - Implantation des tris en place en java;
     affichage du vecteur à chaque étape du tri
   - Tris par arbres de recherche
   - Comptage du nombre d'opérations
Mercredi ou jeudi:
 - Ciuperca 1h:
   - analyse regression+symptotique avec SAS du nombre d'opérations
     dans fibo et dans les tris implantés;
Jeudi:
 - Delorme 4h:
   - Analyse théorique des complexités des tris;
   - Complexité d'algorithmes et de problèmes;
   - TD: trouver le sous-vecteur contigu de somme max dans un vecteur
     donné de nombres entiers signés

4ème semaine:
Lundi:
 - Marguin 2h: Complexité des algos de base de calcul formel/numérique
    (Cf. Modern Computer Algebra, Vz Gathen).
    algèbre linéaire, artithmétique sur Z/pZ, formes normales de matrices,
    pivot de Gauss sur un corps quelconque (e.g. Z/pZ), Gauss Bareiss
    sur les entiers ???
 - Dumont 2h: ?
Mardi
 - Thiéry 4h:
   - Apprentissage d'un nouveau langage de programmation en suivant un
     tutorial
   - Recherche d'information sur le web, début du questionnaire
Mercredi:
 - Thiéry 4h:
   - Implantation du TD, fin des tris
Jeudi:
 - Delorme 4h: Expressions régulières, langages et automates

5ème semaine:
Lundi:
 - Marguin 2h: cours + TD Maple: récursivité et branch and bound
 - Dumont 2h:
Mardi:
 - Thiéry 4h
   - Discussion sur un des thèmes du questionnaire
   - Implantation d'un joueur automatique de dame avec recherche
     par branch-and-bound de la solution optimale.
     (interface graphique fournie?)
Mercredi:
 - Thiéry 4h:
   - Utilisation des expressions régulières: grep, emacs, perl, java
   - Implantation d'automate et recherche d'expressions régulières
Jeudi:
 - Delorme 4h: grammaires, analyse syntaxique ?

6ème semaine:
Lundi:
 - Marguin 2h: Cryptographie RSA en Maple/MuPAD
 - Dumont 2h:
Mardi:
 - Thiéry 4h:
   - Fin du joueur de dame;
   - Fin cryptographie RSA
   - Questionnaire suite.
Mercredi:
 - Thiéry 4h:
   - Implantation d'automate à pile, analyse syntaxique d'expressions
     simples
   - lex/yacc ? Est-ce facile à utiliser avec java ?
Jeudi:
 - Delorme: calculabilité ?
==============================================================================

Dans informatique & réseaux:
 - Problèmes de licences, ...
 - Réseaux
 - Calculs scientifiques et réseaux

==============================================================================
Questions:
 - Évaluation ? (TP, ...)

==============================================================================
Cahier des charges (Coding standard):
=====================================
   Objectif: prendre de bonnes habitudes de programmation
 - Utilisation systématique de CVS
 - Archive tar.gz ou zip contenant
   nomTP.Nom.Prénom/
		    README: 
			Date,
			Description du contenu
			Liste des fichiers et description courte de leur rôle
		        Comment lancer le programme
			Comment lancer la batterie de test
		    Makefile  (autant que possible):
			make clean fait le nettoyage
			make ou make all lance la compilation
			make demo lance une démo
			make check lance la batterie de tests

   Dans chaque fichier un entête précisant version, auteur, licence,
   date de création, description succincte.

   Pour chaque fonction, une description succincte:
    - préconditions éventuelles
    - résultat
    - exceptions possibles
    - quelques exemples d'utilisation
    - si l'algorithme n'est pas trivial, des explications ou des références.

   Pour chaque fonction, des tests dans la batterie de tests.

   Lorsque relevant, un compte rendu en PDF ou HTML succinct avec
   analyse des résultats obtenus.

 - Indentation systématique et uniforme
 - Variables: noms long et significatifs. Si le nom n'est pas
   complètement explicatif, ou s'il y a des contraintes sur la
   variable, ça doit être documenté.
 - Commentaires avec les invariants de boucle, ...
 - Utilisation d'assert pour tous les invariants et assertions non triviales
==============================================================================

Comptes:
tounis
omarguin

Infumdppls
