Vous avez tous suivi une formation scientifique, mais pas tous la même, notamment en informatique. Pour les langages au programme (C, OCaml, SQL), aucune connaissance n'est exigée et ils seront présentés progressivement en cours d'année. Cependant, j'attends que certains concepts de base de la programmation soient connus. Pour cela, vous pouvez reprendre ou apprendre un peu de Python.
Vous avez tous écrit du Python pendant vos années au lycée, que ce soit en Maths, en NSI ou dans vos enseignements scientifiques. Python n'est pas au programme de l'informatique en MP2I/MPI, mais je vous conseille fortement de vous mettre à niveau dans ce langage, pour plusieurs raisons :
- D'abord, Python est au programme de physique qui l'utilisera pour illustrer ses notions numériquement.
- Ensuite, il sera utilisé comme point de comparaison avec les styles et concepts de programmation utilisés par C et OCaml.
Le niveau attendu comprend une maîtrise convenable des notions suivantes :
- variables et affectation
- booléens et opérateurs and or not, opérateurs arithmétiques
- conditionnelle if-else, boucles while et for (dont l'utilisation de range) et délimitation de blocs d'instructions par l'indentation
- définition de fonctions avec def, différence entre return et print, notion de variables globales, locales et de portée de variable
- utilisation simple des structures de chaînes de caractères, de listes (au sens de Python), de listes de listes pour représenter des matrices
Pour indication, les exercices suivants devraient être maîtrisés en entrant en MP2I, dans le langage de votre choix :
- Pour une suite définie par $u_0 = 0, u_{n+1} = {(u_n)}^2 + 2 u_n + 1$, écrire une fonction qui prend en entrée $n$ et renvoie $u_n$.
- Pour $t$ un tableau et $x$ une valeur quelconque, écrire une fonction qui renvoie le booléen $\texttt{vrai}$ si $x$ se trouve dans $t$, et le booléen $\texttt{faux}$ sinon.
- Pour $t$ un tableau de nombres, écrire une fonction qui renvoie la somme de ses éléments.
- Pour $t$ un tableau, écrire une fonction qui renvoie le maximum de ses éléments.
Certains chapitres du programme de NSI sont intéressants, mais ne seront pas revus ou développés en CPGE : Interaction entre l'humain et la machine et Architecture matérielle par exemple.
Pour ceux qui n'ont pas du tout suivi le programme de NSI, ou qui veulent vérifier leur niveau en Python, je vous conseille les deux premiers niveaux de l'introduction à la programmation de France-IOI, disponible ici. Le niveau 3 est aussi intéressant à explorer, notamment les points 1, 2, 5-11, mais il n'est pas indispensable de les travailler. Les corrections disponibles en C sont aussi intéressantes, mais je déconseille fortement celles en OCaml.
Pour les étudiants ayant suivi la spécialité NSI jusqu'en Terminale / qui sont déjà à l'aise avec les notions précédentes, vous pouvez aussi vous lancer dans un poly proposé par un étudiant de MPI (je l'ai lu en diagonale, mais il semble bien construit et prend un peu d'avance sur le programme de première année). Pour des choses moins académiques, n'hésitez pas à visiter des problèmes de programmation comme l'Advent Of Code, ou encore les quelques dizaines de premiers problèmes du Projet Euler. Nous proposerons aussi pendant l'année un "club" pour participer au concours national Prologin.
Pour les autres aspects du travail en informatique en MP2I (environnement de travail, système d'exploitation, travail personnel, etc.), je compléterai ces informations autour de la rentrée. N'hésitez pas à me poser des questions si quelque chose n'est pas clair : pierre.le-scornet {at} ac-rennes.fr.