Cours du premier semestre de la deuxième année

UE Informatique 3
EC “Algorithmique et structures de données 1”

Ce cours introduit l'algorithmique et les structures de données. L'algorithmique est au cœur de la programmation en informatique. Elle consiste en l'étude et la résolution de problèmes, aussi bien au niveau théorique que pratique. Ce cours présente l'intérêt d'utiliser des structures de données appropriées aux résolutions des problèmes abordés. Au fil de la découverte de différentes problématiques, nous discuterons et proposerons des ré-implémentations de structures de données plus ou moins adaptées à leur résolution ; apprendre à bien choisir sa structure de données et l'optimisation de ses implémentations fera ainsi partie des objectifs de ce cours, emmenant l'auditeur à se constituer sa première bibliothèque d'outils pour des usages algorithmiques.

EC “Programmation avancée”

Ce cours est la suite à la fois de celui de “Programmation fonctionnelle” et de celui de “Programmation impérative” qui sont donnés en première année. Son objectif est d'aller plus loin dans la programmation, notamment d'apprendre à tirer pleinement parti des outils modernes de compilation et d'analyse fournis avec les compilateurs de certains langages de programmation. Il s'agit également de maîtriser des subtilités du langage utilisé et d'apprendre à programmer de façon plus lisible et, donc, plus facile à reprendre, modifier, améliorer, ou encore corriger.

EC “Programmation d'interfaces”

L'objectif de ce cours est d'apprendre à programmer des interfaces utilisateur·ices avec les bibliothèques multiplateformes modernes (GTK+ ou Qt) et les outils de production qui y sont associés. L'objectif est la réalisation complète d'une application disposant d'une interface utilisateur·ice riche et conviviale.

UE Conception et programmation de jeux vidéo 3
EC “Algorithmes pour la programmation graphique”

Cet enseignement a pour premier objectif la découverte de la représentation mémoire des images en machine, l'implémentation et l'optimisation de primitives de dessin dans l'espace discret et l'élaboration d'un pipeline “maison” de rastérisation incluant le coloriage Gouraud et le placage de texture. Nous découvrirons ensuite des notions plus complexes de géométrie algorithmique telles que l'élaboration d'un diagramme de Voronoï, la triangulation d'un nuage de points ou l'utilisation d'automates cellulaires afin de générer des textures. Nous terminerons par une introduction à l'utilisation de la bibliothèque OpenGL et à la programmation de shaders en revenant, via une approche SIMD (GPU/parallèle), sur certaines des problématiques précédemment abordées.

EC “Introduction à l'intelligence artificielle”

Ce cours aborde les principes sous-jacents à toute l'informatique et, en particulier, à l'intelligence artificielle : la représentation des connaissances, les algorithmes, et la résolution de problème. Sont abordés les méthodes heuristiques, qu'il s'agisse de la découverte de chemins, de jeux à deux joueur·es ou autres problèmes classiques, ainsi qu'un premier aperçu de l'apprentissage automatique, plus spécifiquement, ici, la classification. Le perceptron est présenté, avant d'évoquer les différentes variantes de réseaux de neurones, puis, pour conclure cet aperçu, les arbres de décision sont introduits.

UE Compétences transversales 3
EC “Préparation au projet professionnel”

Ce cours, qui est en partie assuré par le SCUIO-IP, a pour objectif de faire réfléchir les étudiant·es à la suite de leur parcours universitaire en fonction de leurs objectifs.

EC “Langue vivante 2” (anglais)

Il est très utile de lire et écrire l'anglais pour réussir en informatique. Beaucoup de documentation n'existe qu'en anglais !