Stages de Pré-Rentrée — Inscriptions ouvertes, places très limitées ! S'inscrire

Annale · 2017Session du 29 avril 2017

Informatique Mines-Ponts PSI 2017 — sujet, corrigé et rapport jury

Sujet assez long mais d'une difficulté raisonnable, classement très efficace. Tout le spectre de notes occupé. Clés pour bonne note : maîtriser la syntaxe Python et SQL, programmes faisant exactement ce qui est demandé (pas « à peu près »), programmes concis et bien indentés. Message principal du jury : ALLEZ AU PLUS SIMPLE !

Mohamed K.

Mohamed K.

Centralien · MPSI puis MP · Recherche ML santé

Session 2017 :

InfoChimieMaths IMaths II
Aperçu rapide

Top piège du sujet : Q3 : utiliser if L[i]==True / elif L[i]==False au lieu de return L[i]

Analyse

Ce qu'a observé le jury

Synthèse Hadamard du rapport officiel — citations, chiffres et conseils du jury.

Présentation du sujet

Sujet assez long mais d'une difficulté raisonnable, classement très efficace. Tout le spectre de notes occupé. Clés pour bonne note : maîtriser la syntaxe Python et SQL, programmes faisant exactement ce qui est demandé (pas « à peu près »), programmes concis et bien indentés. Message principal du jury : ALLEZ AU PLUS SIMPLE !

Structure de l'épreuve

  1. Partie IQ1-Q11 — Booléens, listes, évolution de file(Q1-Q11)Niveau attendu

    Q1 0 et 1 ne sont pas des booléens. Q2 définir une fonction ne suffit pas à créer une liste. Q3 def occupe(L,i): return L[i] suffit (minorité de candidats). Q4 dénombrement complexe inutile. Q5 return True mal placé, double for inutile, assert renvoie une exception (pas un booléen). Q9-Q10 L2=L…

  2. Partie IIQ12-Q16 — Évolution de la file et longueur(Q12-Q16)Niveau attendu

    Q12 utiliser Q9-Q11 plutôt que disjonctions de cas. Q13 fonction renvoie 1 liste de 2 sous-listes (pas 2 listes). Q14 qualitative bien traitée. Q15 réponses 8 ou 10 étapes en allant trop vite. Q16 réponses claires, le doute ne bénéficie pas.

  3. Partie IIIQ17-Q22 — Complexité linéaire et dichotomie(Q17-Q22)Difficile

    Q17 « complexité linéaire » : in, del, .pop ne sont pas O(1) ! Gestion des indices (premier/dernier élément). Q20 but n'est pas un entier. Q21 reconnaître la dichotomie + complexités attendues (« in1 plus optimisé car moins d'instructions » faux). Q22 attention aux puissances de 2.

  4. Partie IVQ23-Q28 — Terminaison et SQL(Q23-Q28)Difficile

    Q24 « il y a un while donc la boucle s'arrête nécessairement » insuffisant. Q26 requête simple sans jointure relativement mal traitée. Q27 jointure mieux maîtrisée mais ON Croisement.id=Voie.id mal placé. Q28 peu traitée.

Analyse globale du jury

« Le sujet d'informatique commune portait sur la modélisation d'une situation de trafic routier. Le sujet, assez long mais d'une difficulté raisonnable, a permis un classement très efficace des candidats. Les clefs pour obtenir une note honorable sont de bien maîtriser la syntaxe de base de Python et du SQL, de s'assurer que les programmes font exactement — et pas « à peu près » — ce qui est demandé, et de proposer des programmes concis et bien présentés/indentés. Un défaut particulièrement sensible cette année a été le manque de concision des réponses et des programmes proposés, même pour des fonctions élémentaires. Message principal du jury : ALLEZ AU PLUS SIMPLE ! Le jury demande aussi explicitement aux candidats d'éviter de dépenser leur précieux temps à commenter les programmes simples. »

Top pièges sanctionnés

  • Q3 : utiliser if L[i]==True / elif L[i]==False au lieu de return L[i]-1 pts

    « La solution la plus simple, def occupe(L,i): return L[i] n'a été proposée que par une minorité de candidats. De très nombreux candidats proposent : def occupe(L,i): if L[i]==True: return True elif L[i]==False: return False. Certes correcte, mais qui montre qu'il y a encore une compréhension imparfaite de la puissance du langage. »

  • Confondre while et if (sanction lourde)-3 pts

    « Une faute grave a été vue dans un nombre appréciable de copies : l'utilisation de while à la place de if. Cette confusion est sanctionnée lourdement. »

  • L=[] puis L[0]=b ; ou L=L+a au lieu de L=L+[a] ; L.append(L1) confondu avec L+L1-2 pts

    « On a lu de trop nombreuses fois des instructions telles que : L=[] L[0]=b qui ne fonctionne évidemment pas. Quant à l'ajout d'un élément en fin de liste, nous avons trop souvent vu L=L+a à la place de L=L+[a]. De plus, trop de candidats pensent à tort que L.append(L1) est équivalent à L+L1 : seule cette dernière est correcte. »

  • L2=L pour créer une liste indépendante-2 pts

    « Les candidats doivent savoir que l'instruction L2=L ne suffit pas à créer une liste L2 indépendante de L. »

  • Q17 : utiliser in, del, .pop pour de la complexité linéaire (faux : ces opérations ne sont pas O(1))-2 pts

    « La précision de l'énoncé « de complexité linéaire » a échappé à beaucoup, y compris à ceux qui pensent s'en sortir en utilisant in, del ou .pop ou… qui ne sont certainement pas de complexité unitaire ! »

Chapitres clés à maîtriser

Booléens — True/False (pas 0/1)
Listes — copie indépendante (L2=L insuffisant), append vs +
Bornes d'itérateurs — range(len(L)+1) faux, range(p,q,-1)
Complexité — in/del/pop ne sont pas O(1)
Recherche par dichotomie
Terminaison de boucle while (à prouver)
SQL — jointure correcte (ON, condition)

Source : Rapport du jury Mines-Ponts · Info PSI, session 2017 · PDF officiel ↗

Ressources

Téléchargements

Sujet officiel, corrigé Hadamard et rapport jury — tout en un endroit.

FAQ

Questions fréquentes — 2017

Partager

Préparation Mines-Ponts · Info PSI

Bossez ce sujet 2017 avec un ancien taupin

Nos professeurs analysent votre copie sur ce sujet, identifient vos faiblesses et structurent votre révision pour la session 2018.

Sujet