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++.