Cahier de textes, classe d'ISN, Lycée du Parc 2015/2016

Lors de votre navigation dans la page, pour revenir au début du cahier, cliquer sur le titre de la séance. Pour revenir à mon site, cliquer sur ce lien.
Pour déplier/replier le contenu d'une séance, il suffit de cliquer sur la date correspondante.

Séance du 07/09/2015

Présentation du programme et des objectifs. On parcourt la page web de mon chapitre d'introduction :
  1. Analyse de la définition de l'informatique donnée par le Larousse. Les quatre thèmes que nous allons aborder : Information, Langages, Algorithmes, Architecture.
    Quelques explications sur l'évaluation finale (projet). 8 élèves donc 4 groupes de 2. Sinon, les élèves seront évalués à travers deux DS d'une heure par trimestre,cinq ou six DM ou mini-projets, et un exposés sur un thèmes sociétal.
  2. Notre outil de travail, la clef ISN : comment la fabriquer. Un exemple de création de clef avec Linux Live USB Creator
  3. Un peu d'histoire de l'informatique avec un focus sur la machine de Turing et la simulation de deux machines de Turing (pour multiplier par 2 ou ajouter 1) à partir du site Interstices
  4. Un peu d'architecture de base : présentation du modèle de Von Neumann et on ouvre une machine et on regarde sous le capot.
  5. Quelques généralités sur la notion d'information : codage binaire, bit, octet.
  6. Le point sur les langages que nous allons utiliser cette année : Python et HTML/CSS, la différence entre un langage de programmation et un langage de description de page.
  7. On commence par aborder le langage HTML à travers mon cours en ligne.
    • Histoire et présentation de la structure minimale (organisée de façon arborescente), distinction entre fonds (HTML) et forme (CSS),
    • Différence entre les balises de type block ou inline .
    • On commence l'exercice 7
  8. Ce qu'il faut retenir de la séance :
    • Modèle de Von Neumann pour l'architecture d'un ordinateur : unité centrale avec unité de calcul et unité de traitement, mémoire et périphériques d'entrée/sortie. L'information circule entre les différents éléments du modèle à travers des bus.
    • HTML n'est pas un vrai langage de programmation.C'est un langage de description de page, le code HTMl fournit le squelette d'une page web. Son créateur est Tim Berners-Lee et c'est un standard normalisé par une organisatio internationale W3C. Le code HTML d'une page peut d'ailleurs être validé par un outil de validation en ligne
    • L'information est représentée dans un ordinateur sous forme de codage binaire, l'unité d'information de base est le bit, la quantité d'information s'exprime souvent en multiples d'1 octet (qui vaut 8 bits).
    • Le code source d'une page web peut etre vu avec un clic droit puis le choix de l'option code source de la page
    • Le code HTML structure le document sous forme d'arbre avec des balises. Il faut savoir dessiner l'arbre à partir d'un code HTML minimal.
    • Un fichier HTML décrit la structure du contenu mais pour la mise en forme, il faut lui adjoindre une feuille de style écrite dans un autre langage de description, le CSS
    • De nos jours la plupart des pages web sont des pages dynamiques générées coté serveurs par des langages comme PHP ou coté client par Javascript. Le code HTML est généré à la volée par l'interpréteur PHP du serveur par exemple.
Travail à faire pour la prochaine séance :

Séance du 14/09/2015

Découverte des langages HTMl et CSS :
  1. On vérifie que tout le monde dispose bien d'une clef ISN et on démarre dessus.
  2. On corrige les exercices 7, 8 et 9 sur le langage HTML (structuration du docuement, utilisation de balises inline ou block comme des liens hypertextes, des listes ...). Le cours et les exercices se trouvent sur cette page de mon cours en ligne. Le corrigé des exercices 7, 8 et 9 a été transmis par mail dans une archive zip.
  3. Petite initiation à la mise en forme d'une page HTML via une feuille de style CSS. Pour la découverte de CSS, on utilise le module Firebug de Firefox ou son équivalent dans le navigateur Chrome. Le cours et les exercices se trouvent sur cette page de mon cours en ligne .
    • exos 10 et 12 : manipulation de propriétés CSS à l'aide Firebug ou des outils réseaux de Chromium.
    • exo 13 : dimensions en CSS
    • exo 14 : à propos du positionnement en CSS : static, fixed, absolute, relative
    • exos 15 et 16 : utilisation de la propriété float pour le positionnement .
  4. On organise le planning des exposés à partir des sujets proposés dans l'exercice 10 du cours .
  5. Ce qu'il faut retenir de la séance :
    • Pour le langage à balises HTML, voir la séance précédente.
    • Pour CSS, il faut savoir que c'est un langage de mise en forme du HTMl et retenir l'idée d'une feuille de style CSS permettant de définir le style de plusieurs pages HTML, voir de tout un site.
      Noter aussi que les fichiers sources HTML et CSS sont des fichiers textes.
Travail à faire pour la prochaine séance :

Séance du 21/09/2015

