Top piège du sujet
Parenthèses oubliées dans les appels de fonctions OCaml
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
Comparaison
Comment ce sujet se compare aux autres
Moyenne en hausse de +0.45 par rapport à 2021 (9.45 vs 9). Écart-type plus resserré (σ 4.18 → 4.02), notes moins dispersées. Sujet plus accessible que la session précédente.
Calculateur
Où je me situe sur ce sujet ?
Entrez votre note brute. Le percentile et la position se mettent à jour en temps réel.
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
Bosse chaque chapitre sur d'autres sujets de concours qui le couvrent.
Source : Rapport du jury Centrale-Supélec · Info MP, session 2022 · PDF officiel ↗
Contexte
L'épreuve en quelques chiffres
L'épreuve Option Informatique Centrale-Supélec MP 2022 s'est déroulée fin avril 2022, en 4 heures, coefficient 10. Session 2022 : 1689 candidats présents (sur 1816 inscrits, taux d'absence 7.0%), l'option Info est choisie par environ un tiers des MP, contre deux tiers pour S2I.
Sujet en OCaml sur les automates et expressions rationnelles, en trois parties indépendantes. Partie I (moitié de l'épreuve) : miroir d'un langage, rationalité, déterminisation et algorithme de Brzozowski pour l'automate déterministe minimal. Partie II : type OCaml pour expressions rationnelles, algorithme dichotomique de Conway. Partie III (plus courte mais plus difficile) : dérivées d'Antimirov.
La moyenne brute s'est établie à 9.45/20, écart-type 4.02. Médiane 9.3, premier quartile 6.4, troisième quartile 12.4. 5 copies à 0 et 14 copies à 20/20 selon l'histogramme. L'épreuve équilibre programmation et théorie « à parts à peu près égales ».
Accompagnement personnalisé
Travaillez ce sujet avec un prof de l'équipe
Nos professeurs anciens taupins (Polytechnique, ENS, Centrale) reprennent ce sujet avec toi en cours particulier — corrigé ligne par ligne, méthode, pièges évités.
Trouvez le prof qu'il vous faut
Échangez avec notre équipe pour trouver le professeur idéal selon vos besoins.
Stratégie
Notre approche pour ce sujet
Sujet long sur une partie difficile du programme. Le jury alerte : « certains candidats se sont obstinés sur la première partie en oubliant que les parties étaient indépendantes ». Stratégie clé : passer en partie II avant de bloquer trop longtemps sur la I.
Si tu vises 9-12/20 (médiane à top 25%)
Cibler la programmation OCaml « plutôt réussie » sur la plupart des copies. En partie I : Q1-Q15 (miroir, rationalité, déterminisation classique). En partie II : Q26-Q35 (type OCaml + manipulation simple). Soigner la syntaxe OCaml, pas de mélange Python (boucles for sur listes, indentation-délimiteur).
Si tu vises 14+ (top 10%)
Maîtriser la représentation binaire des entiers comme ensembles d'états (Q19-Q22 : appartenance en O(1) au lieu de O(n) avec List.mem). Bien gérer Brzozowski avec accessibilité ↔ coaccessibilité (Q26-Q27). Tenter Q44 (souvent abordée). En partie III : Q45+ (dérivées d'Antimirov) sont la frontière du top.
Gestion des 4h : 1h45 sur partie I (Q1-Q24, mais ne pas s'obstiner si bloqué sur Brzozowski), 1h30 sur partie II (Q25-Q44, type OCaml puis Conway), 30 min sur partie III (Q45+, ce qui est faisable), 15 min de relecture. Lire l'énoncé en entier avant de coder, beaucoup de candidats ont relu une question après l'avoir codée et oublié des contraintes (taille des matrices globales, complexités demandées).
Conseils du jury
Cinq conseils transversaux
- Syntaxe OCaml propre : parenthèses systématiques (f (n-1) pas f n - 1),
refet!respectés, pas de Python déguisé. L'indentation n'est pas un délimiteur en OCaml. - Définitions rigoureuses en théorie : ab est un langage (mots anbp), pas un ensemble de langages. Σ* rationnel n'implique pas tout sous-langage rationnel.
- Pas de hors-programme mal maîtrisé : pas de lemme de pompage, pas de master theorem direct C(n) = aC(n/2) + O(n^b). Démontrer proprement, par exemple D(n) = C(n)/a^n ramène à une somme estimable.
- Construire l'automate déterministe en représentation binaire (entiers OCaml suffisent jusqu'à n bits), pas de manipulation de listes intermédiaires qui annule l'optimisation du sujet.
- Entraînement régulier sur machine recommandé. Lire l'énoncé en entier avant de coder, et relire chaque question après pour vérifier qu'aucune contrainte n'a été oubliée.
Ressources
Téléchargements
Sujet officiel, corrigé Hadamard et rapport jury — tout en un endroit.
FAQ