Statistiques jury
Comment les candidats s'en sont sortis
Notes brutes officielles publiées par le jury — non harmonisées.
Moyenne
9.45
Médiane
9.3
Écart-type
4.02
Q1 (25%)
6.4
Q3 (75%)
12.4
Candidats présents
1 689
sur 1 816 inscrits · 7.0% d'absents
Analyse
Ce qu'a observé le jury
Synthèse Hadamard du rapport officiel — citations, chiffres et conseils du jury.
Présentation du sujet
Sujet OCaml en trois parties indépendantes sur les algorithmes classiques liant automates et expressions rationnelles. Partie I (moitié de l'épreuve) : miroir d'un langage, rationalité, déterminisation, automate déterministe minimal via l'algorithme de Brzozowski. Partie II : type OCaml pour les expressions rationnelles, algorithme dichotomique de Conway. Partie III (plus courte mais plus difficile) : dérivées d'Antimirov.
Structure de l'épreuve
- Partie I — Miroir, rationalité, déterminisation, Brzozowski(Partie I — Q1-Q24)Difficile
Moitié de l'épreuve. Bonne maîtrise des bases d'OCaml. Confusions persistantes avec Python sur listes/boucles for. Bien gérer la représentation binaire des entiers pour les ensembles d'états.
- Partie II — Type OCaml pour expressions rationnelles + Conway(Partie II — Q25-Q44)Niveau attendu
Implémentation manipulée à travers diverses questions, puis algorithme dichotomique de Conway (étoile d'une matrice d'expressions rationnelles → expression rationnelle d'un langage d'automate).
- Partie III — Dérivées d'Antimirov(Partie III — Q45+)Très difficile
Plus courte mais plus difficile. Abordée sérieusement seulement par les meilleures copies. Q44 abordée par un nombre conséquent de copies — beaucoup d'erreurs de calcul.
Analyse globale du jury
« Le sujet était relativement long et la troisième partie, plus courte mais plus difficile, n'a été abordée sérieusement que dans les meilleures copies. Néanmoins, chaque question a été traitée de manière satisfaisante par au moins une copie. L'épreuve comportait à parts égales programmation et théorie. La partie programmation est plutôt réussie avec une bonne maitrise des bases d'OCaml, même si l'on rencontre encore des confusions avec Python sur les listes ou les boucles for. Les réponses théoriques ont été plus confuses, ou s'appuyaient sur des résultats hors programme mal maîtrisés (lemme de pompage, master theorem). »
Top pièges sanctionnés
Parenthèses oubliées dans les appels de fonctions OCaml-2 pts
« L'oubli quasi-systématique des parenthèses dans le passage des paramètres à une fonction (par exemple f n - 1 au lieu de f (n-1)) ou de délimiteurs type begin/end. L'indentation, certes utile pour comprendre le code, n'est pas un délimiteur comme en Python. »
Mot clé ref ou ! oublié systématiquement-1 pts
« L'oubli du mot clé ref ou du ! dans la gestion des variables. Si un oubli isolé est souvent pardonné, à l'inverse, leur absence systématique est clairement sanctionnée. »
Confusion {a^n b^n} ↔ {a* b*} (Q1, Q9)-2 pts
« Confusion entre a*b* qui est un langage (ici l'ensemble des mots {a^n b^p, (n,p) ∈ N²}) et {a*b*} qui est un ensemble de langages. »
Sous-langage rationnel vs langage rationnel-1 pts
« On rappelle qu'un sous-langage d'un langage rationnel n'est pas forcément rationnel (sinon, comme Σ* est rationnel, tout langage serait rationnel). »
Manipulation de listes au lieu d'ensembles bit (Q20-Q22-Q24)-2 pts
« De nombreux candidats n'ont pas compris la démarche et ont manipulé ou généré dans leurs programmes des ensembles d'états sous forme de listes avant de les convertir à la fin sous la forme attendue au lieu de travailler directement avec la représentation choisie (ce qui a pour effet d'annuler l'optimisation proposée par le sujet). »
Chapitres clés à maîtriser
Source : Rapport du jury Centrale-Supélec · Info MP, session 2022 · PDF officiel ↗
Ressources
Téléchargements
Sujet officiel, corrigé Hadamard et rapport jury — tout en un endroit.
FAQ

