Analyse
Ce qu'a observé le jury
Synthèse Hadamard du rapport officiel — citations, chiffres et conseils du jury.
Présentation du sujet
Sujet d'informatique commune (MP/PC/PSI) en 2 parties. Première partie : compression d'un message. Seconde partie : décodage d'un message à l'aide de l'algorithme de Viterbi (programmation dynamique). Les 25 questions balaient le programme : calculs de complexité, algorithme glouton, utilisation des dictionnaires, programmation dynamique, SQL. Lien avec la communication numérique pour évaluer la capacité à relier ces notions à des problèmes concrets.
Structure de l'épreuve
- Partie I — Q1-Q6 — Compression et complexité(Q1-Q6)Niveau attendu
Q1 ambiguïté du décodage rarement détectée. Q2 erreurs Python (= vs ==, c vs 'c'). Q3 oubli de guillemets pour chaînes. Q4 complexité dépendant uniquement de n et non de k et n, manque de simplification des O. Q5 oubli des guillemets. Q6 idem Q4.
- Partie II — Q7-Q14 — Dictionnaires et SQL(Q7-Q14)Difficile
Q7 manipulation des dictionnaires — keys() sans parenthèses, if/if au lieu de if/elif. Q8 syntaxe DISTINCT, FROM, requêtes terminant par WHERE sans condition. Q9 plusieurs sous-requêtes au lieu d'une, confusion WHERE/HAVING, SUM/COUNT, attribut.table vs table.attribut.…
- Partie III — Q15-Q25 — Graphes et Viterbi(Q15-Q25)Très difficile
Q15 dénombrement des arcs avec résultats aberrants. Q16 graphe correct mais erreurs de probabilités. Q17 impossibilité de l'exploration exhaustive non justifiée. Q18 programme classique mais initialisation parfois incorrecte. Q20 algorithmes gloutons supposés tous de même complexité.…
Analyse globale du jury
« Si certaines copies sont très faibles (voire presque vides), d'autres sont excellentes et frisent parfois la perfection. La longueur et la difficulté du sujet étaient ainsi tout à fait adaptées à ce type d'épreuve, ce qui a permis de bien classer les candidats. Un nombre non négligeable de questions portait sur la compréhension des problématiques liées à la communication numérique. L'épreuve abordait donc un large éventail de notions étudiées durant les deux années de préparation tout en évaluant la capacité des candidats à relier ces notions aux problèmes concrets rencontrés lors de la mise en œuvre d'une communication numérique. »
Top pièges sanctionnés
Q2 — = vs == dans les tests d'égalité-1 pts
« Plusieurs erreurs de syntaxe Python sont récurrentes : utilisation de = au lieu de == lors des tests d'égalité ; confusion entre la variable c et la chaine de caractères 'c'. »
Q4-Q6 — complexité ne dépendant que de n et non de k et n-2 pts
« Beaucoup de candidats proposent des complexités dépendant uniquement de n et non de k et n. La notion de complexité semble ne pas être acquise pour une partie des candidats : manque de simplification des O, calculs d'applications numériques. L'absence de justification a été sanctionnée. »
Q7 — keys() sans parenthèses, if/if au lieu de if/elif-1 pts
« Mauvaise manipulation des dictionnaires, en particulier lors de l'ajout d'un couple (clé,valeur) et du test de la présence d'une clé. Certains candidats font le choix d'utiliser keys(), mais beaucoup d'entre eux oublient les parenthèses. Certains candidats utilisent if/if quand il est nécessaire d'utiliser if/elif ou if/else. »
Q9 — sous-requêtes alors qu'UNE requête demandée-2 pts
« Plusieurs candidats proposent des sous-requêtes alors que le sujet demande explicitement UNE requête. L'utilisation des jointures est assez peu maitrisée. Erreurs de syntaxe SQL récurrentes : confusion entre WHERE et HAVING ; confusion entre SUM et COUNT ; utilisation de attribut.table au lieu de table.attribut ; mauvaise maîtrise de GROUP BY. »
Q11 — codeCar(c,g,d)[0] suivi de [1] (deux appels)-1 pts
« La méconnaissance du dépaquetage d'un t-uple et de la syntaxe d'assignation de plusieurs variables de manière simultanée est la source de nombreuses erreurs : l'instruction t = codeCar(c, g, d) suivie par g = t[0] et d = t[1] est correcte alors que l'instruction g = codeCar(c, g, d)[0] suivi de d = codeCar(c, g, d)[1] ne l'est pas. »
Q14 — append sur chaîne de caractères-1 pts
« Trop de candidats utilisent append pour ajouter un élément à une chaine de caractères. Certains candidats font des appels multiples et coûteux de la fonction decodeCar. Il est préférable de stocker le résultat de l'appel d'une fonction dans une variable plutôt que d'appeler une fonction de manière redondante. »
Q22 — Dijkstra sans opposé du logarithme-2 pts
« L'algorithme de Dijkstra est souvent mentionné, mais peu de candidats pensent à utiliser l'opposé du logarithme. Même si cela n'est pas sanctionné, il est regrettable qu'un aussi grand nombre de candidats ne connaisse pas l'orthographe, même approximative, de Dijkstra. »
Chapitres clés à maîtriser
Ressources
Téléchargements
Sujet officiel, corrigé Hadamard et rapport jury — tout en un endroit.
FAQ

