Planification

Première partie, techniques de la programmation impérative (en C) (4 semaines)

Semaine 40

Cours

Objectifs de l'apprentissage de programmation - Maintenabilité, Lisibilité (communication avec d'autres programmeurs) Indentation - Généralité (pas de limitation arbitraires), Réutilisabilité Différences entre C et Java: - Généralisation de l'expression séquentielle - Restrictions sur la position des déclarations - Notion de pointeur - Équivalence pointeur/tableau - Chaînes de caractères - Choix de manipulation de valeurs ou de références en particulier pour le passage de paramètres - Absence de classes, héritage, méthodes, paquetages interfaces. - Gestion manuelle de la mémoire avec malloc() et free() - Notion d'exécutable et de programme principal - Notion de module et unité de compilation - Struct - Fonctions

TD

- Le contenu du cours - GCC, options -W -Wall -c -g -o -O - Make élémentaire - GDB - Emacs C-mode, M-x compile, next-error, indentation, etc

Semaine 41

Cours

Techniques élémentaires de programmation - Dictionnaires tableau non trié, tableau trié, liste non triée, liste triée, tableau d'hachage, arbre binaire insertion, suppression, recherche, utilisation de pointeurs sur champs pour la liste, renversement de la liste - Recursivité cas de base en premier

TD

- Lecture de code simple de gestion de dictionnaires - Écriture de code simple - Compilation, débuggage, exécution depuis GDB avec programme principal vide - Pas de programmes interactifs

Semaine 42

Cours

Modularité et Généricité - Portée des identificateurs - Utilisation de static - Séparation .h .c - Notion de module client - Généricité avec void * - Préprocesseur, inclusion - Utilisation d'en-têtes d'objet - Sémantique par référence uniforme

TD

- Lecture de code d'une module générique (par exemple, pile ou file) - Écriture d'un module générique (l'autre)

Semaine 43

Cours

Techniques avancées - Utilisation du ramasse-miettes de Boehm - Traitement d'erreurs, setjmp/longjump, bibliothèque d'exceptions

TD

- Écriture d'un programme avec le RM de Boehm - Écriture d'un programme avec exceptions Deuxième partie, techniques de la programmation fonctionnelle et symbolique (en Common Lisp) (8 semaines)

Semaine 44

Survol du langage Introduction à la programmation fonctionnelle et symbolique Objectifs

Semaine 45

Techniques de base Récursivité, listes, cons, car, cdr, représentation des listes, partage