TCSS5AC - Info II
Programmation et structures de données
Programmation et structures de données
Tronc Commun d'Informatique
Responsables :
Pierre-Etienne MOREAU, Professeur (Pierre-Etienne.Moreau@univ-lorraine.fr)
Guillaume BONFANTE, Maître de conférences (Guillaume.Bonfante@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, arbres)
constructions avancées (lambda expressions, compréhensions)
Support
Nous utilisons l'environnement de programmation Wing 101
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)
Programme
Séance 0 - PEM (à regarder en autonomie pour vous assurer que vous comprenez bien la notion de valeur et d'étiquette)
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 (26/03/2025)
Notions abordées : structures de données mutables (liste, ensemble), compréhensions
Programmation Objets – PEM (02/04/2025)
Notions abordées : dictionnaire. Introduction à la notion d'objet
TD sur machine : polynômes
Arbres – PEM (09/04/2025)
Notions abordées : arbres, grammaires, arbre de syntaxe abstraite, tests unitaires
Pour aller plus loin
installation de lark, un outil d'analyse syntaxique
réalisation d'un interpréteur BASIC
Hachage – PEM (23/04/2025)
Notions abordées : dictionnaire, fonction de hachage, linear probing, listes de collisions
TD sur machine : Hachage ouvert
Interfaces graphiques – GB (30/04/2025)
Le graphique (Swinnen) modifié par Pierre Ludmann et Guillaume Bonfante
Des exemples à voir : gui.ipynb
Notions abordées : graphisme
TD sur machine : entrelacs !
Interfaces graphiques – GB (07/05/2025)
backend
Graphes : placement – GB (14/05/2025)
Notions abordées : les graphes, structures de données
Les extraits du cours : graph.ipynb
TD sur machine : Graphes, Tutte
Graphes : structures – GB (21/05/2025)
Notions abordées : données structurées et fonctions
TD sur machine : colorations
Calculer sans en connaître - GB (28/05/2025)
Notions abordées : révisions, chiffrement, algèbre de polynômes
TD sur machine : Chiffrement homomorphe
Test – (04/06/2026 après-midi)
Pour s'entrainer, 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 2024-2025
matin
Groupe C1 - A207 : Amaury Sain-Jore
Groupe C2 - A208 : Hugo Leblond
Groupe C3 - B207 : Thomas Vinet
Groupe C4 - B208 : Khadidja-Wissal Baki
Groupe C5 - B215 : Quentin Jacqmin
après midi
Groupe D1 - A207 : Amaury Sain-Jore
Groupe D2 - A208 : Hugo Leblond
Groupe D3 - B207 : Thomas Vinet
Groupe D4 - B208 : Barbara Gendron
Groupe D5 - B215 : Victor Dubach