Découverte du langage de programmation Python, premier Chapitre sur la programmation :
  1. On se logue sur le réseau et on lance Pyzo environnement de développement pour Python.
  2. On travaille avec le poly du chapitre Programmation 1 que j'ai distribué, la dernière version du cours est disponible en ligne sur mon site
  3. On apporte d'abord quelques informations sur les langages de programmation : code source et compilation ou interprétation, noyau impératif (déclaration et affectation de variables, expressions, séquences, instructions conditionnelles, boucles).
  4. A partir des exemples donnés en page 2 du poly de cours, on travaille ensuite dans une console Python interactive avec Python3 pour explorer les opérations de calcul et d'affectations de variables que Python peut réaliser. On définit ce qu'est une expression, une variable .

  5. On explique la différence entre éditeur de texte pour écrire un code source de programme et console interactive pour tester des commandes.
    Désormais on écrit nos séquences d'instructions dans des scripts ou programmes à l'aide de l'éditeur de texte, on les enregistre avec un nom pertinent dans un répertoire lui-même avec un nom pertinent du type chapitre2-programmation ...
  6. Pour préciser la notion de variable et son implémentation en Python, on fait l'exo 1 page 4 du poly.

  7. On introduit la distinction typage statique / dynamique et on présente les principaux types simples de Python : int, float, str, bool .

  8. On définit une construction de sortie écran print et une d'entrée clavier input. On précise bien qu'input retourne une chaine de caractères qu'il faut convertir en entier si on veut récupérer un entier. Tester les codes ci-dessous et comprendre les résultats :

  9. On explique comment insérer un commentaire dans le code source d'un programme en préfixant la ligne avec un #

  10. Les plus rapides peuvent traiter l'exo 2 sur l'échange ou la permutation circulaire des valeurs de 2 ou 3 variables (juste la question 1).

  11. On définit les structures conditionnelles en Python sur un exemple (calcul de l'age à partir de la date de naissance). On introduit la conversion de type et on fait le point sur l'indentation qui n'a pas seulement un role de présentation en Python.

    Le même programme en Javascript :

  12. Ce qu'il faut retenir de la séance :
    • Définition d'un langage de programmation : langage muni d'une syntaxe compréhensible par la machine, les langages de haut niveau comme Python ou C doivent etre traduits en langage machine par un interpréteur ou un compilateur.
    • Syntaxe des principaux opérateurs mathématiques en Python.
    • Différence entre éditeur de texte (pour écrire un programme) et la console (tester des commandes) pour parler à l'interpréteur Python.
    • Afficher une valeur avec print ou capturer une valeur avec input (Entrées/Sorties)
    • Notion de variable en Python : correspondance entre un nom et une valeur (ou objet). Les variables sont typées mais le typage est dynamique en Python.
    • Structure conditionnelle en Python.
Travail à faire pour la prochaine séance :

Séance du 28/09/2015

Découverte du langage de programmation Python, premier Chapitre sur la programmation :
  1. Inscription sur le planning des exposés que je fais circuler.
  2. On se logue sur le réseau et on lance Pyzo environnement de développement pour Python.
  3. On travaille avec le poly du chapitre Programmation 1 que j'ai distribué, la dernière version du cours est disponible en ligne sur mon site
  4. Strutures conditionnelles : correction des exos 3 (résolution de l'équation du second degré), exos 5 (IMC) du poly.
  5. On teste les structures de boucle disponibles en Python avec l'exo 7.
  6. On définit la structure de boucle for en Python, on fait l'exo 8.

  7. Voici une boucle for calculant \(\sum_{k=1}^{n}\frac{1}{k}\).

  8. Pour information, voici une boucle for calculant \(\sum_{k=1}^{10}k^4\) en Javascript.

  9. Structure de boucle while en Python lire la définition 6 page 11 et l'exemple 2 : ci-dessous un corrigé de l'exercice 12 1) (algorithme de seuil).

  10. Pour information, voici une boucle while calculant la somme \(\sum_{k=1}^{10}k^4\) entiers en Javascript.

  11. Travail sur les boucles avec Rurple : on dirige un petit robot qui peut se déplacer sur une scène. Le robot Rurple comprend le langage Python plus quelques fonctions spécifiques lui permettant d'avancer, tourner etc ...
    On fait en classe les exercices 13 et 14 et on traite la première question de l'exo 15.
  12. Ce qu'il faut retenir de la séance :
    • Structure conditionnelle en Python.
    • Structure de boucle for et while : savoir refaire les exemples des exercices 13 et 14 avec Rurple (disponible ici ) .
    • Tous les codes Python dans les iframes doivent être testés et compris !!!
Travail à faire pour la prochaine séance :

Séance du 12/10/2015

Découverte du langage de programmation Python, premier Chapitre sur la programmation :
  1. Inscription sur le planning des exposés que je fais circuler.
  2. On se logue sur le réseau et on lance Pyzo environnement de développement pour Python.
  3. On travaille avec le poly du chapitre Programmation 1 que j'ai distribué, la dernière version du cours est disponible en ligne sur mon site
  4. Retour du DM n°1 avec son corrigé.
  5. Boucles en Python :
    • Boucle for : exercice 9 questions 1), 2) et 3)

    • Boucle while : exercice 12 pages 11 et 12 du poly.
  6. Distribution du poly du chapitre Programmation 2, la dernière version du cours est disponible en ligne sur mon site et l'archive complète du chapitre est téléchargeable ici (ou sur la Dropbox).
  7. Distribution du sujet du DM N°2 à rendre au plus tard le mardi 10 novembre.
    Pour traiter ce sujet, il faudra lire les pages 1 à 13 du poly de cours du chapitre Programmation 2 (voir ci-dessus).
    Lorsqu'on a besoin d'utiliser plusieurs fois le même bloc d'instructions dans un programme, on définit une fonction avec la syntaxe suivante :
            def fonction(parametre1, parametre2, ...):
                bloc d'instructions
                return valeur
            
    Après le mot clef def, vient le nom de la fonction puis une parenthèse avec une liste de paramètres formesl, puis un bloc d'instructions dépendant des paramètres et enfin l'instruction return suivie d'une valeur retournée vers le programme principal.
    La fonction est définie au début du programme principal et lorsqu'on l'appelle, on remplace les paramètres formels par les arguments constitués d'expressions dépendant des constantes et des variables définies dans le programme principal.
    • Le code ci-dessous utilise une fonction bonjour(n) qui ne retourne rien soit la valeur None et qui affiche un message qui dépend de l'argument passé à la fonction.

    • Le code ci-dessous affiche le premier terme égal à \(1\) de la suite de Syracuse définie par un premier terme \(u_{0}\) saisi par l'utilisateur et la relation de récurrence \( \begin{cases} u_{n+1}=\frac{u_n}{2} \text{ si }u_{n} \text{ est pair} \\ u_{n+1}=3u_{n}+1\text{ si }u_{n} \text{ est impair}\end{cases}\).

  8. DS n° 1 (durée 40 minutes).
  9. Ce qu'il faut retenir de la séance :
    • Structure conditionnelle en Python.
    • Structure de boucle for : savoir refaire les exemples de l'exercice 9 (calcul d'une somme \(\sum_{k=1}^nk\).
    • Structure de boucle while : savoir programmer un algorithme de seuil avec la somme des cubes ou des carrés.
