Cours du premier semestre de la deuxième année
Programmation 3
Programmation impérative 2
Ce cours est la suite de celui de “programmation impérative 1” donné au second semestre de la première année. Son objectif est d’approfondir les connaissances de la programmation impérative, principalement en langage C, mais aussi en langage C++, et de découvrir quelques subtilités des outils liés à la compilation, le debugging et le profiling. Après un retour approfondi sur les concepts de variables et de fonctions ainsi que leurs impacts d’un point de vue mémoire, comme l’emplacement, l’occupation et la manipulation via les pointeurs, nous nous attacherons à réaliser — et à comparer — des implémentations efficaces de bibliothèques en C fournissant des fonctionnalités proches de celles de la STL du langage C++. Les différentes formes du concept de généricité seront abordés et mis en pratique.
Programmation fonctionnelle 2
Ce cours est la suite du cours “programmation fonctionnelle 1” donné en première année. Son objectif est de continuer à se familiariser avec ce paradigme de programmation, en allant plus loin entre autres sur l'inférence de type, le filtrage par motif, le parallélisme, et la concurrence. Ce cours s'appuie principalement sur le langage OCaml et peut donner lieu à l'étude d'autres langages tels que Racket, Erlang, Lean, selon les objectifs.
Algorithmique 1
Algorithmique et structures de données 1
La mémoire réelle d'un ordinateur est comme un tableau de mots binaires. Savoir organiser des données à partir de cette disposition primaire pour représenter des "objets" complexes : réseau, vidéos, IA, etc. tout en cherchant à ce que leurs traitements soient rapides est une préocupation légitime d'un programmeur. Les objectifs de ce cours sont, d'une part d'apprendre au programmeur comment organiser des données en mémoire, et d'autre part d'apprendre à estimer l'efficacité d'un algorithme. Ces deux compétences sont illustrées à travers des problèmes classiques de programmation en langage C et leurs analyses en complexité mémoire ou temps. Des exemples de tels problèmes sont : trier une liste ; mémoriser un ensemble de valeurs, le modifier et le consulter ; explorer un graphe.
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. D’un point de vue pratique, nous aborderons les principales briques menant à l'élaboration d'un pipeline “maison” de rastérisation, en essayant d’y inclure au minimum le coloriage Gouraud et le placage de textures. Enfin, nous découvrirons en parallèle des notions de géométrie algorithmique qui peuvent varier d’une année à une autre, par exemple : le diagramme de Voronoï, la triangulation (de Delaunay) d'un nuage de points, l'utilisation d'automates cellulaires dans divers situations, ou encore les fonctions paramétriques et plus particulièrement les courbes de Bézier.
Poursuite d'études 1
Préparation projet professionnel / Ateliers préparation projet professionnel
Le principe de ce cours est de faire réfléchir les étudiant·es à la suite de leur parcours universitaire en fonction de leurs objectifs.
Programmation pour le jeu vidéo 3
Programmation dans les moteurs de jeux 2
L'objectif de ce cours est de poursuivre l'apprentissage de Godot avec la découverte du moteur 3D. Il présentera comment adapter les connaissances acquises en 2D en première année afin de s'intégrer dans un environnement 3D : déplacement d'un personnage, gestion de déplacement de caméras, collisions et physique 3D, interactions avec le décor, animation de modèles 3D, IA de déplacement d'ennemis.
Développement web
L'objectif de ce cours est de décrire les mécanismes logiciels mis en œuvre lors d'utilisations de navigateurs web et de présenter les standards du web et leurs manières d'évoluer. Le cours enseigne, entre autres, de quoi programmer un "site web" à l'aide uniquement d'outils élémentaires de programmation et de sockets. Il aborde notamment l'utilisation du langage CSS pour la mise en page, la programmation d'interface et la programmation asynchrone en javascript, l'utilisation du protocole d'application reseau HTTP, la cybersécurité web avec en particulier l'utilisation du protocole d'échange TLS (HTTPS).
Communication 2
Compétences numériques (PIX)
PIX est le service public en ligne pour évaluer, développer, et certifier ses compétences numériques. Ce cours est assuré par le BAPN.
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, et c'est la langue de communication privilégiée pour les échanges professionnels lors du développement de logiciels.