From 07d2fa69ed5df42d15b6053d16923790c49dc478 Mon Sep 17 00:00:00 2001 From: gwen Date: Mon, 10 Apr 2017 12:25:40 +0200 Subject: [PATCH] presentation du cours d'algo --- algorithmique/cours/annexes/agile.txt | 4 +- algorithmique/cours/annexes/exercices.txt | 175 ++++++++++++++++++++++ algorithmique/cours/annexes/index.txt | 2 +- algorithmique/cours/presentation.txt | 24 ++- algorithmique/cours/programme.txt | 28 +++- 5 files changed, 224 insertions(+), 9 deletions(-) create mode 100644 algorithmique/cours/annexes/exercices.txt diff --git a/algorithmique/cours/annexes/agile.txt b/algorithmique/cours/annexes/agile.txt index 43dd756..5884c11 100644 --- a/algorithmique/cours/annexes/agile.txt +++ b/algorithmique/cours/annexes/agile.txt @@ -1,5 +1,5 @@ -Les méthodes agile -=================== +La planification agile +======================== Le mode itératif ----------------- diff --git a/algorithmique/cours/annexes/exercices.txt b/algorithmique/cours/annexes/exercices.txt new file mode 100644 index 0000000..a5050a0 --- /dev/null +++ b/algorithmique/cours/annexes/exercices.txt @@ -0,0 +1,175 @@ +Première journée : Le langage Python +------------------------------------- + ++------------------------------------------------------+------------------------------------------------------------------------+ +| Contenus | Précisions et commentaires | ++======================================================+========================================================================+ +| Recherche dans une liste, recherche du maximum dans | | +| une liste de nombres, calcul de la moyenne et de la | | +| variance. | | ++------------------------------------------------------+------------------------------------------------------------------------+ +| Recherche d’un mot dans une chaîne de caractères. | On se limite ici à l’algorithme "naïf", en estimant sa complexité. | ++------------------------------------------------------+------------------------------------------------------------------------+ + + +Séance 1 : Un apercu des possibles utilisations de Python +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ++ Objectif de la formation + ++ les outils de travail avec Python + + éditeur de texte + IPython (commandes intéractives + `%run`) + + environnement de développement intégré (ex. Spyder) + + Notebook IPython (proche de Maple/Mathematica) + + +Séance 2 : Éléments de base du langage +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- structures de données + + (),[],{} + + listes en compréhension + +- éléments du langage + boucles, conditions, fonctions, itérateur, map , enumerate + +- Exemple en algorithmique de base + +:: + + In [1]: def tri1(): + + %timeit l1.sort() + +Séance 3 : Chaînes et fichiers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + traitement des chaines de caractères + + s.replace() + + s1 + s2 + + un exemple de regexp simple + + type de fichiers + + mode d'accès + + glob.glob + + Sans doute ces points peuvent être intégrés dans la séance 2. + +Séance 4 : Python Objet & Bases de données +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + Classe + + Méthodes + + Surcharge d'opérateurs + + + Construire un exemple de classe progressivement + + Idéalement un exemple avec l'utilisation d'une base de données MySQL + utiliser `pymysql` + + + +Deuxième journée : Python Scientifique +-------------------------------------- + +Séance 5 : Calcul numérique avec Numpy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + Lecture fichiers (type structuré) + + + Algèbre de base + + + broadcasting + + + stacking(hstack,vstack,dstack) + + + boucle ou pas boucle einsum vs numba comme exemple + +Séance 6 : Graphiques avec Matplotlib +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + `visite de la grande galerie `_ + et de `la petite galerie `_ + + construction d'un graphe simple en 2d en ajoutant des éléments + graduellement pour enrichir le graphe (légendes, titre, ....) + + + imshow , contouplot + + + 3D ? + +Séance 7 : Calcul scientifique avec Scipy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + optimisation + + intégration, ode + + stats + +Séance 8 : Cas pratique de mise en oeuvre +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + ++ écrire des instructions conditionnelles avec alternatives, ++ démontrer qu’une boucle se termine effectivement. ++ organisation modulaire des programmes ++ programmation structurée. + + + 1. Récupérer des données physiques ouvertes sur le réseau (T°, ...) + 2. Appliquer un traitement + 3. Mettre en forme une représentation graphique des données + + + + **Variables** : notion de type et de valeur d’une variable, types simples. + Les types simples présentés sont les entiers, flottants, booléens et chaînes de caractères. + + + **Expressions et instructions simples** : + affectation, opérateurs usuels, distinction entre expression et instruction + Les expressions considérées sont à valeurs numériques, booléennes ou de type chaîne de caractères. + + + **Instructions conditionnelles**: + expressions booléennes et opérateurs logiques simples, structurer et comprendre plusieurs + instruction if. Variantes avec alternative (else). + + Les étudiants devront être capables de niveaux d’alternatives implantées par des instructions conditionnelles imbriquées. + + + **Instructions itératives** : + boucles for, boucles conditionnelles while. + Les sorties de boucle (instruction break) peuvent être présentées et se + justifient uniquement lorsqu’elles contribuent à simplifier notablement la + programmation sans réelle perte de lisibilité des conditions d’arrêt. + + + **Fonctions** : + notion de fonction (au sens informatique), définition dans le langage utilisé, paramètres (ou arguments) et résultats, portée des variables. + On distingue les variables locales des variables globales et on décourage l’utilisation des variables globales autant que possible. + + La récursivité sera présentée plus tard. + + + **Manipulation de quelques structures de données**: + chaînes de caractères (création, accès à un caractère, concaténation), listes (création, ajout + d’un élément, suppression d’un élément, accès à un élément, extraction d’une partie de liste), tableaux à une ou plusieurs dimensions. + + On met en évidence le fait que certaines opérations d’apparence simple cachent + un important travail pour le processeur. On met à profit la structure de + tableau d’entiers à deux dimensions pour introduire la notion d’image + ponctuelle (« bitmap »). Les algorithmes de traitement d’image seront abordés + plus tard. + + + **Fichiers** : + notion de chemin d’accès, lecture et écriture de données numériques ou de type chaîne de caractères depuis ou vers un fichier. + + On encourage l’utilisation de fichiers en tant que supports de données ou de résultats avant divers traitements, par exemple graphiques. + + + + **Piles** + Algorithmes de manipulation : fonctions 'push' et 'pop'. On utilise des listes + (ou tableaux à 1 dimension) pour leur implantation. + + + **Récursivité** + + On en présente les avantages et les inconvénients. + + + **Tris** d’un tableau à une dimension de valeurs + numériques : tri par insertion, tri rapide (ou 'quicksort'), + tri par fusion. Application à la + recherche de la médiane d’une liste de nombres. + + On étudie et on compare ces algorithmes de tri du point de vue des complexités temporelles dans le meilleur et dans le + pire cas. diff --git a/algorithmique/cours/annexes/index.txt b/algorithmique/cours/annexes/index.txt index 5101b23..566502a 100644 --- a/algorithmique/cours/annexes/index.txt +++ b/algorithmique/cours/annexes/index.txt @@ -4,6 +4,6 @@ Annexes .. toctree:: :maxdepth: 2 + exercices agile scrum - diff --git a/algorithmique/cours/presentation.txt b/algorithmique/cours/presentation.txt index ce046cb..ab7873b 100644 --- a/algorithmique/cours/presentation.txt +++ b/algorithmique/cours/presentation.txt @@ -1,7 +1,8 @@ Avant propos -------------- +============ -**Présentation de ce cours** +Introduction +~~~~~~~~~~~~ - L'accent est mis sur l'approche **algorithmique scientifique**, dite algorithmique algébrique. L'algorithmique est un sous-domaine de l'algèbre et des @@ -30,3 +31,22 @@ Avant propos limiterons l'exposé à deux langages d'implémentation des algorithmes : le **Python** pour la programmation impérative, modulaire et objet, et nous évoquerons aussi certains exemples en langage **OCaml** à propos de la programmation fonctionnelle, modulaire et générique. + +Objectifs de ce cours +~~~~~~~~~~~~~~~~~~~~~ + +Il s'agit de : + +- maîtriser et concevoir un algorithmes de base, +- choisir une représentations appropriée des données, +- décomposer en sous-problèmes et affinements successifs, +- organiser les modules ou fonctions. + +Le développement raisonné d’algorithmes et leur implantation +permet d'acquérir les qualités suivantes : + ++ Analyser et modéliser un problème, ++ Spécifier, ++ Exprimer, une problématique, une solution ou un algorithme, ++ Traduire un algorithme dans un langage de programmation, ++ Concevoir un algorithme répondant à un problème précisément posé. diff --git a/algorithmique/cours/programme.txt b/algorithmique/cours/programme.txt index c2789ca..ca3d11a 100644 --- a/algorithmique/cours/programme.txt +++ b/algorithmique/cours/programme.txt @@ -7,12 +7,17 @@ Qu'est-ce qu'un programme ? - Un **programme** est une suite de **phrases** ; - Une **phrase** est une **déclaration** ou une **expression** (*statement* en anglais) ; -Exemple de déclarations : -- `a = 1` -- `b = 'c'` +expression -Exemple d'expressions : + Une expression est une valeur caculée du langage, une opération arithmétique + qui retourne une valeur du langage (entier, texte, valeur logique...) + +Par exemple, la ligne suivante est une expression effectuant une addition:: + + 5 + 6 + +Autres exemples d'expressions : - 5 est une expression de type int - 4.5 est une expression de type float @@ -21,6 +26,10 @@ Exemple d'expressions : - print ('c') est une expression de type None - raw_input est une expression de type string +Exemple de déclarations : + +- `a = 1` +- `b = 'c'` .. important:: Le signe égal est utilisé de deux manières @@ -55,6 +64,17 @@ programme : 2. communiquer avec des fichiers, 3. communiquer avec d'autres programmes. +Interaction avec l'utilisateur +------------------------------ + +.. FIXME + +- lire et écrire dans un fichier +- afficher du texte ou un nombre +- lire du texte ou un nombre +- les prompts + + La REPL --------