France · Programmes Officiels
Terminale Numérique et sciences informatiques.
L'enseignement de spécialité Numérique et sciences informatiques (NSI) en classe de terminale permet d'approfondir les concepts fondamentaux de l'informatique. Les élèves développent leurs compétences en programmation, algorithmique, bases de données et architecture matérielle tout en menant des projets complexes.

01Structures de données
Étude des différentes manières d'organiser et de stocker des données en mémoire pour faciliter leur traitement. Découverte des structures linéaires et non linéaires.
Étude des listes, piles et files, de leurs interfaces et de leurs implémentations. Compréhension de l'allocation mémoire et des opérations d'insertion et de suppression.
Découverte des structures hiérarchiques à travers les arbres binaires et les arbres binaires de recherche. Calcul de la taille, de la hauteur et parcours d'arbres.
Modélisation de relations complexes à l'aide de graphes orientés ou non orientés. Représentation par matrices d'adjacence et listes de successeurs.

02Bases de données
Compréhension des enjeux liés au stockage massif de l'information. Apprentissage du modèle relationnel et du langage d'interrogation SQL.
Compréhension du modèle relationnel pour structurer et stocker des données. Étude des relations, attributs, clés primaires et clés étrangères.
Utilisation du langage SQL pour interroger et manipuler une base de données relationnelle. Réalisation de requêtes simples et de jointures.
Rôle et fonctionnement d'un SGBD dans la gestion des accès, de la concurrence et de la sécurité. Sensibilisation aux enjeux de confidentialité.

03Architectures matérielles, systèmes d'exploitation et réseaux
Exploration du fonctionnement interne des ordinateurs, de la gestion des ressources par le système d'exploitation et des protocoles de communication réseau.
Étude de l'intégration des composants (CPU, mémoire, périphériques) sur une seule puce. Analyse des avantages en termes de coût et de consommation énergétique.
Compréhension de l'ordonnancement des processus et de l'allocation des ressources par l'OS. Étude des états d'un processus et des situations d'interblocage.
Fonctionnement des réseaux TCP/IP et des algorithmes de routage. Étude des protocoles RIP (vecteur de distance) et OSPF (état des liens).

04Langages et programmation
Maîtrise des concepts avancés de programmation, incluant la récursivité, la programmation orientée objet et les bonnes pratiques de développement.
Apprentissage de la programmation récursive et de son exécution en mémoire. Conception de fonctions s'appelant elles-mêmes avec une condition d'arrêt.
Introduction à la programmation orientée objet (POO). Définition de classes, d'attributs, de méthodes et du concept d'encapsulation.
Bonnes pratiques de développement, utilisation d'API et création de modules. Importance des tests, des assertions et de la documentation du code.

05Algorithmique
Conception et analyse d'algorithmes complexes pour résoudre des problèmes d'optimisation et de recherche sur des structures de données avancées.
Implémentation des parcours en largeur et en profondeur. Recherche de chemins et exploration exhaustive des structures de données non linéaires.
Étude du paradigme algorithmique 'Diviser pour régner' pour optimiser la résolution de problèmes. Application au tri fusion et à la recherche dichotomique.
Introduction à la programmation dynamique pour résoudre des problèmes d'optimisation. Utilisation de la mémoïsation pour éviter les calculs redondants.