Aller au contenu

Cours de Première NSI

Bonjour et bienvenue sur ce cours de NSI à destination des classes de première.

Ce site est normalement compatible avec les mobiles. Pour des raisons de simplicité, il n'y a pas de mode clair, uniquement un mode sombre.

Structure du site

  • Cours : Le cours, présenté par thèmes. Les thèmes sont proposés par ordre de dépendances. Une lecture linéaire du cours est donc normalement possible. Le cours inclus des exercices d'illustration.

  • Fiches : Des récapitulatifs de ce qui est à savoir. A l'avenir, les fiches seront intégrées aux cours ou aux entrainements.

  • Entraînement : Des exercices et travaux pratiques, groupés par thème. Ils incluent certains sujets de pratique déjà vus pendant le cours. Des parties notées "récapitulatif" proposant des exercices qui portant sur tous les thèmes précédents seront ajoutées en cours de route.

  • Projets : Des projets qui ont vocation à être faits sur des périodes de cours dédiées, et sur le temps libre.

  • Evaluations : Les sujets des évaluations passées et leurs corrigés.

  • Contributions : Les crédits du site, qui mentionnent des gens ou des outils qui ont directement ou indirectement contribué à la rédaction de ce cours.

Progression

Remarques
  • D'une manière générale le cours est trop détaillé et poussé pour des élèves de première. Il subira à l'avenir une réécriture pour extraire les concepts avancés et les proposer en extension.
  • La programmation est approchée sous un angle d'abord impératif, centré sur les instructions s'excutant en séquence. Cette approche me pose problème vis à vis de la discipline de programmation que je cherche à transmettre. A l'avenir, le cours expérimentera une approche fonctionnelle d'abord, présentant les fonctions et expressions en détail avant d'aborder l'idée d'instructions et de variables, de manière à bien faire ressortir le caractère intemporel de certaines expressions, et son intérêt. Une telle approche est en cours d'essai dans mon cours de seconde.
  • Les chapitres introduisent les notions parfois de manière très dense et condensées. Même si c'est pratique pour revenir dessus plus tard, les notions étant classées et groupées par thème, ça rends parfois le cours lourd à lire. A l'avenir, il faut alléger celà et diffuser certains groupes de notions sur plusieurs chapitres après en avoir introduit le concept.
Algorithmique et programmation Hardware, réseaux et architecture
Instructions, variables et séquences, types et expressions, conditionnelles et while, fonctions Codage entiers base 2, base 16, complément à 2. Fonctions booléennes. Codage en virgule flottante. Codage du texte.
Tableaux indexés, n-uplets, chaînes en tant que séquence, boucle for, mutabilité et effet de bord
Dictionnaires Architecture de Von Neumann
Données en tables, mise au point de programmes
Parcours, recherche, recherche dichotomique, complexité Réseau
Tris, recherche dichotomique, complexité
Algorithmes gloutons Systèmes d'exploitation et phériphériques entrées-sorties
K plus proches voisins (KNN) Web, Diversité et unité de langages de programmation

Remarques sur les contenu

Certains exercices sont marqués Difficiles. Celà veut dire qu'ils vont au delà de ce qu'on attends de vous à ce moment du cours. Ne vous découragez-pas si vous n'y arrivez pas.

Certains exercices ou sections, en général en toute fin de chapitre, sont marqués Exploration. Celà veut dire qu'ils abordent des notions qui sont hors programme et non nécessaires pour comprendre le cours. Ce sont des éléments de curiosité, qui peuvent être source de confusion. Il est donc conseillé de les aborder uniquement si vous êtes confiant avec les notions du chapitre.

  • Certains exercices ont un nombre de lignes associé, par exemple Implantez une fonction qui affiche le plateau du jeu (10 lignes). Dans ce cas, essayez de faire autant ou moins de lignes (les commentaires et sauts )

Dans les exercices, quand des nombres de lignes sont données, essayez de faire autant ou moins, mais ce n'est pas obligatoire. N'essayez pas de faire le code le plus court possible, mais du code compréhensible, en particulier pour vous ! (ne sont comptées comme lignes que les lignes de CODE. Les commentaires et les sauts de lignes ne comptent pas !)

Essayer de faire un exercice sans les aides au moins une fois, puis pour chaque aide, (aide 1, 2, ...), faites un essai !

Si vous allez voir la solution, pensez bien à CORRIGER votre solution (eventuellement en cachant la solution) à la main jusqu'à ce qu'elle soit bonne, ne vous contentez pas de juste lire la solution et de passer à autre chose.

Certains exercices sont marqués comme "Difficile (D) ou Très Difficile (TD)". Ce sont des exercices qui vont au delà de ce que l'on attends de vous à un moment donné du cours. Ne vous en faites pas si vous n'arrivez pas à les faire. Il est toutefois intéressant d'essayer de les résoudre, et/ou de regarder la solution, si vous avez le temps.

Certains exercices sont marqués comme "Exploration (E)". Ce sont des exercices qui vont chercher les limites des concepts présentés, comme par exemple la syntaxe. Ils seront généralement en toute fin de chapitre. Ce ne sont que des exercices de curiosité, pour ceux qui sont très à l'aise. Les solutions peuvent être contre intuitives et créer de la confusion, ne les regardez pas si vous n'êtes pas parfaitement à l'aise avec les autres exercices!