TCSS5AC - Info II
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 (13/03/2024)
Notions abordées : structures de données mutables (liste, ensemble), compréhensions
Programmation Objets – PEM (20/03/2024)
Notions abordées : dictionnaire. Introduction à la notion d'objet
TD sur machine : fractions et polynomes
Arbres – PEM (27/03/2024)
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 (03/04/2024)
Notions abordées : dictionnaire, fonction de hachage, linear probing, listes de collisions
TD sur machine : Hachage ouvert
Interfaces graphiques – GB (10/04/2024)
Le graphique (Swinnen) modifié par Pierre Ludmann et Guillaume Bonfante
Des exemples à voir : gui.ipynb
Notions abordées : graphisme
TD sur machine : cible et tir !
Graphes : placement – GB (15/05/2024)
Notions abordées : les graphes, structures de données
Les extraits du cours : graph.ipynb
TD sur machine : Graphes, Tutte
Graphes : structures – GB (22/05/2024)
Notions abordées : données structurées et fonctions
TD sur machine : colorations
Un peu de son – GB (29/05/2024)
N'oubliez pas de prendre vos écouteurs
Notions abordées : représentation de données, lecture de fichiers binaires
TD sur machine : The wall
Calculer sans en connaître - GB (05/06/2024)
Notions abordées : révisions, chiffrement, algèbre de polynômes
TD sur machine : Chiffrement homomorphe
Test – (12/06/2024 matin)
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 2023-2024
matin
Groupe C1 - P324 : Gabriel Sauger
Groupe C2 - P326 : Amaury Sain-Jore
Groupe C3 - B207 : Antoine Leudière
Groupe C4 - B208 : Mario Machado
Groupe C5 -B215 : Camille Lanuel
Groupe C6 -P322 : Benjamin Testard
après midi
Groupe D1 - A207 : Gabriel Sauger
Groupe D2 - A208 : Amaury Sain-Jore
Groupe D3 - B207 : Antoine Leudière
Groupe D4 - B208 : Jean Kieffer