Ce cours a comme objectif d’apprendre aux étudiants les différentes structures de données et leurs opérations de base. En résumé, c’est faire découvrir aux étudiants une boite à outils qui contient plusieurs concepts et leurs apprendre à choisir une structure de données qui modélise un problème donné.  On commence par découvrir la notion de complexité algorithmique, cette dernière permet aux étudiants de comparer les algorithmes. Et leurs apprendra à choisir une solution qui soit plus optimisée selon le critère de nombre d’instructions.  Après, pour valider ces concepts, l’étudiant découvre dans le deuxième chapitre les algorithmes de tri. Connus comme un problème classique en algorithmique, l’étudiant arrivera à distinguer entre les différentes stratégies de tri, ainsi que la complexité de chacune. Le troisième chapitre permet aux étudiants de revoir le concept de structure de données linéaire avec les listes chaînées. Ceci leurs permet de bien maîtriser la gestion de mémoire, avec l’allocation dynamique de mémoire pour créer et supprimer des éléments d’une liste. L’étudiant découvrira les structures arborescentes avec le chapitre dédié aux structures de données hiérarchiques. En se basant sur des problèmes et des exemples réels, il arrivera à bien apprendre à modéliser un problème en utilisant un arbre, ainsi que les opérations de base, à savoir, création, niveau, hauteur d’un arbre, les parcours en profondeur, les parcours en largeur.  La notion de graphe, pour lequel un module « théorie des graphe » est dédié, est revue légèrement, avec la concentration sur la représentation d’un graphe concrètement selon les deux stratégies possibles (statique et dynamique). L’étudiant apprendre à écrire des algorithmes qui applique des traitements sur un graphe, comme le calcul des composantes connexes, ou bien la recherche du plus court chemin.