But du cours
Le but de ce cours est d'apprendre à programmer en réutilisant des techniques et structures de données classiques et en intégrant les contraintes de compléxité. Le langage imposé est le C, ce qui permettra une compréhension fine de la mise en oeuvre des structures de données qui sera notamment utile en embarqué.
Acquis d'apprentissage visés
- Appliquer une méthodologie et un formalisme pour concevoir et développer une application
- Écrire et réaliser des tests logiciels
Prérequis
Programmation en C et C++ de CPI (syntaxe, pointeurs, organisation des fichiers d'un programme en C ...).
Programme
Présentation générale du langage C : instructions et types de base, fonctions, pointeurs, fichiers...
- Développement du programme Développer un programme correct pour résoudre les problèmes en utilisant un processus itératif, la documentation des composants du programme et la consultation des utilisateurs du programme. Utiliser les abstractions appropriées pour faciliter l’écriture de programmes : collections, procédures, interfaces de programmation d’applications et bibliothèques. Évaluer la façon dont un programme est écrit en termes de style de programme, de comportement prévu pour des entrées spécifiques, de correction des composants du programme et de description des fonctionnalités du programme. Développer un programme en utilisant des outils adaptés aux pratiques actuelles de l’industrie : contrôle de version, hébergement de projet et services de déploiement.
- Structures de données fondamentales Écrire des programmes qui utilisent des structures de données (intégrées, de bibliothèque et définies par le programmeur) : chaînes de caractères, listes et cartes. Analyser les performances de différentes implémentations de structures de données. Décider des structures de données appropriées pour modéliser un problème donné. Expliquer le bien-fondé des structures de données choisies.
- Principes et développement des algorithmes Décrire pourquoi et comment les algorithmes résolvent les problèmes de calcul. Créer des algorithmes pour résoudre un problème de calcul. Expliquer comment les programmes mettent en œuvre les algorithmes en termes de traitement des instructions, d’exécution du programme et de processus en cours. Appliquer les concepts mathématiques appropriés à la programmation : expressions, types de données abstraites, relations de récurrence et raisonnement formel sur l’efficacité et la correction des algorithmes. Évaluer empiriquement l’efficacité d’un algorithme.
Modalités d'évaluation
Contrôles continus et évaluations pratiques.
Bibliographie
- Open data structures, Pat Morin (opensource https://opendatastructures.org/)
- Introduction to algorithms, Erik Demaine, Jason Ku, Justin Solomon <https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/>
- The C programming language. Kernighan, Brian W.;Ritchie, Dennis M. Prentice Hall, (2016)
- Data Structures and Program Design In C. Robert L. Kruse, Bruce P. Leung, Clovis L. Tondo, (1996, Pearson)
Supports
Diaporamas et fiches de travaux dirigés.