IN101 : Algorithmique et programmation

Année : 1A
Module : TC
Crédits ECTS : 4

English version
Professeurs :
Matthieu FINIASZ ; Pierre-Alain FOUQUE
Maîtres de conférences :
Fabien GALAND ; Céline BLONDEAU ; Tristan DAGOBERT ; Laurent CHAVAUDREY ; Matthieu FINIASZ ; Pierre-Alain FOUQUE ; Léo DUCAS
Objectifs

Mots-clés

Pré-requis et débouchés

Bibliographie, liens, supports

Contrôle de connaissances


Programmation détaillée


dernière mise à jour : 19/08/2010 par finiasz

Contrat Creative Commons
Objectifs :
Le but de tout programme informatique est de « traiter » un ensemble d'informations afin d'obtenir un résultat. L'algorithmique est la science qui étudie les méthodes permettant d'effectuer de tels calculs. L'idée sous-jacente est que pour résoudre un problème efficacement, il vaut bien mieux s'intéresser au schéma de calcul employé plutôt que de chercher à programmer de manière très optimisée une méthode simple mais inefficace.

L'étude et la conception d'algorithmes allant de pair avec leur implantation effective sur machine, ce cours forme aussi les élèves aux bases de la programmation, avec comme application une introduction au célèbre langage C, ainsi qu'aux moyens mis à la disposition du programmeur (emacs, gcc, etc).

Dans ce cours, nous définirons tout d'abord ce que l'on entend par « efficace ». Pour cela, nous poserons les bases de la théorie de la complexité dont le but est d'étudier les performances intrinsèques des algorithmes, i.e. indépendantes des machines employées et de la qualité de la programmation. Nous étudierons ensuite les principales structures de données qui sont la base de tout algorithme efficace : listes chaînées, arbres, graphes, etc. Pour chacunes de ces structures, nous nous intéresserons aux algorithmes élémentaires de parcours qui lui sont associés ainsi qu'à des exemples d'applications pratiques.

L'objectif de ce cours est de fournir une vision différente de la programmation qui ne doit pas être réduite à son aspect purement syntaxique, souvent déroutant pour un débutant. Un bon programmeur doit certes maîtriser les aspects techniques de la programmation mais une approche algorithmique doit impérativement précéder la réalisation de tout projet d'envergure. Ce cours s'adresse donc à tout élève ingénieur qui devra, au cours de sa carrière professionnelle, participer à l'élaboration de logiciels, que ce soit comme informaticien ou non.

Les documents pédagogiques mis à votre disposition dans les pages de l'ENSTA le sont dans les limites prévues par la licence Creative Commons