PROJETS




L'enseignement de la spécialité ISN est centré sur les projets. Voir CETTE PAGE pour les documents officiels .
Un projet, qui pourra être choisi parmi ceux proposés ci-dessous, se prépare dans l'année scolaire par groupe de 2 ou 3 élèves.
C'est une sorte de TPE amélioré, mais l'évaluation est individuelle et la note est la note de spécialité au bac avec un coefficient 2.
Je donne mon accord quant au choix de projet que fera le groupe d'élèves et dans tous les cas je dois en suivre l'élaboration et débloquer des situations le cas échéant.
Pour cette raison, une fiche de suivi devra être remplie régulièrement.
Il est ausi souhaitable que vers janvier le projet soit choisi et même amorcé.
Des jeux peuvent être bien sûr proposés en réseau ou non ( 6) et 12) en sont des exemples) .
L'évaluation se fera probablement fin mai ou début juin et il y aura deux enseignants présents : moi-même et un collègue ayant aussi en charge un groupe d'ISN.
Il y aura ensuite une commission d'harmonisation entre tous les enseignants concernés.

Les solutions de certains problèmes se trouvent aisément en ligne et bien entendu le projet ne consiste pas à faire du copier coller et à proposer une simple mise en forme.
Il y a plusieurs phases à respecter : la compréhension du problème posé, son analyse, sa décomposition, le choix de la représentation des données, la conception des fonctions utiles.
Ensuite viennent l'implémentation dans un langage donné (python par défaut), les tests des fonctions implémentées, et l'aspect final avec l'utilisation (facultative) d'une bibliothèque graphique comme tkinter ou pygame.
Le nom des fonctions, des paramètres des fonctions, des variables doivent être explicites et en français.
Les commentaires utiles, ne serait-ce que pour répondre aux questions des examinateurs, seront en français.

Il faudra rester modeste et dans l'esprit du programme.
À ce titre, l'utilisation de classes (programmation objet) sauf celles importées par les bibliothèques graphiques n'est pas souhaitable et pourra être pénalisée.
L'utilisation de tableaux (listes en python) est amplement suffisante.

Il y aura un exposé et éventuellement un mini-projet , tous les deux notés.

Voilà UN EXEMPLE de projet proposé par Mr Djaoui, collègue d'ISN .
Voilà aussi UNE LISTE de projets réalisés par les élèves.
Pour ma part , j'ai réalisé 11 PROJETS ,signalés par (*) , et je propose une solution personnelle .
Ce qui est particulièrement intéressant est l'aspect créatif dans l'élaboration d'une réponse aussi bien dans le choix de la représentation des données que dans celui des fonctions qui seront mises en oeuvre.

MINI PROJET

Mini projet Créer des programmes pour représenter:
un entier naturel avec n bits.
un décimal avec n bits pour la partie entière et m bits pour la partie décimale.
un entier signé sur n bits (plus difficile) .
(Voir un exemple d'implémentation pour chaque dans la partie "approfondissements" de cette page )

La récurivité (fractale, tri-fusion, recherche d'élément dans un tableau trié etc...) pourra être un thème de mini-projet.



PROJETS (liste pas encore définitive)

1) Plus court chemin dans un graphe : algorithme de Dijkstra(*)
Rappeler la problématique du routage dynamique et en donner quelques exemples.
Dans quel protocole(s) intervient l'algorithme de Dijkstra.
Proposer une implémentation de cet algorithme.

2) Les grands entiers(*)
Rappeler quelle est la taille des entiers permise par java et donner des exemples en informatique de l'utilisation de grands entiers.
Créer une bibliothèque de fonctions pour effectuer des calculs(addition , multiplication , soustraction , division euclidienne).
Applications: Calcul de puissances comme 2100, de factorielles comme 100! , de PGCD de 2 grands entiers.

3) Jeu de la vie (automate cellulaire)(*)
Trouver en ligne en quoi consiste ce jeu , rappeler l'historique et donner quelques applications en biologie et en physique.
Implémenter une solution .
Essayer diverses situations initiales de l'automate, varier légèrement les règles de transition.
Trouver des états stables.

4) Problème des n reines (*)
Trouver en ligne en quoi consiste ce problème et rappeler l'historique.
Implémenter le cas n=8 et déterminer toutes les solutions.(problème des 8 dames)
Dans le cas n>8 , en quoi consisterait une méthode exhaustive et quel en serait l'inconvénient?
Proposer une méthode qui donne au moins une solution pour n>8 et l'implémenter.