Travail à faire pour la prochaine séance :

Vacances de Toussaint


Séance du 02/11/2015

Second Chapitre sur la programmation en Python :
  1. Inscription sur le planning des exposés que je fais circuler.
  2. On se logue sur le réseau et on lance Pyzo environnement de développement pour Python.
  3. Retour du DS n°1 avec son corrigé et rattrapage par les élèves ayant participé au voyage en Grèce.
  4. Le point sur les binômes pour le DM n°2.
  5. On travaille avec le poly du chapitre Programmation 2, la dernière version du cours est disponible en ligne sur mon site .
  6. Notion de fonction. Lorsqu'on a besoin d'utiliser plusieurs fois le même bloc d'instructions dans un programme, on définit une fonction avec la syntaxe suivante :
            def fonction(parametre1, parametre2, ...):
                bloc d'instructions
                return valeur
            
    Après le mot clef def, vient le nom de la fonction puis une parenthèse avec une liste de paramètres formesl, puis un bloc d'instructions dépendant des paramètres et enfin l'instruction return suivie d'une valeur retournée vers le programme principal.
    La fonction est définie au début du programme principal et lorsqu'on l'appelle, on remplace les paramètres formels par les arguments constitués d'expressions dépendant des constantes et des variables définies dans le programme principal.
    • exemple 4 : fonctions donnant le maximum de deux ou trois entiers
    • exercice 10 (prévoir la valeur de retour d'une fonction)
    • les trois premières questions de l'exercice 11 (calcul de somme ou du terme de rang n d'une suite), attention la question 2 a été modifiée par rapport au poly distribué en classe.
  7. Ce qu'il faut retenir de la séance :
    • Savoir programmer une fonction retournant le terme de rang \(n\) dune suite récurrente (exo 11).
Travail à faire pour la prochaine séance :

Séance du 09/11/2015

