progressionTle

Table of Contents

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.

Created: 2019-10-30 Wed 17:03

Emacs 24.5.1 (Org mode 8.2.10)

Validate