diff --git a/sessions/01.md b/sessions/01.md
index 39930f9..f72ca7e 100644
--- a/sessions/01.md
+++ b/sessions/01.md
@@ -1,165 +1,560 @@
-### Introduction
+# Introduction à la programmation avec Python
-* Historique du langage:
- * création par Guido pour l'enseignement
- * Monty Python
- * le grand schisme 2/3.
- * Meilleur nul part, excellent partout
-* Utilisation de Python
+
+E2L
+24/11/2018
+Dimitri Merejkowsky
+
- * Sciences (physique, chimie ...)
- * Animation
- * Sites web
- * ...
- * Ligne de commande
- * Langage de 'glue'
+---
-### Le REPL
+# Plan
-* S'assurer que tous les étudiants peuvent lancer le REPL
+* Présentation et historique du langage
+* L'interpréteur interactif
+* Un jeu simple
-Notions:
+---
-* Entiers et flottants (via maths basiques: + * - /)
-* Grouper avec des parenthèses.
-* Booléens
-* Variables
-* Fonctions:
+# Historique
- * `quit()`
+* Créé par Guido van Rossum. Conçu à la base pour l'enseignement.
+* Le nom vient des Monty Python (si, si)
+* Python 1: Sortie en 1991
+* Python 2: en 2000
+* Python 3: en 2008
-### Du code dans un fichier
+---
-Oups, les variables disparaissent quand on ferme le REPL.
-Solution: les mettre dans un fichier `.py`.
+# Le grand schisme
-```python
-a = 1
-b = 2
+La plupart des langages continuent à être compatibles d'une version à l'autre.
-c = a+b
+*Ce n'est pas le cas pour Python3*, et ça a causé beaucoup de confusion et de débats.
-print(c)
-```
+Heureusement, 10 ans plus tard, la situation s'est arrangée.
-S'assurer que les étudiants peuvent:
+---
-* `cd` dans le bon répertoire
-* Lancer `python >>
-### Flot de contrôle
+---
-* if
-* while
-* `break`, `continue`
-* `for`
-* `range()`
-* On peut aussi itérer sur les strings
+# Note
-### Entrèe standard
-* input()
+Recopiez les entrées sur les slides dans votre propre interpréteur.
+S'il fait quelque chose que vous ne comprenez pas, prévenez moi!
-Démo: "à quel nombre je pense"
+---
+# Entiers et maths simples
-```python
-secret = 42
+ !pycon
+ >>> 1
+ 1
+ >>> 2
+ 2
+ >>> 1 + 2
+ 3
+ >>> 2 * 3
+ 6
-print("Devine le nombre auquel je pense"):
-while True:
- reponse = input()
- if response > secret:
- print("Trop grand")
- if response < secret:
- print("Trop petit")
- print("Gagné")
- break
-```
+---
-Notions:
+# Flottants
-* Exceptions: si la conversion échoue
+C'est le `.` qui fait le flottant
-```python
-import random
+ !pycon
+ >>> 0.5
+ 0.5
+ >>> 0.5 + 0.2
+ 0.7
+ >>> 10 / 3
+ 3.3333333333333335
-secret = random.randint(0, 100)
-```
+*Note: les flottants sont imprécis*
+----
-Notions:
+# Division entières et modulo
-* imports
-* accès à un membre avec `.`
+ !pycon
+ >>> 14 // 3
+ 4
+ >>> 14 % 3
+ 2
+*Le `%` n'a rien à voir avec un pourcentage!*
-Des liens:
+---
-* La doc officielle (récemment traduite en français):
- https://docs.python.org/fr/3/tutorial/index.html
+# Priorité des opérations
-* sametmax: http://sametmax.com/cours-et-tutos/. Note: ça y parle aussi de
- cul, donc pas à mettre entre toutes les mains ;-)
+ !pycon
+ >>> 1 + 2 * 3
+ 7
+ >>> (1 + 2) * 3
+ 9
-* Fin!
+*Les parenthèses permettent de grouper les expressions*
+
+---
+
+# Variables
+
+ !pycon
+ >>> a = 2
+ >>> a
+ 2
+ >>> b = 3
+ >>> a + b
+ 5
+
+* On peut nommer des valeurs
+* On peut afficher la valeur d'une variable entrant son nom dans le REPL
+
+---
+
+# Variables (2)
+
+
+ !pycon
+ >>> a = 2
+ >>> a
+ 2
+ >>> a = 3
+ >>> a
+ 3
+
+* On peut changer la valeur d'une variable (d'où son nom)
+
+---
+
+
+# Les chaînes de caractères
+
+Aussi appelées "string".
+
+
+Avec des simple quotes (`'`)
+
+ !pycon
+ >>> 'Bonjour monde!'
+ 'Bonjour monde'
+
+Marche aussi avec des double quotes (`"`)
+
+ !pycon
+ >>> "Bonjour, monde!"
+ 'Bonjour monde'
+
+
+
+---
+
+# Double et simple quotes
+
+On peut mettre des simples quotes dans des double quotes et vice-versa.
+
+ !pycon
+ >>> "Il a dit: 'bonjour' ce matin."
+ "Il a dit: 'bonjour' ce matin."
+
+ >>> 'Il a dit: "bonjour" ce matin'
+ 'Il a dit: "bonjour" ce matin!'
+
+---
+
+# Échappement
+
+
+Avec la barre oblique inversée "backslash"
+
+
+ !pycon
+ >>> 'Il a dit: "bonjour". C\'est sympa!'
+ 'Il a dit: "bonjour". C\'est sympa!'
+
+---
+
+# Concaténation
+
+
+ !pycon
+ >>> name = "John"
+ >>> message = "Bonjour " + name + " !"
+ >>> message
+ "Bonjour John !"
+
+---
+
+# Types
+
+ !pycon
+ >>> a = 42
+ >>> message = "La réponse est: " + a
+ TypeError: can only concatenate str (not "int") to str
+
+On ne mélange pas les torchons et les serviettes!
+
+---
+
+# Conversions
+
+
+ !python
+ # Entier vers string
+ >>> a = 42
+ >>> message = "La réponse est: " + str(a)
+ >>> message
+ 'La réponse est 42'
+
+
+ # String vers entier
+ >>> answer = int("42")
+ >>> answer
+ 42
+
+Notez les parenthèses autour des valeurs.
+
+---
+
+# Booléens
+
+True et False
+
+
+En Python, elle sont en majuscules!
+
+---
+
+# Assignation
+
+On peut assigner des variables aux valeurs True et False
+
+
+ !pycon
+ >>> la_terre_est_plate = False
+ ...
+ >>> python_c_est_genial = True
+
+---
+
+# Comparaisons
+
+ !pycon
+ >>> a = 2
+ >>> b = 3
+ >>> a > b
+ False
+
+ >>> 2 + 2 == 4
+ True
+
+Note: `==` pour la comparaison, `=` pour l'assignation
+
+---
+
+# Comparaisons (2)
+
+ !pycon
+ >>> a = 2
+ >>> b = 3
+ >>> a != b
+ True
+ >>> 2 + 2 >= 4
+ True
+
+---
+# Non persistance
+
+ !pycon
+ >>> a = 2
+ >>> quit()
+
+
+
+ !pycon
+ >>> a
+ Traceback (most recent call last):
+ File "", line 1, in
+ NameError: name 'a' is not defined
+
+*Notre premier message d'erreur !*
+
+
+---
+
+# Du code dans un fichier
+
+Aussi appelé: "code source", ou "source".
+
+L'essence du logiciel libre :)
+
+---
+
+
+# Installation d'un éditeur de texte simple
+
+* Linux; `gedit`, `kate`, ...
+* macOS: `CotEditor`
+* Windows: `Notepad++`
+
+J'insiste sur **simple**. Inutile d'installer un IDE pour le moment.
+
+---
+
+# Configuration
+
+* Police de caractères à chasse fixe
+* Indentation de *4 espaces*
+* Remplacer tabulation par des espaces
+* Activer la coloration syntaxique
+
+---
+
+
+# Notre premier fichier source
+
+
+Insérez le code suivant dans votre éditeur de texte
+
+ !python
+ # Affiche un message
+ print("Bonjour, monde")
+
+
+Sauvegardez dans un fichier `bonjour.py` dans `Documents/e2l/python` par exemple
+
+---
+
+# Lancer du code en ligne de commande
+
+
+ !console
+ $ cd Documents/e2l/python/
+ $ python3 bonjour.py
+ Bonjour, monde
+
+ * Les lignes commençant par dièse (`#`) ont été ignorées
+ * `print()` affiche la valeur, comme dans le REPL.
+
+---
+
+# Note importante (1)
+
+Vous avez juste besoin:
+
+* d'un éditeur de texte
+* de Python3 installé
+* d'une ligne de commande
+
+Pas la peine d'installer quoique ce soit de plus pour le moment
+
+---
+
+# Note importante (2)
+
+À partir de maintenant, vous devez suivre ce cycle:
+
+1. *Recopiez* le code affiché dans votre éditeur, à la suite du code
+ déjà écrit
+2. Lancez le code depuis la ligne de commande
+3. Réparez les erreurs éventuelles
+4. Recommencez
+
+---
+
+# Note importante (3)
+
+C'est le meilleur moyen d'apprendre. Si vous restez passifs vous retiendrez beaucoup moins de choses et ne pourrez pas coder par vous-même.
+
+Profitez qu'on soit là pour vous aider si vous avez des erreurs que vous ne comprenez pas!
+
+---
+
+# Flot de contrôle
+
+L'essence de la programmation!
+
+---
+
+# while
+
+Répéter tant qu'une condition est vraie
+
+
+
+ !python
+ print("Bonjour, monde")
+ while True:
+ print("spam!")
+
+Notes:
+
+* deux points à la fin de la ligne
+* indentation après les deux points
+---
+
+# Notre première boucle infinie
+
+
+ !bash
+ > python bonjour.py
+ Bonjour, monde
+ spam!
+ spam!
+ spam!
+ ....
+
+CTRL-C pour interrompre
+
+---
+
+# Conditions
+
+ !python
+ a = 3
+ b = 4
+ if a == b:
+ print("a et b sont égaux")
+ else:
+ print("a et be sont différents")
+
+Rappel:
+
+* deux points à la fin de la ligne
+* indentation après les deux points
+
+---
+
+# Combiner while et if
+
+Interrompt la boucle quand une condition devient vraie:
+
+
+ !python
+ i = 0
+ while True:
+ i = i + 1
+ if i > 3:
+ print("i est plus grand que 3, on arrête")
+ break
+ print("i =" + str(i))
+ print("i est plus petit que 3, on continue")
+
+
+
+i = 1
+i est plus petit que 3, on continue
+i = 2
+i est plus petit que 3, on continue
+i = 3
+i est plus petit que 3, on continue
+i est plus grand que 3, on arrête
+
+---
+
+# Lire une entrée utilisateur
+
+* `input()` (encore des parenthèses ...)
+
+ * interrompt le script
+ * lit ce que l'utilisateur tape jusqu'à ce qu'il tape "entrée".
+ * renvoie une string
+
+---
+
+# Devine nombre
+
+---
+
+# Le code
+
+
+ !python
+ secret = 42
+
+ print("Devine le nombre auquel je pense")
+ while True:
+ response = input()
+ response = int(response)
+ if response > secret:
+ print("Trop grand")
+ continue
+ if response < secret:
+ print("Trop petit")
+ continue
+ print("Gagné")
+ break
+
+
+---
+
+À vous de jouer!
+
+---
+
+# Éviter de hard-coder le secret
+
+Le secret a une valeur prédéfinie, et il faut changer le code source
+pour changer le secret, pas glop.
+
+
+Solution: le choisir au hasard
+
+---
+
+# Un secret au hasard
+
+Remplacez le première ligne pour avoir:
+
+ !python
+ import random
+
+ secret = random.randint(0, 100)
+
+Le jeu devient tout de suite plus amusant :)