1. Calendrier

Items du programme officiel, juste les titres. L’ordre est celui que je vais suivre.

1.1. Premier semestre S1

  • Hors du programme mais nécessaire au début :

    • Organisation de l’année pour ce cours d’informatique

    • Conseils méthodologiques

    • Rapide histoire de l’informatique

    • Matériel constituant d’un ordinateur

    • Base de programmation en Python, rappels de syntaxe pour rafraîchir tout le monde

    • Terminal sous UNIX via une VM

    • Méthode de programmation, premier passage

      • Algorithmes et programmes (historique)

    • Quand ? Septembre : 2/3 CM + 1/2 TD QCM et frise historique + 1 TP terminal

  • Programmation en OCaml :

    • pourquoi et comment OCaml, comment s’en servir : avec https://BetterOCaml.ml, puis dans un terminal ou dans Emacs en mode tuareg, avec VM CapesOS à utiliser depuis Windows ou Mac (à faire en TP)

    • bases du langage OCaml

    • approche impérative, ressemble à Python

    • approche fonctionnelle, nouveau

    • Quand ? Septembre : 1 CM + 1 TP

  • Structures de données, premier passage :

    • Types et abstractions

    • Structures de données séquentielles 1/2 (listes, tableaux 1D, piles et files)

    • Quand ? Octobre : 2 CM + 1 TD

  • Méthode de programmation, premier passage

    • Algorithmes et programmes

    • Discipline de programmation

    • Validation, test

    • 1 CM + 1 TP + dans chaque TP suivant les faire écrire des tests en binôme ?

    • Quand ? Octobre : 1 CM + 1 TD

  • Programmation en C :

    • bases du langage C, modèle de calcul, syntaxe

    • ? pas possible de faire pas de pointeur ni gestion mémoire ni fichier car gestion mémoire est au S1

    • Quand ? Novembre : 2 CM + 1 TD

  • Récursivité et induction, premier passage

    • Fonctions récursives simples

    • Induction sur les entiers comme en maths

    • Quand ? Novembre/Décembre : 1 CM + 1 TD

  • Gestion des ressources de la machine

    • Gestion de la mémoire d’un programme : en C uniquement, malloc/free

    • Gestion des fichiers et entrées-sorties

    • Bases de Bash et de la philosophie UNIX des pipes et stdin/stdout « tout est fichier »

    • Quand ? Décembre : 2 CM + 1 TP


1.2. Second semestre S2

  • Structures de données, deuxième passage :

    • Structures de données séquentielles 2/2 (tableaux 2D et plus)

    • Structures de données hiérarchiques (arbres, tableaux associatifs, tables de hachage)

    • Structures de données relationnelles (graphes et arbres)

    • Quand ? Janvier : 2/3 CM + 3 TP + 3 TD

  • Algorithmique

    • Exploration exhaustive, back tracking

    • Décomposition d’un problème en sous-problème =

      • algorithme glouton exacts,

      • et diviser pour régner / dichotomie,

      • programmation dynamique bottom-up ou mémoïsation.

    • Algorithmique des textes (recherche sous-chaîne, codage/compression Huffman)

    • Algorithmique des graphes : bases = parcours en largeur et profondeur

    • Quand ? Février/mars : 4 CM + 4 TP + 4 TD

  • Méthode de programmation, deuxième passage

    • Discipline de programmation :

      • exceptions,

      • explications choix conception programmation

    • Quand ? Mars : 0.5 CM et max 1 TP

  • Programmation en OCaml, deuxième passage :

    • filtrage,

    • fichiers,

    • exceptions,

    • Quand ? Mars : 1 CM + dans les TP suivants

  • Programmation en C :

    • pointeurs,

    • gestion mémoire avec malloc/free,

    • utilisation de fichiers

    • Quand ? Avril, 2 CM et 2 TP + 1 TD max

  • Logique

    • Syntaxe des formules logiques

    • Sémantique de vérité du calcul propositionnel

    • Quand ? Mai, 3/4 CM et 1/2 TP + 2 TD

  • Récursivité et induction, deuxième passage

    • Récursivité croisée

    • Induction structurelle (sur des graphes, des arbres, des formules logiques, etc.)

    • Quand ? Mai, 0.5 CM et max 1 TP

  • Bases de données

    • Modèle relationnel, exemples

    • Syntaxe du SQL

    • Constructions avancées comme WHERE et HAVING

    • Quand ? Juin, 2/3 CM et 2 TP + 1/2 TD