Des cours d'informatique pour tous les goûts!

Les buts de la deuxième année sont de consolider les acquis de la première en préparant une spécialisation éventuelle en 3A.

Le DIX offre un ou plusieurs cours d'informatique dans chacune des quatre périodes de l'année,  à quoi s'ajoutent des MODALs, mais aussi bien sûr des projets scientifiques collectifs.

Prérequis : cours INF361+INF411 ou INF371 pour accéder aux autres cours d'année 2 (sauf pour certains MODALs, renseignez-vous).

CSC_41011_EP (INF411)
arbres, graphes
CSC_41021_EP (INF421)
algorithms
CSC_43042_EP (INF442)
données massives
CSC_41012_EP (INF412)
logique, modèles
 
CSC_43043_EP (INF443)
Informatique graphique 3D


Modal 1
Smart Objects for Edge AI and the IOT
Conception et développement d'un Jeu vidéo
Algorithms and Advanced Programming (SWERC)
Tablettes et smartphones

Modal 2
 
Distributed applications
Robots et drones
Applications Web


Modal 3
Introduction to Intensive Programming in C++ (ALCO)
Exploration et apprentissage sur les Graphes du Web
Cybersecurity - the hacking Xperience

 

Prérequis pour la 3A : pour s'inscrire en PA Informatique ou Bioinformatique (et plus généralement pour s'inscrire dans un cours d'Informatique de 3A), il faut avoir validé :
- au moins 2 cours d'Informatique en 2A (hors modal),
- un projet en cours d'Informatique de 2A (modal compris).

Foire aux questions (FAQ)

Q. Je viens de CSC_3X050_EP (INF361). Quels cours d'informatique puis-je suivre en 2A ?

RSi vous suivez CSC_41011_EP (INF411), vous pouvez suivre n'importe quel cours d'informatique en 2A.

Q. Puis-je suivre CSC_41011_EP (INF411) et CSC_41012_EP (INF412), CSC_43042_EP (INF442) en même temps que CSC_43043_EP (INF443) ?

R. Oui, ce ne sont pas les mêmes jours et nous avons fait bien attention à cela.

Q. Puis-je prendre plusieurs Modals d'informatique ?

R. A priori, non.

Q. Dans quels cours puis-je prendre un projet ?

R. CSC_42021_EP (INF421), CSC_43042_EP (INF442), CSC_43043_EP (INF443); ou bien un Modal.

Q. Dans quels cours fait-on des TP sur machine ?

R. CSC_41011_EP (INF411), CSC_43042_EP (INF442), CSC_43043_EP (INF443).

Q. Quels sont les langages de programmation utilisés en 2A ?

R. CSC_41011_EP (INF411) : Java; CSC_43042_EP (INF442) : Python, CSC_43043_EP (INF443) : C++; dans les modals, c'est variable.


Initiation to data structures, algorithmics and algorithm analysis (lecture hall).
Advanced programming in Java (tutorial groups).

It is also an opportunity to perfect Java skills. The tutorials explore in depth some of the material presented in the lecture hall.

Evaluation: Continuous assessment (pale machine or homework), an in-class exam (3h).

 

This course introduces the fundamentals of IT as science. The idea of using machines to make calculations is an old one, it was in the 1930s that the work of Alan Turing, Alonzo Church, Kurt Goedel and others laid the foundations for what would become the computer science we know today.

Their work revealed that reasoning and calculation are closely linked, and these foundations must therefore be understood in the older tradition, in logic and in the foundations of mathematics, from Peano to Zermelo passing by Hilbert and many others. We can note that these foundations are still relevant today, despite spectacular technological advances.

While other courses show how to program, here we clarify the framework of what is doable, in terms of
- calculability: some problems cannot be solved by a machine;
- complexity: some problems cannot be solved in a reasonable time.

It is on these points, for example, that cryptographic technologies and the famous "P=NP" problem to  $1,000,000 are based.

 

There are no prerequisites. However, this course is a prerequisite for "Algorithms and Optimization" and "Languages, Proofs, Calculus" in the 3rd-year PA Info.

Evaluation: written exam

 

Algorithms are the heart of all computation. This course, which relies on the algorithmic foundations laid in the first computer science courses (INF371 or INF361+INF411), equipping the student with a solid background in modern algorithmics.

After following this course, the student will have an in-depth knowledge of most central algorithms, both understanding how and why they work and being able to solve a wide range of computational problems with these building blocks.

This is material that everyone aiming to work in a computer science or computing-related context needs to know, let it be in a research or industrial environment.

In addition to this, we will also give a brief introduction to several more recent topics like randomized algorithms, evolutionary algorithms, online algorithms, or algorithmic game theory, which had a significant impact on how we understand computing today.

The course is taught in English (lectures, poly). Exercise classes are offered in English and French. The exam is offered in both languages.

This course offers an introduction to programming in C++ through applications in 3D computer graphics.
The C++ language is the most widely used for writing large-scale scientific software requiring real-time interaction. Its usage spans, for example, the majority of game engines (Unity, Unreal, Godot, AAA game engines), image/video and 3D modeling software (Maya, Blender, Photoshop, Catia, etc.), parallel computing (CUDA), machine learning and vision frameworks (PyTorch, TensorFlow, OpenCV), operating systems (Windows), or even web (Chrome, Firefox, AWS, etc.).

This course aims to familiarize students with C++ programming concepts, particularly the notion of "low-level" programming, which involves a fine understanding of memory usage by program variables. The course also introduces best practices for programming large-scale software (beyond scripts of a few hundred lines), particularly the notions of modularity and software architecture.

The applications of learning C++ are explored through real-time 3D computer graphics, using the OpenGL API. The course introduces the basic concepts of "graphics programming," particularly image rendering, modeling, and efficient 3D animation, using C++ and GPU programming through shaders. The concepts presented help understand the underlying mechanisms of graphics rendering engines for multidisciplinary applications such as video games, virtual reality applications, scientific visualization, medical and biological imaging, and physical simulation.

The course is primarily practice-oriented, with exercises and a final project requiring the creation of an animated 3D scene in C++.

One of the flagship applications of AI is code generation, to such an extent that some are questioning the future of developers and the share prices of major software companies are falling. Code generated by LLM and Reinforcement Learning (with ‘Execution Feedback’) is one of the central topics of the course. The enormous amount of available code, the formal structure of formal languages and the existence of clear semantics, which underpin its deterministic execution, make learning particularly effective.


The course’s perspective is that the work of developing computer systems, in the broadest sense, is becoming a higher-level activity, leaving more basic programming tasks to AI assistants. How can we formally specify the desired code, and how can we verify this code in order to integrate it into an existing system, or one developed by humans?