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
Bioinformatics
Connected Objects and the Internet of Things (IoT)
Conception et développement d'un Jeu vidéo
ICPC SWERC Training
Tablettes et smartphones

Modal 2
 
Distributed applications
Robots et drones
Applications Web

Modal 3
Competitive ProgrAmming in C++
Exploration et apprentissage sur les Graphes du Web
Deep Learning in Computer Vision
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.

Data analysis is a stransversal topic across algorithmics, statistics, and optimization. It relies on high-level languages such as Python or R for data handling and processing. This introductory course will consider both theoretical and practical aspects of data analysis.

References:

  • Hastie, Tibshirani, Friedman: The Elements of Statistical Learning: Data Mining, Inference, and Prediction (2nd ed.). Springer, 2017.
  • Scott and Stain: Multi-dimensional Density Estimation. In Handbook of Statistics, Volume 23 (Data Mining and Computational Statistics), 2004.
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++.