Second Chapitre sur la programmation en Python :
  1. Exposé n°1 : certificats SSL.
  2. On se logue sur le réseau et on lance Pyzo environnement de développement pour Python.
  3. On travaille avec le poly du chapitre Programmation 2, la dernière version du cours est disponible en ligne sur mon site .
  4. Travail sur le type de donnée str permettant de représenter les caractères et chaines de caractères (voir pages 1 à 4 du poly) : ouvrir une console Python interactive dans un terminal puis exécuter la liste de commandes de l'exemple 1.
    En classe nous avons travaillé sur un exemple comme ci-dessous :
  5. En pages 2 et 3 du poly, se trouve une liste des méthodes de manipulation de chaînes de caractères et une présentation des méthodes de formatage de chaînes : à consulter chez soi ...
  6. Un peu de programmation avec les chaînes de caractères : on traite la question 1 de l'exercice 1 (compter les espaces ou n'importe quel caractère dans une chaine, reprogrammation de la méthode count des chaînes de caractères) puis l question 6 (inversion de chaine) et la question 7 (tester si une chaine et un palindrome).
  7. On passe au paragraphe 1.2 sur les listes (ou tableaux), on lit la définition 2 page 5.
  8. Pour la manipulation de listes on peut lire l'exemple du paragraphe Méthode de la page 7. En classe, on a testé l'exemple ci-dessous.
  9. A propos des listes : objets mutables et la façon dont ils sont copiés, on fait l'exo 0 page 6 de la nouvelle version du cours en utilisant le testeur de code Python en ligne disponible sur le site pythontutor.com .
    On peut refaire cet exercice ci-dessous :
  10. Un peu de programmation avec des listes (ou tableaux) à une dimension : exo 3 question 1 : recherche du maximum (ou du minimum) dans un tableau d'entiers puis calcul de somme (exo 12 question 5), calcul de moyenne (exp 12 question 7) et échange de deux éléments d'un tableau (exo 12 question 1).
  11. Ce qu'il faut retenir de la séance :
    • Une chaine de caractères peut être manipulée à l'aide de méthodes; la liste de ces méthodes s'obtient avec dir(chaine)
    • Une chaine de caractères est un objet itérable, on peut la parcourir avec une boucle for
    • Savoir écrire une fonction qui inverse une chaine de caractères.
    • Une liste contient une référence vers un tableau contenant les données proprement dites. Lorsqu'on copie le contenu d'une variable de type liste, on ne copie que cette référence.
    • Avoir bien compris l'algorithme de recherche du maximum d'un tableau d'entiers.
Travail à faire pour la prochaine séance :

Séance du 16/11/2015

