progressionTle
Table of Contents
- 1. Légende
- 2. Attendus
- 2.1. Pour l'évaluation
- 2.2. Après le bloque 5
- 2.3. Avant la rentrée prochaine
- 2.3.1. Un corpus de matériels
- 2.3.2. Un ensemble des compétences vues et référence au programme
- 2.3.3. Une évaluation sommative
- 2.3.4. Une ou plusieurs évaluations (qui peuvent prendre la forme de petits projets)
- 2.3.5. Quelques petits exercices
- 2.3.6. Des références sur le sujets
- 2.3.7. Tout ce que vous aimeriez que eux vous fournissent sur leur séquence…
- 3. Trimestre 1 : De nouvelles structures de données
- 3.1. Piles, files et résursivité
- 3.1.1. (–) Listes et dictionnaires
- 3.1.2. (++) Extraction/serialisation de fichier YAML/JSON avec une API
- 3.1.3. Principes des piles et files
- 3.1.4. Implémentation par des listes ou tableaux fixés (queues)
- 3.1.5. Concept d'une liste chaînée et code donné
- 3.1.6. Différence entre l'interface et l'implémentation
- 3.2. Classes et Interfaces
- 3.3. Arbres
- 3.4. (++) Diviser pour régner
- 3.1. Piles, files et résursivité
- 4. Trimestre 2 : Structures complexes
- 4.1. Extraction de BdD
- 4.2. Modification d'une BdD
- 4.3. Graphes
- 4.3.1. Arrêtes et Noeuds
- 4.3.2. Représentations d'un graphe
- 4.3.3. Graphe de l'internet
- 4.3.4. Algorithmes de graphes
- 4.3.5. Protocoles de routage et algos de graphes
- 4.3.6. (++) Utilisation d'un API d'extraction de BdD
- 4.3.7. (++) web semantic et graphes de données
- 4.3.8. (++) Algorithmes gloutons sur les graphes
- 5. (++) Trimestre 3 : Problèmes complexes et paradigmes
- 6. Sur l'année
1 Légende
1.1 Les (>> Nom)
A été pris par un groupe (ceux-ci m'ont envoyé un mail)
1.2 le (–) sur un sous-thème
indique qu'il est sensé s'agir d'un rappel de première
1.3 le (++) sur un sous-thème
indique qu'il s'agit d'un développement avancé possible, non nécessaire pour le programme, mais que l'enseignant doit maîtriser
1.4 le (++) sur une séquence
indique que la séquence contient majoritairement des développements et peut donc être fusionnée avec la précédente
2 Attendus
2.1 Pour l'évaluation
2.1.1 Une petite présentation de 15mn qui présente ce qui a été fait
2.2 Après le bloque 5
2.2.1 Une mise à jours prenant en compte le contenu du bloque 5
2.3 Avant la rentrée prochaine
2.3.1 Un corpus de matériels
2.3.2 Un ensemble des compétences vues et référence au programme
2.3.3 Une évaluation sommative
2.3.4 Une ou plusieurs évaluations (qui peuvent prendre la forme de petits projets)
2.3.5 Quelques petits exercices
2.3.6 Des références sur le sujets
2.3.7 Tout ce que vous aimeriez que eux vous fournissent sur leur séquence…
3 Trimestre 1 : De nouvelles structures de données
3.1 Piles, files et résursivité
3.1.1 (–) Listes et dictionnaires
Révision
3.1.2 (++) Extraction/serialisation de fichier YAML/JSON avec une API
Extraire/enregistrer de vrais documents JSON vers/depuis des listes et dictionnaires,
3.1.3 Principes des piles et files
Idée général, et quelques exemples dans la vrais vie et en informatique
3.1.4 Implémentation par des listes ou tableaux fixés (queues)
On voit une implémentation par une liste fixée avec deux pointeurs que l'on manipule
3.1.5 Concept d'une liste chaînée et code donné
On donne le concept de liste chaînée et on fait un un petit TP avec code "magique"
3.1.6 Différence entre l'interface et l'implémentation
On discute ici de la différence entre interface (entendre spécification) et une implémentation
3.2 Classes et Interfaces
3.2.1 Classes
Syntaxe des classes, plein de petits exemples
3.2.2 Classes récursivement définies
Retour des liste chaînées
3.2.3 Interfaces
Méthodes de noms génériques et programmes valides sur plusieurs classes
3.2.4 (++) Outils de tests unitaire
Je ne sais pas trop où le placer :s
3.2.5 Récursivité
Avec les classes récursive il faut insister sur le concept de récursivité et sur les étapes d'évaluation.
3.2.6 Terminaison (paramètre décroissant)
Il faut parler de terminaison lorsque l'on parle de récursivité, sinon les élèves sont bloqués à un moment par cette évaluation "magique".
3.2.7 (++) analyse partiel (en supposant la terminaison)
Lorsque l'on suppose la terminaison, il y a une méthode fun d'analyse d'un invariant qui consiste à supposer l'invariant vrais sur tous les appels récursif et de vérifier qu'il est vrais à la fin. C'est comme une récurrence, sauf que l'on ne vérifie pas que l'on est sur un ensemble bien fondé
3.3 Arbres
3.3.1 Concept d'arbres
Idée général, et quelques exemples dans la vrais vie et en informatique
3.3.2 Arbres binaires
Petites manipulations et parcours en profondeur/largeur
3.3.3 Arbres binaires de recherches
Voir TP ABR
3.3.4 (++) Arbres syntaxiques
Un programme est un arbre
3.3.5 (–) complexité
révisions
3.3.6 (++) complexité sur les arbres
Bien choisir le paramètre (hauteur ou taille)
3.4 (++) Diviser pour régner
3.4.1 (–) recherche dichotomique
révisions
3.4.2 ABR et quicksort
présenter quicksort et remarquer qu'il s'agit de la même chose que le tri par ABR
3.4.3 Trifusion et sa complexité
présenter le tri fusion et étudier la complexité (nlogn dans tous les cas)
3.4.4 Autre algos diviser pour régner
Faires d'autres exemples pour bien asseoir le concept
3.4.5 Complexité des algorithmes
Algos logarithmiques et en n.log(n)
3.4.6 (++) Master theorem
Montrer que diviser pour régner n'amène pas toujours à du log n ou du n.logn. Montrer certains cas du master theorem ?
4 Trimestre 2 : Structures complexes
4.1 Extraction de BdD
4.1.1 Sémantique à base de tables relationnelles
Bien comprendre la décomposition en tables, colonnes et lignes
4.1.2 Principe d'une requête
Une base de donnée est une énorme structure de donnée dont l'interface est un langage complet
4.1.3 (–) Rappels booléens (++) parler du Nul
4.1.4 Select where et Order by
Utiliser le Select … where … Faire de grosses requêtes avec des Or et And partout
4.1.5 Jointures
Ne faites que des inner joins, les autres ne seront pas utiles et vont perdre les élèves.
4.1.6 (++) TP/projet d'utilisation d'une grosse BdD en ligne
Faisable si l'établissement autorise les requêtes à distances… Dans ce cas on peut récupérer des infos sympa.
4.1.7 (++) Group by
Pas au programme mais on doit pouvoir faire des exercices avec ?
4.2 Modification d'une BdD
4.2.1 (++) Modification d'une BdD : une opération concurrente
Lorsque l'on modifie une base de donnée, d'autres lisent et écrivent sur la même base de donnée. Celle-ci est capable de gérer ça correctement !
4.2.2 Insert et Delete
4.2.3 Update
Savoir faire un Set correctement. Attention aux modifications trop générales qui écrasent des infos :)
4.2.4 Bien structurer une BdD
Règles basique de structuration. Je ne crois pas que les many-to-one et many-to-many soient au programme (à vérifier)
4.2.5 TP/projet d'utilisation d'une BdD local
Dépend encore de vos ingé systèmes, mais normalement, vous avez des bases de données qui tournent sous python.
4.2.6 (++) sous requêtes
Je ne crois pas qu'elles soient au programme, mais ça ne ferait pas de mal aux élèves de voir que ça existe (cela montre le pouvoir expressif de SQL)
4.3 Graphes
4.3.1 Arrêtes et Noeuds
Faire des graphes au tableau, petits exemples naturels. Pas de poids sur les arrêtes. Graphes orientés et non orientés
4.3.2 Représentations d'un graphe
Comme matrice, comme dictionnaire d'adjacence, ou accès "local" à un noeud et à sa liste d'adjacence.
4.3.3 Graphe de l'internet
Présenter l'internet comme un graphe très gros qui est "vu de l'intérieur" avec uniquement la vue de nos voisins
4.3.4 Algorithmes de graphes
Parcours en largeur et profondeur, recherche de cycles et recherche de chemin.
4.3.5 Protocoles de routage et algos de graphes
Le routage n'est qu'une application des algorithmes de graphes.
4.3.6 (++) Utilisation d'un API d'extraction de BdD
4.3.7 (++) web semantic et graphes de données
4.3.8 (++) Algorithmes gloutons sur les graphes
Rappels + introduction d'un algo glouton sur les graphes ?
5 (++) Trimestre 3 : Problèmes complexes et paradigmes
5.1 Un programme est une donnée comme les autres
5.1.1 Un programme sur un ordi/dans une requête
Le programme est juste une grosse String, ou bien un arbre (AST), dans tous les cas, c'est une donnée que l'on peut manipuler. On ne parle pas de contexte c'est trop abstrait…
5.1.2 Programmation fonctionnelle
fonctions d'ordre supérieurs, quelques utilisations du map, dérouler à la main. On peut faire le liens avec la compréhension de liste ?
5.1.3 Calculabilité
Montrer avec les mains qu'il n'est pas possible d'avoir un programme qui dit si oui ou non le programme donné en entré termine
5.2 (++) concurrence et parallélisme
5.2.1 Gestion des processus et des ressources par un système d’exploitation
cf. bloc 3
5.2.2 (++) Paradigmes Concurrent et distribué
On peut être concurrent avec un seul coeur et on peut être distribué sans problématique de concurrence
5.2.3 (++) Bugs de concurrence, nécessité de protocoles
5.2.4 (++) Exemple de la BdD
5.3 Algorithmique par suppression des redondances
5.3.1 Analyse de redondance design d'algos par suppression des redondances
On ne veut pas faire un calcule plusieurs fois ou lire une même donnée plusieurs fois, réfléchir à comment éviter cela.
5.3.2 Programmation dynamique
5.3.3 Algorithme de Morris-Pratt
5.3.4 (++) Algorithme de Boyer-Moore
6 Sur l'année
6.1 Projet filé sur plusieurs séquences
L'idée est d'imaginer un ou plusieurs projets de programmation s'étalant sur plusieurs séquences. On peut imaginer un gros projet découpé en phases ou des projets plus indépendant, mais partageant un cadre formel (mise en place) permettant à l'élève de s'y retrouver et avec chaque petits projet couvrant une ou deux séquences.