presentation du cours d'algo

This commit is contained in:
gwen 2017-04-10 12:25:40 +02:00
parent 95231a4253
commit 86dec22113
5 changed files with 224 additions and 9 deletions

View File

@ -1,5 +1,5 @@
Les méthodes agile La planification agile
=================== ========================
Le mode itératif Le mode itératif
----------------- -----------------

View File

@ -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 dun mot dans une chaîne de caractères. | On se limite ici à lalgorithme "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 <http://matplotlib.org/gallery.html>`_
et de `la petite galerie <http://www.loria.fr/~rougier/coding/gallery/>`_
+ 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 quune 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 dune 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 dalternatives 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 lorsquelles contribuent à simplifier notablement la
programmation sans réelle perte de lisibilité des conditions darrê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 lutilisation 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
dun élément, suppression dun élément, accès à un élément, extraction dune partie de liste), tableaux à une ou plusieurs dimensions.
On met en évidence le fait que certaines opérations dapparence simple cachent
un important travail pour le processeur. On met à profit la structure de
tableau dentiers à deux dimensions pour introduire la notion dimage
ponctuelle (« bitmap »). Les algorithmes de traitement dimage seront abordés
plus tard.
+ **Fichiers** :
notion de chemin daccès, lecture et écriture de données numériques ou de type chaîne de caractères depuis ou vers un fichier.
On encourage lutilisation 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** dun tableau à une dimension de valeurs
numériques : tri par insertion, tri rapide (ou 'quicksort'),
tri par fusion. Application à la
recherche de la médiane dune 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.

View File

@ -4,6 +4,6 @@ Annexes
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
exercices
agile agile
scrum scrum

View File

@ -1,7 +1,8 @@
Avant propos Avant propos
------------- ============
**Présentation de ce cours** Introduction
~~~~~~~~~~~~
- L'accent est mis sur l'approche **algorithmique scientifique**, dite algorithmique - 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 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 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** impérative, modulaire et objet, et nous évoquerons aussi certains exemples en langage **OCaml**
à propos de la programmation fonctionnelle, modulaire et générique. à 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é dalgorithmes 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é.

View File

@ -7,12 +7,17 @@ Qu'est-ce qu'un programme ?
- Un **programme** est une suite de **phrases** ; - Un **programme** est une suite de **phrases** ;
- Une **phrase** est une **déclaration** ou une **expression** (*statement* en anglais) ; - Une **phrase** est une **déclaration** ou une **expression** (*statement* en anglais) ;
Exemple de déclarations :
- `a = 1` expression
- `b = 'c'`
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 - 5 est une expression de type int
- 4.5 est une expression de type float - 4.5 est une expression de type float
@ -21,6 +26,10 @@ Exemple d'expressions :
- print ('c') est une expression de type None - print ('c') est une expression de type None
- raw_input est une expression de type string - 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 .. important:: Le signe égal est utilisé de deux manières
@ -55,6 +64,17 @@ programme :
2. communiquer avec des fichiers, 2. communiquer avec des fichiers,
3. communiquer avec d'autres programmes. 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 La REPL
-------- --------