Second Chapitre sur la programmation en Python :
  1. On se logue sur le réseau et on lance Pyzo environnement de développement pour Python.
  2. On travaille avec le poly du chapitre Programmation 2, la dernière version du cours est disponible en ligne sur mon site et l'archive complète du chapitre a été envoyée par mail.
    Attention, une toute nouvelle version du poly de cours est disponible, les pages 11 à 16 sont distribuées (numérotation des exercices légèrement modifiée, un exercice en moins et un en plus).
  3. Ecriture de fonctions pour manipuler des listes/tableaux, des chaines ou des fichiers. Attention numérotation de la dernière version du poly :
    • Exo 11, question 5 : sommes cumulées d'un tableau.
    • Exo 11, question 9, recherche séquentielle. L'algorithme doit etre connu par coeur.
    • Exo 11, question 12, histogramme des lettres dans un mot et test d'anagrammes.
  4. Entrainement pour le DS n°2 : fiche de révisions.
  5. Ce qu'il faut retenir de la séance :
    • L'algorithme de recherche séquentielle d'un élément dans une séquence est essentiel et doit être connu par coeur (il s'applique indifféremment à la recherche d'un caractère dans une chaine ou d'un élément dans une liste). Contrairement à la recherche dichotomique, la séquence n'a pas besoin d'etre ordonnée.
    • Avoir bien compris l'algorithme de recherche du maximum d'un tableau d'entiers.
Travail à faire pour la prochaine séance :

Séance du 23/11/2015

Second Chapitre sur la programmation en Python :
  1. DS n°2 sur la programmation en Python (sauf les tableaux).
  2. On se logue sur le réseau et on lance Pyzo environnement de développement pour Python.
  3. On travaille avec le poly du chapitre Programmation 2, la dernière version du cours est disponible en ligne sur mon site et l'archive complète du chapitre a été envoyée par mail.
  4. Ecriture de fonctions pour manipuler des listes/tableaux, des chaines ou des fichiers. Attention numérotation de la dernière version du poly :
    • Exo 12, questions 1 à 3, tableaux à deux dimensions.

      Parcours d'un tableau )à deux dimensions ligne par ligne (fonction affichage1) ou colonne par colonne (fonction affichage2)

Travail à faire pour la prochaine séance :

Séance du 30/11/2015

Fin du second Chapitre sur la programmation en Python et chapitre court sur le codage des caractères.
  1. Retour du DS n°2 sur la programmation en Python (sauf les tableaux).
  2. On se logue sur le réseau et on lance Pyzo environnement de développement pour Python.
  3. On travaille avec le poly du chapitre Programmation 2, la dernière version du cours est disponible en ligne sur mon site et l'archive complète du chapitre a été envoyée par mail.
  4. Portée des variables et espace de nommage
    • Faire l'exo 17 page 18 puis lire la définition 4 et les propriétés 1.
    • Faire l'exo 18.
    • L'exemple ci-dessous illustre bien les notions d'espaces de nommage global ou local (aka la portée des variables en Python) :
    • Passage par référence/passage par valeurs, différence entre les types simples (entiers) ou composites (listes), lire la propriété 2 et pour ceux qui ont le temps faire l'exo 21 p.21.
      L'exemple ci-dessous illustre la différence entre le passage de paramètres effectifs de type entier ou de type liste avec la problématique de l'échange de valeurs.
  5. Récursivité :
    • Faire l'exemple 7 (puissance récursive). Le code est ci-dessous, testez le pour voir les appels récursifs de la fonction.
    • Faire l'exercice 25.
    • Pour les plus rapides, faire l'exercice 26 (Suite de Fibonacci). Le code est ci-dessous, testez le et essayez de comprendre comment s'effectuent les appels récursifs.
  6. Chapitre 4 : Codage de caractères :
    Pour télécharger l'archive zip du chapitre, cliquer ici.
    • Définition du charset (ou code point) et de l'encodage.
    • Un peu d'histoire : du charset ASCII avec encodage sur 1 octet (mais 7 bits utilisés), aux différentes variantes de la norme ISO 8859 encodées sur un octet jusqu'à l'Unicode norme universelle qui a pour but d'associer à tous les caractères de tous les alphabets un code point et qui est encodé sur polusieurs octets.
    • Correction des exercices 2 (codage en binaire d'un texte avec un convertisseur texte/binaire/hexa en ligne) et 3 (codes points en Python et chiffrement d'un texte avec rot13 ).
      Faire l'exo5 (précision de l'encodage dans une balise meta pour une page web), pour plus d'informations sur le problème de l'encodage des pages web on pourra consulter cet article :
      • cliquer sur ce lien pour ouvrir une page encodée en Windows-1252 avec encodage précisé dans une balise meta
      • cliquer sur ce lien pour ouvrir la même page sans précision de l'encodage dans une balise meta
      S'il n'y a aucune différence d'affichage, c'est que le serveur HTTP est bien configuré et envoie l'information sur l'encodage au navigateur (dans les Header HTTP) ou encore que le navigateur détecte automatiquement l'encodage (en somme préciser l'encodage dans une balise meta n'est plus vraiment nécessaire). On peut voir ce qu'il se passe dans le cas contraire en modifiant l'encodage du navigateur (qui doit être réglé sur Windows-1252 pour cette page).
    • Exo10 (encodage avec Python, on utilise la méthode encode qui transforme une chaine de caractères en objet de type bytes, soit un flux d'octets, on peut ainsi voir la différence entre différents types d'encodage sur un octet comme Windows cp1252 ou ISO-88859-15 ou sur plusieurs octets comme UTF-8).
    • >>> chaine = 'à un euro € près'
      >>> chaine_latin15 = chaine.encode('iso-8859-15') ; print(chaine_latin15)
      b'\xe0 un euro \xa4 pr\xe8s'
      >>> chaine_latin15 = chaine.encode('cp1252') ; print(chaine_latin15)
      b'\xe0 un euro \x80 pr\xe8s'
      >>> chaine_latin15 = chaine.encode('utf-8') ; print(chaine_latin15)
      b'\xc3\xa0 un euro \xe2\x82\xac pr\xc3\xa8s'
       
  7. Ce qu'il faut retenir de la séance :
    • Comprendre les exercices 17 et 18 sur les passages de parametres a  une fonction. Connaitre la distinction entre espace de nommage local et espace de nommage global.
    • Connaitre la distinction entre algorithme itératif et algorithme récursif.
      Savoir écrire une fonction récursive simple comme la fonction factorielle, la fonction puissance.
    • Connaitre les notions de charset et d'encodage ainsi que l'évolution du codage des caractères : du code ASCII à  l'Unicode. Savoir utiliser les primitives ord() et chr() de Python.
    • Etre conscient d'éventuels problèmes de codecs lors de l'ouverture de fichiers textes comme des pages web ou des fichiers de données : notion de portabilité des fichiers.
Travail à faire pour la prochaine séance :