5) Algorithme de Huffman (*)
Rappeler l'intérêt de la compression avec ou sans perte et en donner quelques exemples.
Donner le lien entre codage préfixe et arbre binaire de codage.
Cas particulier de l'algorithme de Huffman:
dans quels cas intervient-il?
quel est son principe?
Vous aurez le choix entre 2 possibilités d'implémentation:
1)Un texte est saisi et on doit obtenir le codage des caractères qui interviennent dans le texte.
2)On réalise 2 programmes , l'un qui donne la fréquence des caractères se trouvant dans un fichier texte , l'autre , à partir d'un codage des caractères donné , qui compresse et décompresse le fichier texte ( plus exactement qui donne la suite de bits qui correspond à un texte et qui reconstitue le texte à partir d'une suite de bits).

6) Jeu entre 2 postes distants
Deux personnes , chacun sur un poste d'un même réseau local , jouent au jeu de la bataille navale.
L'objectif est de créer un programme qui permet de jouer.
Le jeu doit être initialisé et ensuite les personnes jouent l'une après l'autre.

7) Les fractions (*)
Il s'agit de créer une bibliothèque de fonctions (simplification , addition , soustraction , etc..) sur les fractions qui permettent de faire des calculs exacts sur les fractions et d'en afficher le résultat sous forme de fraction simplifiée.
Proposer un programme qui propose de façon aléatoire des calculs sur les fractions pour des élèves de collège.


8) Robotique avec mindstorms NXT(*)
Constuire une voiture capable de trouver sa route en respectant le sens des voies (différenciées par des couleurs) et qui est capable de se garer si la place est suffisante(entre 2 blocs) ou autre chose de ce genre. voilà QUELQUES CONSEILS

9) Dictionnaire(*)
Créer un dictionnaire des abrévations en informatique (elles sont nombreuses).
Il faut pouvoir donner une nouvelle entrée et la classer , chercher une abrévation etc..
A chaque abrévation doit correspondre une définition.
Des fichiers textes doivent être générés( Il y a une proglet spéciale proposée par java's cool) .

10) Capture de trames avec le logiciel Wireshark
Quelles sont les trames générées par une requête sur un site quelconque (par exemple google).
Rappeler l'architecture en couches du modèle TCP-IP et le principe d'encapsulation.
Détailler plus particulièrement certains protocoles : ARP IP ICMP DNS TCP HTTP.
Expliquer quelques en-têtes.
Détailler quelques algorithmes mis en oeuvre par exemple dans les couches liaison et transport.
(Il n'y a pas de programmation dans ce projet)

11) Les expressions avec des radicaux(*)
Il s'agit de créer un programme générant des exercices sur les radicaux:
Simplification , multiplication , puissance , division .
Les expressions seront de la forme a , a + b√c ou a√b + c√d où a , b , c , d sont des entiers.

12) Jeu entre 2 postes distants
Deux personnes , chacun sur un poste d'un même réseau local , jouent au jeu des allumettes .
L'objectif est de créer un programme qui permet de jouer.
Le jeu doit être initialisé et ensuite les personnes jouent l'une après l'autre.

13) Calcul formel
Quelles sont les structures de données qui peuvent être utilisées ?
Dans un premier temps , étudier le cas de calcul de dérivées à partir d'exemples (pas de programme à réaliser).
Dans un second temps , implémenter une solution pour les polynômes : dérivée , valeur en un point , développement et factorisation dans le cas de racines évidentes.
L'implémentation pourra se faire sous forme d'un générateur d'exercices sur les polynômes.

14) Traitement d'images
En utilisant une proglet de java's cool , créer un programme qui retouche des photos.
La palette des retouches pourra comporter : noir et blanc , recadrement , luminosité , accentuation des noirs , tracé de contour etc..
Une nouvelle image devra être créée.

15) Site web(*)
Créer un site web des projets qui seront réalisés au lycée.
Ce sera l'occasion pour expliquer le principe d'échange des données entre serveur et client web (http).
Dans le site , un programme en javascript sera proposé.

16) Tables de vérité(*)
Créer un programme qui donne le résultat de fonctions logiques.
Il faudra considérer plusieurs entrées et opérateurs possibles
Projet qui fait appel à l'algorithmique , la programmation et l'architecture matérielle.