Ce cours vous fera découvrir différents aspects de la conception d'un programme. Au travers de nombreuses études de cas, nous mettrons en exergue les structures de données et les algorithmes permettant d'apporter des solutions. Comme souvent en informatique, il n'existe pas de solution unique et nous serons amenés à découvrir différentes classes d'algorithme et à les comparer.
Nous introduirons à cet effet la notion de complexité d'un programme, c'est à dire à la fois une estimation du temps d'exécution de votre programme et de l'espace requis par celui-ci. Il est tentant de croire que le "meilleur" programme est celui qui minimise le temps d'exécution mais très souvent cette complexité est contrainte par la mémoire dont vous disposez. Ainsi, vous n'utiliserez peut-être pas le même algorithme selon que votre programme s'exécute sur un ordinateur ou un téléphone !
Nous introduirons à cet effet la notion de complexité d'un programme, c'est à dire à la fois une estimation du temps d'exécution de votre programme et de l'espace requis par celui-ci. Il est tentant de croire que le "meilleur" programme est celui qui minimise le temps d'exécution mais très souvent cette complexité est contrainte par la mémoire dont vous disposez. Ainsi, vous n'utiliserez peut-être pas le même algorithme selon que votre programme s'exécute sur un ordinateur ou un téléphone !