TCSS5AC - Info I
Programmation et structures de données
Tronc Commun d'Informatique
Responsables :
Pierre-Etienne MOREAU, Professeur (Pierre-Etienne.Moreau@univ-lorraine.fr)
Pascal VAXIVIERE, Professeur ENSAM (Pascal.Vaxiviere@univ-lorraine.fr)
Durée du module : 30 heures
Crédits ECTS : 3.5
Objectif général : apprendre à concevoir des algorithmes et à les programmer
Syllabus : TCSS5AC
Contenu
caractéristiques d'un langage de programmation
algorithmique de base
type de données élémentaires (entiers, chaines, tuples), modèle mémoire, espace de noms et instructions
entrées-sorties, fichiers, interfaces graphiques
structures de données avancées (ensembles, dictionnaires, listes)
constructions avancées (lambda expressions, compréhensions)
Support
Nous utilisons l'environnement de programmation Wing 101 qui est bien adapté à l'enseignement à un public débutant.
Nous utilisons deux livres comme support de cours :
Informatique pour tous en classes préparatoires aux grandes écoles (Wack et al.), chapitres 1 à 6 pour la première partie du cours
Apprendre à programmer avec Python (Swinnen), chapitres 7 à 12 pour la deuxième partie du cours
Pour s'entrainer :
CodingBat (Nick Parlante, Stanford)
Pour approfondir :
D'autres liens intéressants :
Pourquoi enseigner Python ?
Un lien sur les bonnes pratiques : python-guide.readthedocs.org
Un site pour apprendre l'algorithme et la programmation : cours et exercices à résoudre
Programme
Passerelle informatique - PEM (22/09/2021 matin et 23/09/2021 après midi)
Notions abordées : langage de programmation, interprétation compilation, variable, type de donnée élémentaire (int, float, string, tuple, list), conditions booléennes, typage dynamique, instructions, variables, tests, boucles, tableaux, fonctions, passage de paramètres
Correspond aux chapitres 3, 4 et 5 (Wack et al., lecture du chapitre 1 conseillée, 2 optionnelle)
Structures de données avancées – PEM (01/10/2021)
Notions abordées : structures de données mutables (liste, ensemble), compréhensions
corrigé : scrabble.py
Programmation Objets – PEM (08/10/2021)
Notions abordées : dictionnaire. Introduction à la notion d'objet
TD sur machine : fractions et polynomes
corrigés : fraction.py, test_fraction.py
Listes – PEM (15/10/2021)
Notions abordées : listes chaînées
corrigés : linkedlist.py, test_linkedlist.py
Hachage – PEM (22/10/2021)
Notions abordées : dictionnaire, fonction de hachage, linear probing, listes de collisions
TD sur machine : Hachage ouvert
corrigés : hashtable.py, frenchssaccent.dic
Arbres - PEM (05/11/2021)
Notions abordées : arbre, Arbre Binaire de Recherche, grammaire, Arbre de Syntaxe Abstraite
TD sur machine : Arbres et Expressions
Interactions – PV (12/11/2021)
Lire le chapitre 8 pp 80 à 90 (Swinnen)
Notions abordées : graphisme
TD sur machine : cible et tir ! premier dessin dans une fenêtre - Jeu sur un damier premier jeu avec modélisation
Interfaces graphiques – PV (19/11/2021)
Lire le chapitre 9 pp 107-115 (Swinnen)
Notions abordées : Lecture de fichier
graphisme avancé, représentation numérique de l'information
TD sur machine : mini paint (Vous devez télécharger les exemples ci-dessous)
Smiley (cliquez pour télécharger le fichier)
Smiley triple (cliquez pour télécharger le fichier)
Mines (cliquez pour télécharger le fichier)
Séance de soutien - (26/11/2021 matin)
Transformation de données numériques – PV (03/12/2021)
Notions abordées : consolidation des notions acquises, transformation de l'information
TD sur machine : fonctions avancées de mini paint (blur, edge detection)
Smiley gris (cliquez pour télécharger le fichier)
Smiley triple gris (cliquez pour télécharger le fichier)
Mines gris (cliquez pour télécharger le fichier)
Compréhensions et dictionnaires – PV (10/12/2021)
Notions abordées : données structurées et fonctions
TD sur machine : voyageur de commerce et coordonnées de Lambert
Un document sur Shadertoy
Test – (17/12/2021 matin)
Pour les révisions, des sujets commentés. Essayez de réaliser le code avant de vous jeter sur les solutions proposées...
departement_france.json (cliquez pour télécharger le fichier)
Ariege-Aveyron.json (cliquez pour télécharger le fichier)
Séance d'entrainement : implantation d'un interpréteur pour le langage BASIC
Préparation du TD : Installation de lark, basic_parser.py
TD sur machine : Arbres et Interprétation
Niveau requis
Savoir utiliser un ordinateur et son système d'exploitation (système de fichiers, répertoires, disque partagé, etc.)
Savoir ouvrir une page web, savoir compresser et décompresser un répertoire, savoir utiliser un éditeur de texte
Niveau à atteindre
Connaitre le vocabulaire permettant de caractériser un langage de programmation (interprété, compilé, portée des variables, typage, instructions, etc.)
Comprendre la sémantique des constructions d'un langage
Être capable de choisir des structures de données adéquates pour résoudre un problème
Être capable de décrire un algorithme pour résoudre un problème
Être capable de modéliser de l'information sous forme de structures de données
Être capable de programmer un algorithme dans un langage de programmation (Python)
Modalité d'évaluation
Réalisation d'exercices en séance de TD
Évaluation individuelle à la fin du module : sous la forme d'une colle, exercice d'algorithmique simple à résoudre, à programmer sur ordinateur et à présenter au chargé de TD.
Groupes de TD - année 2021-2022
matin
Groupe B1 - A207 : Paul Caillon
Groupe B2 - A208 : Pierre Ludman
Groupe B3 -B207 : Alexandre Guernut
Groupe B4 - B208 : Antoine Leudière
Groupe B5 - B215 : Guillaume Moroz
après midi
Groupe A1 - A207 : Paul Caillon
Groupe A2 - A208 : Pierre Ludman
Groupe A3 - B207 : Alexandre Guernut
Groupe A4 - B208 : Antoine Leudière
Groupe A5 - B215 : Haetham Al Aswad