Séance du 07/12/2015

  1. Exposé de Quentin et Haris.
  2. Chapitre 5 : Représentation d'images

    La dernière version du poly de cours se trouve sur mon site et l'archive avec les images et quelques fichiers python pour débuter peut être téléchargée ici .
  3. Définition et résolution d'une image : exo 1 Question 1)
  4. Représentation vectorielle d'une image : le format SVG, exo 2.
  5. Représentation bitmap d'une image, quelques exemples de formats primitifs de type PPM :
    • Un exemple de représentation bitmap d'une image en noir ou blanc dans un fichier texte : exo 3, le format PBM P5.
    • Un exemple de représentation bitmap d'une image en niveaux gris dans un fichier binaire cette fois : le format PGM P5, exo 5.
      Edition d'un fichier binaire avec un éditeur hexadécimal (logiciel HxD disponible depuis le partage commun sur le réseau).
    • Un exemple de représentation bitmap d'une image en couleurs avec le format de fichier PPM P3, exo 7
    • Représentation d'une image couleur avec le système RGB, profondeur d'une image
  6. Quelques généralités sur la notion de format de fichier (définition et propiété 1 page 5 du poly) : binaire ou texte, en-tête et méta données, format libre ou propriétaire.
  7. Travail sur les exercices d'une fiche de TP : l'énoncé et les fichiers Python élève et corrigé se trouvent ici
  8. Ce qu'il faut retenir de la séance :
    • Connaître la différence entre une représentation d'image vectorielle ou bitmap .
      Savoir qu'une image numérique est un échantillonnage, une discrétisation de l'image réelle.
    • Savoir déterminer la définition et la résolution d'une image bitmap.
    • Savoir que les niveaux de gris sont codés sur une échelle de 0 à 255 (soit un octet).
    • Connaitre le système de représentation RGB des images couleurs (qui s'appuie sur une synthèse additive ) et la notion de profondeur d'une image en RGB.
    • Connaître la distinction en un fichier texte et un fichier binaire et la notion de format de fichier (un en-tête précisant les dimensions, le codage et avec éventuellement des meta-données) .
Travail à faire pour la prochaine séance :

Séance du 14/12/2015

  1. Exposé de Tamill et Adrian sur Tor browser et l'anonymat sur internet.
  2. Chapitre 5 : Représentation d'images

    La dernière version du poly de cours se trouve sur mon site et l'archive avec les images et quelques fichiers python pour débuter peut être téléchargée ici .
  3. Représentation d'une image couleur avec le système RGB, profondeur d'une image, poly page 5.
  4. Tutoriel sur Pygame pour préparer le DM n°4 : une version html du tutoriel se trouve ici .
  5. Ce qu'il faut retenir de la séance :
    • Connaître la différence entre une représentation d'image vectorielle ou bitmap .
      Savoir qu'une image numérique est un échantillonnage, une discrétisation de l'image réelle.
    • Savoir déterminer la définition et la résolution d'une image bitmap.
    • Connaitre le système de représentation RGB des images couleurs (qui s'appuie sur une synthèse additive ) et la notion de profondeur d'une image en RGB.
Travail à faire pour la prochaine séance :

Vacances de Noel


Séance du 04/01/2016

  1. Retour du DM N° 3 (les compte rendus de correction ont été envoyés par mail) et le point sur les groupes pour le DM n°4.
  2. Chapitre 5 : Représentation d'images

    La dernière version du poly de cours se trouve sur mon site et l'archive avec les images et quelques fichiers python pour débuter peut être téléchargée ici .
  3. Représentation d'une image couleur avec le système RGB, profondeur d'une image, poly page 5.
  4. Quelques généralités sur la notion de format de fichier (définition et propiété 1 page 5 du poly) : binaire ou texte, en-tête et méta données, format libre ou propriétaire.
  5. Travail sur les exercices du TP Image n°1 distribué la semaine dernière : l'énoncé et les fichiers Python élève et corrigé se trouvent ici
  6. TP Image n°2 : traitement d'image, applications de différents filtres (négatif, éclaircir/assombrir, augmenter/diminuer le contraste, seuiller). L'énoncé et les fichiers Python élève et corrigé se trouvent ici .
    Dans les deux fiches de TP, on utilise les modules/bibliothèques PIL, numpy et matplotlib.pyplot mais de façon transparente, les fonctions de bibliothèques utilisées sont encapsulées dans des fonctions maison fournies dans les fichiers élèves.
  7. TP Image n°3 : sucre syntaxique (listes en compréhensions), seuillage, érosion, dilatation. Le matériel est disponible dans le répertoire ISN du réseau intranet du lycée ou dans le lien envoyé par mail.
  8. Ce qu'il faut retenir de la séance :
    • Connaitre le système de représentation RGB des images couleurs (qui s'appuie sur une synthèse additive ) et la notion de profondeur d'une image en RGB.
    • Savoir refaire tous les exercices de la fiche de TP Image n° 1.
    • Maitriser l'algorithme d'application d'une fonction de filtre aux pixels d'une image bitmap en niveaux de gris, vue dans le TP Image n°2.
Travail à faire pour la prochaine séance :

Séance du 11/01/2016

    Chapitre 5 : Représentation d'images

    La dernière version du poly de cours se trouve sur mon site et l'archive avec les images et quelques fichiers python pour débuter peut être téléchargée ici .
  1. TP Image n°3 : sucre syntaxique (listes en compréhensions), seuillage, érosion, dilatation. Le matériel est disponible dans le répertoire ISN du réseau intranet du lycée ou dans le lien envoyé par mail.
  2. DS n°3 : bilan sur la programmation en Python.
  3. Ce qu'il faut retenir de la séance :
    • Savoir utiliser les listes en compréhension.
Travail à faire pour la prochaine séance :

Séance du 18/01/2016

    Chapitre 5 : Représentation d'images

    La dernière version du poly de cours se trouve sur mon site et l'archive avec les images et quelques fichiers python pour débuter peut être téléchargée ici .
  1. Exposé de Matthieu-Charlotte- Marius sur les langages du Web PHP et Javascript.
  2. TP Image n°3 : seuillage, (érosion, dilatation malheureusement pas traitées). Le matériel est disponible dans le répertoire ISN du réseau intranet du lycée ou dans le lien envoyé par mail.
  3. Chapitre 6 Représentation des nombres

    Tous les corrigés des exercices sont disponibles sur cette page. L'archive avec le cours et tous les fichiers nécessaires a été envoyée par mail et vous pouvez aussi la récupérer ici . En classe je vous conseille de faire les exos avec Python2 ou 3 dans Pyzo puis de vérifier ensuite les réponses.
  4. Représentation des entiers non signés : en base 2, 16 ou quelconque :
    • Transcription à la main d'une base dans une autre : algorithme de divisions en cascades pour la conversion de la base 10 à la base 2 ou 5 et nombre de chiffres en base10 (exo1).
    • Numération en base 2 : theoreme-Definition 1 page 2 pour la numération en base 2 avec la méthode page 3 (exo 6) des divisions en cascade pour la conversion de la base 10 à la base 2.
      Dans l'exo 6, écriture dune fonction lenb donnant le nombre de bits d'un entier en base 10.
  5. Ce qu'il faut retenir de la séance :
    • Savoir utiliser les fonctions d'une bibliothèque comme PIL et utiliser de façon pertinente la documentation en ligne. La documentation du module PIl est toujours en ligne ici mais sous une forme moins pratique qu'avant, je vous propose de récupérer ce pdf avec l'ancienne version de la doc .
    • Savoir écrire une fonction de seuillage d'une image avec la bibiothèque PIL.
    • L'algorithme des divisions en cascade pour convertir un entier de la base 10 à la base 2.
Travail à faire pour la prochaine séance :

Séance du 25/01/2016

    Chapitre 6 Représentation des nombres

    Tous les corrigés des exercices sont disponibles sur cette page. L'archive avec le cours et tous les fichiers nécessaires a été envoyée par mail et vous pouvez aussi la récupérer ici . En classe je vous conseille de faire les exos avec Python2 ou 3 dans Pyzo puis de vérifier ensuite les réponses.
  1. Représentation des entiers non signés : en base 2, 16 ou quelconque :
    • Travail sur les passages de la base 2 à la base 10 et réciproquement. On continue l'exercice 6.
      • Passage de la base 10 à la base 2, implémentation de l'algorithme des divisions en cascade : écriture de fonctions base10to2 et base10to2bis. La dernière retourne un tableau.
      • Ecriture d'une version récursive, la fonctionbase10to2rec.
    • A propos de la base 16 (hexadécimale) : exo 12 questions 1), 2) et 4).
    • TP additionneur binaire : ici ..
    • Ce qu'il faut retenir de la séance :
      • L'algorithme des divisions en cascade pour convertir un entier de la base 10 à la base 2.
      • Savoir programmer les fonctions Python nbchiffres et base5to10 (exo 1)
      • Savoir programmer les fonctions Python lenb2, base10to2, et base10to2bis (dans le prochain DS) de l'exo 6.
