Ce cours d’Algorithmique et programmation (semestre 1) pose les bases indispensables à tout informaticien et, plus encore, à tout futur spécialiste de la cybersécurité : un analyste SOC écrit des scripts d’analyse de journaux, un administrateur automatise des contrôles, un développeur sécurisé doit comprendre comment les données sont représentées en mémoire pour éviter les débordements et les erreurs de conversion. On y apprend à formuler un algorithme en pseudo-code (langage algorithmique en français), à le traduire en langage C, à le tester et à raisonner sur son coût. Le cours couvre les types de données simples et leur lien avec la machine, les instructions simples, conditionnelles et itératives, les tableaux, les chaînes de caractères, les enregistrements, les fonctions et procédures, la récursivité, les algorithmes de recherche et de tri, ainsi qu’une introduction aux pointeurs et à la gestion dynamique de la mémoire. Les structures de données dynamiques (listes, piles, files, arbres) sont étudiées au semestre 2.
Objectifs d’apprentissage
- Écrire des algorithmes clairs en pseudo-code et les traduire en C (compilation avec gcc).
- Choisir les types adaptés en connaissant leur représentation machine (binaire, complément à deux, limites, dépassements).
- Utiliser les structures conditionnelles et itératives, les tableaux, les chaînes et les enregistrements.
- Découper un problème en fonctions et procédures (paramètres par valeur et par adresse).
- Mettre en œuvre la récursivité, la recherche séquentielle et dichotomique et les tris élémentaires, en évaluant leur complexité.
- Manipuler pointeurs et allocation dynamique en respectant les règles de sûreté mémoire.
Prérequis
Aucun prérequis formel ; une aisance avec les mathématiques du secondaire (logique, calcul) et l’usage courant d’un ordinateur est souhaitable.
Plan du cours
- Introduction à l’algorithmique : types simples, opérateurs et instructions simples
- Les instructions conditionnelles et itératives
- Tableaux, chaînes de caractères, enregistrements et sous-programmes
- Récursivité, recherche, tris et gestion dynamique de la mémoire
Modalités d’évaluation
Volume horaire : 20 h de CM, 10 h de TD, 10 h de TP et 40 h de TPE ; 4 crédits. Évaluation : contrôle continu (TD, comptes rendus des TP guidés, quiz en ligne) pour 40 % et examen terminal écrit (algorithmes à rédiger et à dérouler) pour 60 %.
Bibliographie
- T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Algorithmique (trad. fr. de Introduction to Algorithms), Dunod.
- B. W. Kernighan, D. M. Ritchie, Le langage C : norme ANSI, Dunod.
- C. Delannoy, Programmer en langage C, Eyrolles.
- D. E. Knuth, The Art of Computer Programming, vol. 1 et 3, Addison-Wesley.
- SEI CERT, SEI CERT C Coding Standard, Carnegie Mellon University (en ligne).
