Spaces:
Running
Running
| ## NSI programme de la classe de terminale | |
| ### Rubrique transversale de l’histoire de l’informatique | |
| - **Événements clés de l’histoire de l’informatique.** | |
| > Ces repères viennent compléter ceux qui ont été introduits en première. [commentaire] | |
| > | |
| > Ces repères historiques sont construits au fur et à mesure de la présentation des concepts et techniques. [commentaire] | |
| - Situer dans le temps les principaux événements de l’histoire de l’informatique et leurs protagonistes. | |
| - Identifier l’évolution des rôles relatifs des logiciels et des matériels. | |
| ### Structures de données | |
| - **Structures de données, interface et implémentation.** | |
| > L’abstraction des structures de données est introduite après plusieurs implémentations d’une structure simple comme la file (avec un tableau ou avec deux piles). [commentaire] | |
| - Spécifier une structure de données par son interface. | |
| - Distinguer interface et implémentation. | |
| - Écrire plusieurs implémentations d’une même structure de données. | |
| - **Vocabulaire de la programmation objet : classes, attributs, méthodes, objets.** | |
| > On n’aborde pas ici tous les aspects de la programmation objet comme le polymorphisme et l’héritage. [commentaire] | |
| - Écrire la définition d’une classe. | |
| - Accéder aux attributs et méthodes d’une classe. | |
| - **Listes, piles, files : structures linéaires.** | |
| > On distingue les modes FIFO (*first in first out*) et LIFO (*last in first out*) des piles et des files. [commentaire] | |
| - Distinguer des structures par le jeu des méthodes qui les caractérisent. | |
| - Choisir une structure de données adaptée à la situation à modéliser. | |
| - Distinguer la recherche d’une valeur dans une liste et dans un dictionnaire. | |
| - **Dictionnaires, index et clé.** | |
| - Distinguer des structures par le jeu des méthodes qui les caractérisent. | |
| - Choisir une structure de données adaptée à la situation à modéliser. | |
| - Distinguer la recherche d’une valeur dans une liste et dans un dictionnaire. | |
| - **Arbres : structures hiérarchiques.** | |
| > On fait le lien avec la rubrique « algorithmique ». [commentaire] | |
| - Identifier des situations nécessitant une structure de données arborescente. | |
| - **Arbres binaires : nœuds, racines, feuilles, sous-arbres gauches, sous-arbres droits.** | |
| - Évaluer quelques mesures des arbres binaires (taille, encadrement de la hauteur, etc.). | |
| - **Graphes : structures relationnelles.** | |
| - Modéliser des situations sous forme de graphes. | |
| > On s’appuie sur des exemples comme le réseau routier, le réseau électrique, Internet, les réseaux sociaux. [commentaire] | |
| - **Sommets, arcs, arêtes, graphes orientés ou non orientés.** | |
| - Écrire les implémentations correspondantes d’un graphe : matrice d’adjacence, liste de successeurs/de prédécesseurs. Passer d’une représentation à une autre. | |
| > Le choix de la représentation dépend du traitement qu’on veut mettre en place : on fait le lien avec la rubrique « algorithmique ». [commentaire] | |
| ### Bases de données | |
| - **Modèle relationnel : relation, attribut, domaine, clef primaire, clef étrangère, schéma relationnel.** | |
| - Identifier les concepts définissant le modèle relationnel. | |
| > Ces concepts permettent d’exprimer les contraintes d’intégrité (domaine, relation et référence). [commentaire] | |
| - **Base de données relationnelle.** | |
| > On privilégie la manipulation de données nombreuses et réalistes. [commentaire] | |
| - Savoir distinguer la structure d’une base de données de son contenu. | |
| > La structure est un ensemble de schémas relationnels qui respecte les contraintes du modèle relationnel. [commentaire] | |
| - Repérer des anomalies dans le schéma d’une base de données. | |
| > Les anomalies peuvent être des redondances de données ou des anomalies d’insertion, de suppression, de mise à jour. [commentaire] | |
| - **Système de gestion de bases de données relationnelles.** | |
| - Identifier les services rendus par un système de gestion de bases de données relationnelles : persistance des données, gestion des accès concurrents, efficacité de traitement des requêtes, sécurisation des accès. | |
| > Il s’agit de comprendre le rôle et les enjeux des différents services sans en détailler le fonctionnement. [commentaire] | |
| - **Langage SQL : requêtes d’interrogation et de mise à jour d’une base de données.** | |
| - Identifier les composants d’une requête. | |
| - Construire des requêtes d’interrogation à l’aide des clauses du langage SQL : `SELECT`, `FROM`, `WHERE`, `JOIN`. | |
| > On peut utiliser `DISTINCT`, `ORDER BY` ou les fonctions d’agrégation sans utiliser les clauses `GROUP BY` et `HAVING`. [commentaire] | |
| - Construire des requêtes d’insertion et de mise à jour à l’aide de : `UPDATE`, `INSERT`, `DELETE`. | |
| ### Architectures matérielles, systèmes d’exploitation et réseaux | |
| - **Composants intégrés d’un système sur puce.** | |
| - Identifier les principaux composants sur un schéma de circuit et les avantages de leur intégration en termes de vitesse et de consommation. | |
| > Le circuit d’un téléphone peut être pris comme un exemple : microprocesseurs, mémoires locales, interfaces radio et filaires, gestion d’énergie, contrôleurs vidéo, accélérateur graphique, réseaux sur puce, etc. [commentaire] | |
| - **Gestion des processus et des ressources par un système d’exploitation.** | |
| - Décrire la création d’un processus, l’ordonnancement de plusieurs processus par le système. | |
| > À l’aide d’outils standard, il s’agit d’observer les processus actifs ou en attente sur une machine. [commentaire] | |
| - Mettre en évidence le risque de l’interblocage (*deadlock*). | |
| > Une présentation débranchée de l’interblocage peut être proposée. [commentaire] | |
| - **Protocoles de routage.** | |
| - Identifier, suivant le protocole de routage utilisé, la route empruntée par un paquet. | |
| > En mode débranché, les tables de routage étant données, on se réfère au nombre de sauts (protocole RIP) ou au coût des routes (protocole OSPF). [commentaire] | |
| > | |
| > Le lien avec les algorithmes de recherche de chemin sur un graphe est mis en évidence. [commentaire] | |
| - **Sécurisation des communications.** | |
| - Décrire les principes de chiffrement symétrique (clef partagée) et asymétrique (avec clef privée/clef publique). | |
| > Les protocoles symétriques et asymétriques peuvent être illustrés en mode débranché, éventuellement avec description d’un chiffrement particulier. [commentaire] | |
| - Décrire l’échange d’une clef symétrique en utilisant un protocole asymétrique pour sécuriser une communication HTTPS. | |
| > La négociation de la méthode chiffrement du protocole SSL (*Secure Sockets Layer*) n’est pas abordée. [commentaire] | |
| ### Langages et programmation | |
| - **Notion de programme en tant que donnée.** | |
| - Comprendre que tout programme est aussi une donnée. | |
| > L’utilisation d’un interpréteur ou d’un compilateur, le téléchargement de logiciel, le fonctionnement des systèmes d’exploitation permettent de comprendre un programme comme donnée d’un autre programme. [commentaire] | |
| - **Calculabilité, décidabilité.** | |
| - Comprendre que la calculabilité ne dépend pas du langage de programmation utilisé. | |
| - Montrer, sans formalisme théorique, que le problème de l’arrêt est indécidable. | |
| - **Récursivité.** | |
| - Écrire un programme récursif. | |
| - Analyser le fonctionnement d’un programme récursif. | |
| > Des exemples relevant de domaines variés sont à privilégier. [commentaire] | |
| - **Modularité.** | |
| - Utiliser des API (Application Programming Interface) ou des bibliothèques [fusionné, ndr] [et] exploiter leur documentation. | |
| - Créer des modules simples et les documenter. | |
| - **Paradigmes de programmation.** | |
| - Distinguer sur des exemples les paradigmes impératif, fonctionnel et objet. | |
| - Choisir le paradigme de programmation selon le champ d’application d’un programme. | |
| > Avec un même langage de programmation, on peut utiliser des paradigmes différents. Dans un même programme, on peut utiliser des paradigmes différents. [commentaire] | |
| - **Mise au point des programmes.** | |
| > On prolonge le travail entrepris en classe de première sur l’utilisation de la spécification, des assertions, de la documentation des programmes et de la construction de jeux de tests. [commentaire] | |
| - **Gestion des bugs.** | |
| - Dans la pratique de la programmation, savoir répondre aux causes typiques de bugs : problèmes liés au typage, effets de bord non désirés, débordements dans les tableaux, instruction conditionnelle non exhaustive, choix des inégalités, comparaisons et calculs entre flottants, mauvais nommage des variables, etc. | |
| > Les élèves apprennent progressivement à anticiper leurs erreurs. [commentaire] | |
| ### Algorithmique | |
| - **Algorithmes sur les arbres binaires et sur les arbres binaires de recherche.** | |
| > Une structure de données récursive adaptée est utilisée. [commentaire] | |
| > | |
| > L’exemple des arbres permet d’illustrer la programmation par classe. [commentaire] | |
| - Calculer la taille et la hauteur d’un arbre. | |
| - Parcourir un arbre de différentes façons (ordres infixe, préfixe ou suffixe ; ordre en largeur d’abord). | |
| - Rechercher une clé dans un arbre de recherche, insérer une clé. | |
| > La recherche dans un arbre de recherche équilibré est de coût logarithmique. [commentaire] | |
| - **Algorithmes sur les graphes.** | |
| > L’exemple des graphes permet d’illustrer l’utilisation des classes en programmation. [commentaire] | |
| - Parcourir un graphe en profondeur d’abord, en largeur d’abord. | |
| - Repérer la présence d’un cycle dans un graphe. | |
| - Chercher un chemin dans un graphe. | |
| > Le parcours d’un labyrinthe et le routage dans Internet sont des exemples d’algorithme sur les graphes. [commentaire] | |
| - **Méthode « diviser pour régner ».** | |
| - Écrire un algorithme utilisant la méthode « diviser pour régner ». | |
| > La rotation d’une image bitmap d’un quart de tour avec un coût en mémoire constant est un bon exemple. [commentaire] | |
| > | |
| > L’exemple du tri fusion permet également d’exploiter la récursivité et d’exhiber un algorithme de coût en $n \log n$ dans les pires des cas. [commentaire] | |
| - **Programmation dynamique.** | |
| - Utiliser la programmation dynamique pour écrire un algorithme. | |
| > Les exemples de l’alignement de séquences ou du rendu de monnaie peuvent être présentés. [commentaire] | |
| > | |
| > La discussion sur le coût en mémoire peut être développée. [commentaire] | |
| - **Recherche textuelle.** | |
| - Étudier l’algorithme de Boyer-Moore pour la recherche d’un motif dans un texte. | |
| > L’intérêt du prétraitement du motif est mis en avant. [commentaire] | |
| > | |
| > L’étude du coût, difficile, ne peut être exigée. [commentaire] | |