Travail à faire pour la prochaine séance :

Séance du 01/02/2016

  1. TP additionneur binaire : ici .
  2. Projet de fin d'année.
    Le document de présentation a été envoyé par mail et il est visible ici.
    • Création des groupes
    • Brainstorming : travail sur le choix et éventuellement le synopsis du projet
    • présentation des outils de gestion de projet : prise de notes paratagée avec Framapad et réalisation de carte mentale avec Framindmap.
  3. Présentation de la bibliothèque graphique Tkinter .
    Une archive avec le poly et le matériel (images, scripts etc ) est téléchargeable ici . On fait les exercices 1 et 2.
  4. Ce qu'il faut retenir de la séance :
    • Savoir programmer les fonctions Python binaire et decimale du TP additionneur binaire, ici .
Travail à faire pour la prochaine séance :

Séance du 08/02/2016

  1. Chapitre Recherche en table : séquentielle ou dichotomique
    L'archive complète du chapitre est disponible ici .
    • Recherche en table séquentielle (révision pour le codage + complexité) : exercice 1.
    • Introduction à la recherche dichotomique : le jeu du juste prix , exercice 3.
  2. Travail sur le projet de fin d'année.
    Le document de présentation a été envoyé par mail et il est visible ici.
    • Création des groupes.
    • Ouverture d'un pad par groupe sur pour commencer à travailler sur le cahier des charges : l'outil recommandé est framapad.
  3. DS n°4 sur la programmation en Python et la représentation des nombres.
  4. Ce qu'il faut retenir de la séance :
    • Savoir programmer une fonction de recherche séquentielle d'un caractère dans une chaîne de caractères ou d'un maximum dans un tableau.
Travail à faire pour la prochaine séance :

Vacances d'Hiver


