Copyright : Frédéric Pennerath, Hervé Frezza-Buet, CentraleSupelec
Link to the source : index.md

# C++@CentraleSupélec

Fill free to explore the topics in the order you want, even if they are organized here so that you can enter C++ progressively.

## Getting started

### Installing a C++ compiler

The C++ we are teaching here is standard, but the materials have been tested with the gnu compiler g++, using linux. Windows and MacOS users have to make a c++ compiler available on their workstation on their own.

Intalling g++ on Ubuntu is straightforward



### Have a nice editor and a nice console.

You can use emacs, vim, geany, vscode… or any kind of editor that highlights C++ code. For using command lines, you need a nice console, i.e. a terminal that understand colors and UTF-8.

Default terminal on linux does the job. For editing, vscode can be a good start if you are not already familiar with a good editor.

## Introduction

### First (but crucial) steps.

First, take the time to follow precisely the C++ self-study. It teaches you the basics of C++, stressing how memory is handles and how C++ code looks like.

### Compiling

Before entering into more advenced programming, you need to understand what C++ compiling actually is.

### Understanding RAM

In C++, everything is quite explicitly about storing value in the RAM and retreiving values from the RAM. To memory issues need to be clearly understand before entering the design of smart programs.

### Types and syntax

Since C++-11, types are of major importance. This makes C++ very close to the binary code while still expressing computational concepts, that can be checked at compiling time. Some syntactic sugar comes with this, enabling the programmer to implement formally guided program design into an efficient language, directly linked to the execution on the processor.

## Functions and exceptions

The execution thread is mainly controlled by function calls. Of course, conditional and loop statement locally enable to control the execution, but in the big picture, the execution of a program is an articulation of intricated function calls.

## Past C++ tests (solutions)

Here, you will find exercises from past exams. Use them for training.

Frédéric Pennerath, Hervé Frezza-Buet,