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] | |