Première NSI

En Bref,

En classe de première, les thèmes vous permettront de comprendre les différentes notions de bases en informatique: de la programmation au matériel en passant par l'étude d'un réseau:

  • Langages et programmation, dont le langage Python sera le principal support. Donner les bases pour pouvoir programmer dans les autres langages: C, Javascript, PHP etc.
  • Les données: nous expliquerons comment sont représentées les types de base en machine: entiers, entiers relatifs, flottants ( avec une virgule ).

En complément, nous expliquerons comment sont représentés les nombres réels en machine.

  • Le matériel et les systèmes d'exploitation: comprendre le fonctionnement d'un ordinateur du matériel au logiciel. Découvrir un autre système d'exploitation, ce qu'est le logiciel libre. Comprendre le fonctionnement d'un réseau comme internet.
  • Le Web: savoir écrire une page internet à l'aide du langage HTML et CSS. Nous utiliserons Javascript et PHP ; deux langages de programmation pour le Web.
  • Algorithmique: Etudier quelques algorithmes plus élaborés comme les algorithmes de tri, les algorithmes gloutons ou des plus proches voisins (KNN).

Des éléments d'histoire de l'informatique seront donnés tout au long de l'année: vous découvrirez des personnages surpenants comme Alan Turing ou Ada Lovelace.

Vous trouverez le nécessaire pour le langage Python en classe de première dans les bases en Python .


Progression

  • Encodage, type et valeurs de base

    • Entier naturels : base 2, base 16.
    • Entiers relatifs.
    • Nombres réels.
    Algèbre booléenne et lois: propriétés, tables de vérité, loi de De Morgan.

  • Langages et programmation

    •Constructions élémentaires.
    Variables, affectation, fonctions et structure conditionnelle.
    •Boucles bornées, Boucles non bornées, variant de boucle.
    •Fonctions: portée des variables, spécification et jeux de tests.

  • Types construits

    Chaîne de caractères.
    •Tuple ou n-uplet, liste, dictionnaire.
    •Compréhension de liste et de dictionnaire, mutabilité
    •Liste de liste (matrices),
    Données en table : gestion des fichiers, fichiers CSV, opération sur les tables et jointures.

  • Architecture matérielle & système d’exploitation

    •Circuits combinatoires
    •Système d'exploitation:GNU/Linux  et ligne de commande,
    •Le logiciel libre: défition, enjeux.

  • Encodage, type et valeurs de base.

    Flottants et ASCII, Unicode.

  • Algorithmique

    •Algorithmes fondamentaux : parcours séquentiel de liste, recherche du maximum, tri insertion/selection.
    Complexité .
    •Correction d'un algorithme: invariant.

  • Architecture matérielle & système d’exploitation

    •Architecture de Von Neumann
    •Langage machine
    Réseau et structure en couche : modèle OSI, TCP/IP.

  • Algorithmique avancée

    Recherche dichotomique: améliorer la complexité de l'agorithme de recherche d'une occurence dans une séquence.

  • Le Web

    •Structure d'une page : HTML
    •Mise en forme : CSS
    •Côté client :HTML/CSS, Javascript

  • Algorithmique avancée

    •Algorithmique avancé : algorithmes gloutons.
    •Rendu de monnaie, coloration d’une carte, problème du sac à dos, le voyageur.

  • IHM sur le Web

    •Relation client-serveur, http, méthode GET, POST.
    •Javascript, PHP

  • Interface IHM et ioT

    •Réalisation d’une page Web avec NodeRED : prise (et affichage sur la
    page) de différentes valeurs à l’aide d’un capteur.
    •Mini projet Raspberry et SenseHat .

  • Algorithmique avancée

    •Algorithmique avancé : k plus proches voisins.


Projets

Les projets sont regroupés sur la page TP, mini-projets et projets :Projets.
Deux exemples de projets pour l'année de première et de terminale:
un système proie-prédateur et le célèbre jeu de la vie, programmés en Python, avec une interface graphique assez basique: Tkinter.

Note:

Ces scripts sont lancés sur un système d'exploitation GNU/Linux, le bureau est baptisé MATE. Compiz gère les bureaux 3D.
L'interpréteur Python Spyder est lancé en ligne de commande, ou terminal que nous étudierons en classe. On peut voir les processus au cours de la video lancés avec la commande top.
Les musiques sont jouées dans le script à l'aide du module Pygame.


Projets présentés

Dans l'ordre d'apparition:

Wator

Dans une mer torique, c'est à dire où les extrémités se rejoignent, vivent des thons et des requins, chaque espèces suivant ses propres règles de vie et de reproduction. A chaque vague un poisson se déplace, évidemment si un requin rencontre un thon, il le dévore.

Jeu de la vie

Ce n'est un jeu que sur le choix de la configuration de départ, par exemple trouver une configuration stable, avec cycle, etc. Il admet les règles de vie suivantes pour chaque cellule:

Cellule morte

– Si, à l’instant t, il est dans l’état mort (représenté par la couleur blanche), alors le microcalculateur examine ses 8 voisins ; si 3 exactement sont vivants, il passe dans l’état vivant à l’instant t +1 ; sinon, il reste dans l’état mort.

Cellule vivante

– Si, à l’instant t, il est dans l’état vivant (représenté par la couleur noire), alors le microcalculateur examine ses 8 voisins ; si 2 ou 3 sont dans l’état vivant, le calculateur reste dans l’état vivant à l’instant t+1 ; sinon, il meurt. En résumé : « Naissance si 3 voisins vivants, survie si 2 ou 3 ».

Toutes les naissances et toutes les morts ont lieu en même temps au cours d'une génération.

John von neumann posa les bases des automates cellulaires, et John Conway imagina ce "jeu" vers 1970.