L'objectif de ce cours est de doter les élèves d'un solide socle de connaissances fondamentales en ce qui concerne la conception des algorithmes, la preuve de leur correction, l'analyse de leur complexité, et plus généralement la conception et la réalisation de systèmes logiciels.
L'informatique est d'une part une discipline scientifique à part entière, d'autre part un puissant outil, exploité par toutes les disciplines, y compris l'informatique elle-même.
Ce cours constitue une introduction approfondie aux notions fondamentales de l'informatique, aussi bien scientifiques que techniques. Il s'adresse à ceux qui s'intéressent à l'informatique pour elle-même comme à ceux qui s'y intéressent en tant qu'outil.
Ce cours enseigne d'abord l'algorithmique, c'est-à-dire la science de la résolution systématique des problèmes et de l'organisation efficace des données. L'accent est mis sur la conception des algorithmes et sur l'analyse de leur efficacité. Un petit nombre de concepts et de techniques fondamentaux, qui sont exploités dans de nombreuses situations, sont présentés.
De plus, ce cours est conçu comme un approfondissement de la pratique de la programmation. Le langage Java est utilisé tout au long du cours, pour les travaux dirigés sur machine et pour un projet de programmation réalisé en binôme. Ceci se double d'une réflexion théorique à propos de la programmation: on propose une introduction au test et à la preuve de programmes ainsi qu'une introduction à la programmation concurrente.
Ce cours est un pré-requis général pour accéder à tous les cours d'informatique en année 3 à l'exception du PA bio-informatique.
Niveau requis : En principe, il est nécessaire d'avoir suivi INF321 ou (INF311 et INF421).
Il n'est pas nécessaire d'avoir suivi INF422 ou INF423.
Modalités d'évaluation : Deux contrôles classants par écrit.
Un projet de programmation réalisé seul ou en binôme.
Dernière mise à jour : mercredi 20 juin 2012