Séance du 29/02/2016

  1. Retour du DS n°4 et retour du DM n°4 sur Pygame.
  2. Chapitre Recherche en table : séquentielle ou dichotomique
    L'archive complète du chapitre est disponible ici .
    • Recherche en table séquentielle : deux exercices supplémentaires.
    • Introduction à la recherche dichotomique : le jeu du juste prix , exercice 3.
    • Recherche en table par dichotomie : principe page 3 et pseudo-code page 4 puis application à la main sur un exemple (exercice 4)
    • Comparaison_Dichotomie_Sequentielle
      Complexité des recherches séquentielle et dichotomique
  3. Travail sur le projet de fin d'année.
    Le document de présentation a été envoyé par mail et il est visible ici.
    • Vérification des cahiers des charges : l'outil recommandé est framapad.
    • Réalisation d'une carte mentale présentant le synopsis du projet.
  4. Ce qu'il faut retenir de la séance :
    • Bien comprendre l'algorithme de recherche dichotomique d'une clef dans un tableau trié : savoir l'appliquer à la main comme dans l'exercice 4.
    • Connaitre les ordres de grandeur des complexités des algorithmes de recherches en table en fonction de la taille n de l'entrée : logarithmique (en ln(n)) pour la recherche dichotomique et linéaire (en n) pour la recherche séquentielle.
Travail à faire pour la prochaine séance :

Séance du 07/03/2016

  1. Chapitre Recherche en table : séquentielle ou dichotomique
    L'archive complète du chapitre est disponible ici .
    • Programmation de l'algorithme de recherche dichotomique dans un table d'entiers triée et comparaison avec un algorithme de recherche séquentielle : exercice 5 question 1). Le script à compléter s'appelle exo5_recherchedichotomique_eleve.py et se trouve dans l'archive.
    • Analyse de complexité de l'algorithme de recherche dichotomique : exercice 6 page 7 du poly. Le script à compléter s'appelle exo6_recherchedichotomique_eleve.py et se trouve dans l'archive.
    • Comparaison_Dichotomie_Sequentielle
      Complexité des recherches séquentielle et dichotomique
  2. Travail sur le projet de fin d'année.
    Le document de présentation a été envoyé par mail et il est visible ici.
    • Vérification des cahiers des charges : l'outil recommandé est framapad.
    • Réalisation d'une carte mentale présentant le synopsis du projet.
  3. Ce qu'il faut retenir de la séance :
    • Bien comprendre l'algorithme de recherche dichotomique d'une clef dans un tableau trié : savoir l'appliquer à la main comme dans l'exercice 4 et savoir le programmer pour la recherche dans un tableau d'entiers.
    • Connaitre les ordres de grandeur des complexités des algorithmes de recherches en table en fonction de la taille n de l'entrée : logarithmique (en ln(n)) pour la recherche dichotomique et linéaire (en n) pour la recherche séquentielle.
Travail à faire pour la prochaine séance :

Séance du 14/03/2016

  1. TP sur le tri par sélection . L'archive complète est disponible ici . Nous ferons ensuite un chapitre complet sur les tris, mais des compléments sont déjà disponibles : en version slide.
  2. Travail sur le projet de fin d'année.
    Le document de présentation a été envoyé par mail et il est visible ici.
    • Vérification des cahiers des charges : l'outil recommandé est framapad.
    • Travail en groupe sur le projet, passage du professeur pour faire le point ou apporter une aide ponctuelle.
    • Un pad avec des infos diverses sur les projets se trouve ici.
Travail à faire pour la prochaine séance :

Séance du 21/03/2016

  1. Travail sur le projet de fin d'année.
    Le document de présentation a été envoyé par mail et il est visible ici.
    • Vérification des cahiers des charges : l'outil recommandé est framapad.
    • Travail en groupe sur le projet, passage du professeur pour faire le point ou apporter une aide ponctuelle.
    • Un pad avec des infos diverses sur les projets se trouve ici.
  2. Ce qu'il faut retenir de la séance :
    • Bien comprendre l'algorithme de tri par sélection, savoir dérouler à la main cet algorithme pour une trier une liste d'entiers, et savoir le programmer sous la forme d'une fonction (qui modifie ou non le tableau initial, on parle de tri sur place si ce dernier est modifié).
    • Connaitre l'ordre de grandeur en n2 de la complexité de l'algorithme de tri par sélection.
Travail à faire pour la prochaine séance :

Deux séances ont été annulées avant les vacances pour cause de Bac Blanc et de Lundi de Pâques.

Vacances de Printemps.


Séance du 25/04/2016

  1. Algorithmique : tri par fusion .
    Le cours sur les algorithmes de tri est disponible sur cette page http://frederic-junier.org/ISN/Cours/CoursAlgoTri-2016V1-Web.pdf.
    Principe de l'algorithme version itérative (page 10 du poly) et déroulement de l'algorithme à la main sur de petits tableaux de taille une puissance de 2 (exercice 9 page 11).
  2. TP sur les tris par insertion et par dénombrement, archive ici
  3. Travail sur le projet de fin d'année.
    Le document de présentation a été envoyé par mail et il est visible ici.
    • Travail en groupe sur le projet, passage du professeur pour faire le point ou apporter une aide ponctuelle.
    • Un pad avec des infos diverses sur les projets se trouve ici.
  4. Ce qu'il faut retenir de la séance :
    • Savoir exécuter à la main l'algorithme de tri par fusion version itérative. .
Travail à faire pour la prochaine séance :

Séance du 02/05/2016

Travail sur le projet.

Séance du 09/05/2016

Travail sur le projet.

Séance du 16/05/2016