# I. Bases de données
### 1. [Silo](https://wiki.inria.fr/wikis/sciencinfolycee/images/2/2e/LSICh7.pdf)
**URL** : https://wiki.inria.fr/wikis/sciencinfolycee/images/2/2e/LSICh7.pdf
**Type** : Cours pour enseignant
**Commentaire** : Il s'agit d'un support rédigé relativement complet sur la matière. Il va bien au-delà du cours de NSI, mais il permet d'avoir un bon recul sur le domaine général que constituent les bases de données relationnelles.
### 2. [Site de Bruno Mermet](https://mermet.users.greyc.fr/Enseignement/EnseignementInformatiqueLycee/Havre/Bloc4/indexBD.html)
**URL** : https://mermet.users.greyc.fr/Enseignement/EnseignementInformatiqueLycee/Havre/Bloc4/indexBD.html
**Type** : Cours du DIU EIL
**Commentaire** : Cours agrémenté d'exercices corrigés. Tout en allant plus loin que le programme de NSI (conformément au programme du DIU), ce cours reste assez proche du programme de NSI. Le SGBD choisi est SQLite, qui présente l'avantage de ne pas nécessiter d'installation particulière, mais qui reste assez sommaire en termes de fonctionnalités implantées.
### 3. [Site de Stéphan Van Zuijlen (Lycée de Draguignan)](https://isn-icn-ljm.pagesperso-orange.fr/T-NSI/co/Bases_de_donnees.html)
**URL** : https://isn-icn-ljm.pagesperso-orange.fr/T-NSI/co/Bases_de_donnees.html
**Type** : Cours de terminale NSI avec exercices et projet
**Commentaire** : Cours assez complet et suffisamment simple pour être compréhensible par tous, allant jusqu'au développement d'une application Web en PHP. Attention cependant : pour les aspects SQL, trois SGBD différents sont utilisés (Oracle, SQLite, MySQL), et leurs idiomes sont utilisés sans que cela soit précisé.
### 4. [Site de David Latouche & Cédric Gerland (Lycée Saint-Exupéry Mantes la Jolie)](http://nsi4noobs.fr/-Partie-B-Bases-de-donnees-)
**URL** : http://nsi4noobs.fr/-Partie-B-Bases-de-donnees-
**Type** : Cours de terminale NSI avec activités
**Commentaire** : Cours complet, avec de nombreuses capsules vidéos et activités associées expliquant les principes du modèle relationnel, des SGBDR, et du SQL (SQLite avec DB Browser et sqlite3 sous Python).
## A. Modèle relationnel (relation, attribut, domaine, clef primaire, clef étrangère, schéma relationnel)
### 1. [Lycée Blaise Pascal de Clermont Ferrand](https://info.blaisepascal.fr/cpge-bases-de-donnees-relationnelles)
**URL** : https://info.blaisepascal.fr/cpge-bases-de-donnees-relationnelles
**Type** : Cours de CPGE
**Commentaire** : La partie sur le modèle relationnel est en parfaite adéquation avec le programme de NSI. Ce n'est par contre pas vraiment le cas de la partie sur SQL, qui n'envisage que l'aspect LID (Langage d'Interrogation de Données), mais qui sur ce point, va plus loin que ce qu'on peut attendre d'élèves de Terminale (INNER JOIN, LEFT JOIN, etc.).
### 2. [Site d'Olivier Lécluse](https://www.lecluse.fr/nsi/NSI_T/bdd/modrel/)
**URL** : https://www.lecluse.fr/nsi/NSI_T/bdd/modrel/
**Type** : Cours pour enseignant
**Résumé** : À partir de l'examen d'une petite table, des problématiques sont identifiées et des principes de base énoncés pour construire le modèle relationnel. Quelques exercices type papier/crayon sont donnés à la fin.
**Commentaire** : Ce cours constitue une introduction au modèle relationnel. Il est complété d'une série de trois TP sur SQL qui exploitent le même exemple que celui donné en introduction.
## B. Base de données relationnelle
### 1. [DIU-EIL Lyon](https://forge.univ-lyon1.fr/diu-eil/bloc4/-/tree/master/4_bases_de_donnees_normalisation)
**URL** : https://forge.univ-lyon1.fr/diu-eil/bloc4/-/tree/master/4_bases_de_donnees_normalisation
**Type** : Cours de DIU sous la forme d'un dépôt Git avec PDF, vidéos et TP SQL
**Commentaire** : Il s'agit d'un cours sur la normalisation des bases de données qui va bien au-delà du programme de la classe de terminale. Cependant, il permet à l'enseignant de pouvoir mieux justifier des normalisations "intuitives" qu'il faudra sans nul doute demander aux élèves de réaliser.
## C. Système de gestion de bases de données relationnelles
### 1. [DIU-EIL Lyon](https://forge.univ-lyon1.fr/diu-eil/bloc4/-/tree/master/3_bases_de_donnees_introduction)
**URL** : https://forge.univ-lyon1.fr/diu-eil/bloc4/-/tree/master/3_bases_de_donnees_introduction
**Type** : Cours de DIU sous la forme d'un dépôt Git avec PDF, vidéos et TP SQL
**Commentaire** : Très bon outil pour tester. Les bases de données au format sqlite peuvent être téléchargées pour une utilisation hors ligne, ou une utilisation dans Python.
## D. Langage SQL: requêtes d’interrogation et de mise à jour d’une base de données.
### 1. [W3 Schools](https://www.w3schools.com/sql/default.asp)
**URL** : https://www.w3schools.com/sql/default.asp
**Type** : Site en ligne activités, TP et projets, cours et exercices
**Commentaire** : Un tutoriel en ligne (et en anglais) qui permet de découvrir pas-à-pas SQL avec exécution interactives de requêtes. Va bien au-dela du programme de Terminale.
### 2. [SQLite Browser](https://sqlitebrowser.org/dl/)
**URL** : https://sqlitebrowser.org/dl/
**Type** : Outil
**Commentaire** : Permet de créer et d'importer des bases de données, et d'exécuter des requêtes SQL directement dans une fenêtre. C'est un outil très pratique, car il permet de travailler uniquement sur les requêtes SQL, sans passer par une interface Python (au moins dans un premier temps). L'outil fonctionne sans installation (version portable), donc pratique dans les environnements de lycée. Il existe pour un environnement Windows, Linux et MacOs. Il dispose aussi d'une fonction d'enregistrement des différentes requêtes SQL, ce qui semble pratique pour l'interaction enseignant-élève.
Une notice simple pour créer une base de données est disponible à l'adresse : http://prof.math.free.fr/mgtmn/tp/bdd_pres_dbb_sqlite.pdf
### 3. [SQLite manager](https://addons.mozilla.org/fr/firefox/addon/sqlite-manager-webext/)
**URL** : https://addons.mozilla.org/fr/firefox/addon/sqlite-manager-webext/
**Type** : Outil
**Commentaires** : Extension pour Firefox apportant des fonctionnalités similaires à SQLiteBrowser.
### 4. [TPs du CNAM](http://deptfod.cnam.fr/bd/tp)
**URL** : http://deptfod.cnam.fr/bd/tp/
**Type** : Exercices en ligne
**Résumé** : Base d'exercices corrigés sur des tables d'une base de données de films (elle-même issue du site TMDB), les schémas des tables étant donnés.
**Commentaire** : L'onglet "Jeux de données" permet également de récupérer le fichier sql reprenant l'intégralité des tables, si l'on souhaite travailler en local sans accès aux corrections, directement importable dans MySQL (il faudra le modifier pour l'utiliser avec sqlite).
Ce type d'exercices permet notamment de suivre le commentaire présent dans le programme : "On privilégie la manipulation de données nombreuses et réalistes."
### 5. [WebTIC](http://webtic.free.fr/sql/exint/q1.htm)
**URL** : http://webtic.free.fr/sql/exint/q1.htm
**Type** : Exercices en ligne
**Commentaire** : Base d'exercices corrigés sur des relations d'une base de données de comptabilité (articles, fournisseurs, bon de commande). La ressource est identique à la précédente, mais le format de la base utilisée est différent. La base de données au format sqlite peut être téléchargée en suivant le lien : http://info.blaisepascal.fr/wp-content/uploads/2019/01/facturation.sqlite.
### 6. [Lycée Carnot - base de données "peinture"](https://carnot.cpge.info/wp-content/uploads/2020/02/tp13_sql.pdf)
**URL** : https://carnot.cpge.info/wp-content/uploads/2020/02/tp13_sql.pdf
**Type** : TP à l'origine pour des élèves de CPGE, mais utilisable en Terminale
**Commentaire** : Cette fiche d'exercices sur la peinture permet d'exploiter une base de données comprenant 5 relations. La base de données est au format sqlite (lien de téléchargement : https://carnot.cpge.info/wp-content/uploads/2020/02/peinture.db).
Chaque table contient un nombre limité d'enregistrements, ce qui permet de les parcourir avec SqliteBrowser. La difficulté des exercices va *crescendo*.
### 7. [Lycée Carnot - base de données "cartographie"](https://carnot.cpge.info/wp-content/uploads/2020/03/tp17_condensateur_et_villes.pdf)
**URL** : https://carnot.cpge.info/wp-content/uploads/2020/03/tp17_condensateur_et_villes.pdf
**Type** : TP - projet à l'origine pour des élèves de CPGE, mais adaptable pour la Terminale
**Commentaire** : Cette fiche d'exercices contient deux parties. Chacune est indépendante l'une de l'autre. Elle fonctionne avec une base au format sqlite (voir ci-dessous).
- La première partie n'a aucun rapport avec les bases de données, mais permet de prendre en main le tracé de courbes avec matplotlilb. Il est en lien avec le programme de spécialité de Physique-Chimie de terminale (partie Ondes et Signaux - 3. Étudier la dynamique d’un système électrique). Il consiste à tracer, à partir d'un fichier texte, la courbe de charge ou de décharge d'un condensateur, puis de trouver le temps caractéristique.
- La deuxième partie traite de la cartographie. Il permet de représenter la position des villes françaises en fonction d'un ou plusieurs critères. La base de données contient une seule relation (plus de 36000 enregistrements - 1 par commune). Il répond au commentaire suivant :
>“On privilégie la manipulation de données nombreuses et réalistes.”
**Fichiers associés** :
- https://carnot.cpge.info/wp-content/uploads/2020/03/charge.txt
- https://carnot.cpge.info/wp-content/uploads/2020/03/decharge.txt
- https://carnot.cpge.info/wp-content/uploads/2020/03/villes.db
### 8. [Lycée Brizeux](https://www.cpge-brizeux.fr/wordpress/wp-content/uploads/TP1-bases-de-donn%C3%A9es.pdf)
**URL** : https://www.cpge-brizeux.fr/wordpress/wp-content/uploads/TP1-bases-de-donn%C3%A9es.pdf
**Type** : TP conçu pour des élèves de CPGE
**Commentaire** : Ce TP fonctionne avec une base de données au format sqlite (https://www.cpge-brizeux.fr/wordpress/wp-content/uploads/geo.zip). La base contient 3 relations. Ce TP permet de travailler sur des données de communes (évolution de population, canton, surface, altitude, etc), de département et de région. Il reste relativement proche des exigences du programme de terminale, à l'exception de quelques points (fonctions arithmétiques, GROUP BY), et aborde les jointures de manière assez simples. Il offre la possibilité de créer un projet en le couplant à une problématique géographique.
### 9. [Base cinéma](http://pcsi.kleber.free.fr/IPT/doc/movies.sqlite)
**URL** : http://pcsi.kleber.free.fr/IPT/doc/movies.sqlite
**Type** : Base de données au format SQLite
**Commentaire** : Base consacrée au cinéma, contenant trois relations : *movie* (6 attributs et 1845 enregistrements), *actor* (2 attributs et 5945 enregistrements) et *casting* (3 attributs et 15713 enregistrements).
### 10. [Base tableau périodique](http://pcsi.kleber.free.fr/IPT/doc/periodic.sqlite)
**URL** : http://pcsi.kleber.free.fr/IPT/doc/periodic.sqlite
**Type** : Base de données au format SQLite
**Commentaire** : Base consacrée à la classification périodique avec 1 relation (17 attributs et 118 enregistrements)
### 11. [Base Nobel](http://pcsi.kleber.free.fr/IPT/doc/nobel.sqlite)
**URL** : http://pcsi.kleber.free.fr/IPT/doc/nobel.sqlite
**Type** : Base de données au format SQLite
**Commentaire** : Base consacrée aux Prix Nobel, contenant 3 attributs et 816 enregistrements.
### 12. [Site d'Olivier Lécluse - TP 1](https://notebooks.lecluse.fr/nsi/terminale/bases%20de%20donn%C3%A9es/sql/tp/2020/06/23/nsi_t_SQL.html)
**URL** : https://notebooks.lecluse.fr/nsi/terminale/bases%20de%20donn%C3%A9es/sql/tp/2020/06/23/nsi_t_SQL.html
**Type** : TP clé en main - document élève
**Résumé** : Ce TP fait directement suite au cours sur le modèle relationnel et en partant de l'exemple du cours, la base de données est construite, table par table, sur un modèle relationnel. Les premières commandes SQL sont vues à l'occasion : *INSERT* et *SELECT* simples. Ce TP est complété par deux autres décrits ci-dessous.
**Commentaire** : Le système de base de donnée choisie est SQLite mais l'accès se fait par Jupyter qui est un outil polyvalent déjà utilisé pour Python. L'aspect base de données sous Python est volontairement laissé de côté sur cette partie. Le TP est pur SQL. L'élève est guidé et on profite de l'aspect *notebook* de Jupyter pour donner les explications et les consignes au fil du TP. Des cellules de validation (à base de assert) permettent à l'élève d'avancer en relative autonomie.
### 13. [Site d'Olivier Lécluse - TP 2](https://notebooks.lecluse.fr/nsi/terminale/bases%20de%20donn%C3%A9es/sql/tp/2020/06/23/nsi_t_SQL2.html)
**URL** : https://notebooks.lecluse.fr/nsi/terminale/bases%20de%20donn%C3%A9es/sql/tp/2020/06/23/nsi_t_SQL2.html
**Type** : TP clé en main - document élève
**Résumé** : Ce TP fait suite au premier dont le lien figure ci-dessus. Les requêtes *SELECT* plus évoluées y sont abordées, y compris les jointures.
**Commentaire** : Ce TP est conçu également sur Jupyter, mais est - comme les deux autres de la série - tout à fait transposable par copier/coller dans *SQLitebrowser*. Il reprend la même forme de guidage pour une plus grande autonomie de l'élève.
### 14. [Site d'Olivier Lécluse - TP 3](https://notebooks.lecluse.fr/nsi/terminale/bases%20de%20donn%C3%A9es/sql/tp/2020/06/23/nsi_t_SQL3.html)
**URL** : https://notebooks.lecluse.fr/nsi/terminale/bases%20de%20donn%C3%A9es/sql/tp/2020/06/23/nsi_t_SQL3.html
**Type** : TP clé en main - document élève
**Résumé** : Dans ce troisième et dernier TP de la série, la manipulation de données avec *UPDATE* et *DELETE* est abordée.
**Commentaire** : Dernier opus dans la même veine que les deux précédents, toujours en SQL pur. A noter que pour les trois TP, un document Jupyter *professeur* corrigé est disponible à l'adresse cachée suvante : https://www.lecluse.fr/nsi/NSI_T/bdd/prof/
## E. SQL et Python
### 1. [Site d'Olivier Lécluse - TP 4](https://notebooks.lecluse.fr/python/nsi/terminale/bases%20de%20donn%C3%A9es/sql/tp/2020/06/25/nsi_t_PythonSql.html)
**URL** : https://notebooks.lecluse.fr/python/nsi/terminale/bases%20de%20donn%C3%A9es/sql/tp/2020/06/25/nsi_t_PythonSql.html
**Type** : TP clé en main - document élève
**Résumé** : Ce TP fait suite aux autres TP purement SQL : le même exemple basique du départ du cours est repris mais on apprend à interroger la base de données en SQL depuis Python.
**Commentaire** : L'outil utilisé pour Python est ici Jupyter. Le TP est transposable sur un autre outil sans difficultés. Des cellules d'autocorrection sont insérées après chaque question afin que l'élève puisse s'autocorriger. Couplé avec l'extension *nbgrader*, l'enseignant bénéficie ainsi d'une correction automatique.
### 2. [Site d'Olivier Lécluse - TP 5](https://notebooks.lecluse.fr/python/nsi/terminale/bases%20de%20donn%C3%A9es/sql/tp/2020/06/25/nsi_t_baseDataGouv.html)
**URL** : https://notebooks.lecluse.fr/python/nsi/terminale/bases%20de%20donn%C3%A9es/sql/tp/2020/06/25/nsi_t_baseDataGouv.html
**Type** : TP clé en main - document élève
**Résumé** : Dans ce TP, les élèves vont avoir l'occasion de se confronter à des données issues d'une véritable source : data.gouv.fr. Dans un premier temps, ils vont construire la base de données et la peupler. Ensuite, ils vont construire des fonctions python pour tirer des informations pertinentes.
**Commentaire** : Ce TP est à la fois guidé et libre : il peut déboucher sur la réalisation de mini-projets sous forme d'application graphique ou même de site internet. La base contient plus de 3,5 millions d'enregistrements. Cela met en évidence la performance des SGBD même basiques comme SQLite.
:::info
Le corrigé professeur est disponible ici (lien caché) : https://www.lecluse.fr/nsi/NSI_T/bdd/prof/data_gouv/
:::
# II. Langages
## A. Notion de programme en tant que donnée. Calculabilité, décidabilité.
:::danger
Les références ci-dessous sont certes intéressantes, mais elles concernent plus la complexité (pardon, le «coût»), du programme de Première.
### [Interstices](https://interstices.info/la-theorie-de-la-complexite-algorithmique/)
**URL** : https://interstices.info/la-theorie-de-la-complexite-algorithmique/
**Type** : cours
**Commentaire** : une bonne introduction, tout à fait accessible, à la théorie de la complexité.
### [Toptal](https://www.toptal.com/developers/sorting-algorithms)
**URL** : https://www.toptal.com/developers/sorting-algorithms (pas sûr que cela ait ça place ici...)
**Type** : illustration
**Commentaire** : illustration visuelle de la différence de complexité entre différents algorihtmes de tri.
:::
### 1. [Une preuve pour le lycée de l’indécidabilité du problème de l’arrêt](http://www.irem.univ-bpclermont.fr/Indecidabilite-du-probleme-de-l)
par Matthieu Journault, Pascal Lafourcade, Rémy Poulain, et Malika More
**URL :**
http://www.irem.univ-bpclermont.fr/Indecidabilite-du-probleme-de-l
**Type :** Activité de type "informatique sans ordinateur".
**Commentaire :** Cette proposition contribue à la capacité attendue :
> Montrer, sans formalisme théorique, que le problème de l’arrêt est indécidable.
L’activité suit la preuve proposée par Turing, et s'appuie sur le principe du raisonnement par l’absurde et la notion de disjonction de cas. Tout au long de l’activité, les élèves se servent d’une version papier d’un modèle simplifié d’ordinateur pour exécuter à la main des programmes. Certains programmes simples sont ensuite composés ensemble pour obtenir le résultat d’indécidabilité. L'article présente également des retours d'expérience suite à la réalisation de l'activité avec des élèves ou des enseignants en formation continue.
### 2. [Site de Bruno Grenet](http://www.lirmm.fr/~grenet/DIUBloc5/AlgoAvancee.pdf)
**URL** : http://www.lirmm.fr/~grenet/DIUBloc5/AlgoAvancee.pdf
**Type** : Cours de DIU (fichier PDF)
**Commentaire** : Il s'agit d'un cours complet sur le bloc 5 du DIU. Les pages concernant cette partie du programme sont les pages 39 à 68. On y retrouve toutes les notions clés pour avoir un certain recul par rapport au sujet.
## B. Récursivité
### 1. [Montpellier](https://cache.media.education.gouv.fr/file/NSI/13/0/NSI_-\_Montpellier_-\_Recursivite_1292130.zip )
**URL** : https://cache.media.education.gouv.fr/file/NSI/13/0/NSI_-\_Montpellier_-\_Recursivite_1292130.zip
**Type** : Exercices (pdf zippé) avec leurs corrections.
**Résumé** : Fiche de sept exercices sur la récursivité.
Écrire un programme récursif. Analyser le fonctionnement d’un programme récursif.
**Commentaires** : Les exercices présentent des formes variés (analyse d'un programme existant, programme à trou, conception d'un programme à partir d'un algorithme,...) et peuvent être adaptés par l'enseignant pour en modifier la difficulté.
### 2. [HHSS computer science](https://sites.google.com/site/hhsscomputerscience/java-resources/recursion-searching-sorting)
**URL** : https://sites.google.com/site/hhsscomputerscience/java-resources/recursion-searching-sorting
**Type** : Cours-activité; page web - en anglais .
**Commentaire** : Écrire un programme récursif. Analyser le fonctionnement d’un programme récursif.
### 3. [SILO](https://wiki.inria.fr/wikis/sciencinfolycee/images/9/97/LSICh2.pdf)
**URL** : https://wiki.inria.fr/wikis/sciencinfolycee/images/9/97/LSICh2.pdf
**Type** : Cours pour les enseignants et exercices pdf (chapitre d'un livre)
**Commentaire** : Écrire un programme récursif. Analyser le fonctionnement d’un programme récursif. Chapitre avec une partie : questions d'enseignements. L'éditeur a souhaité rendre accessible aux enseignants et à la communauté scientifique l'Introduction à la science informatique en le proposant au prix de 20 euros, en l'éditant sous licence Creative commons et le rendant accessible en ligne gratuitement. Vous pouvez vous faire une idée de son contenu en lisant sur écran les fichiers PDF mis à votre disposition.
### 4. [Cours de Florent Hivert](https://www.lri.fr/~hivert/COURS/CFA-L3/02-Recursivite.pdf)
**URL** : https://www.lri.fr/~hivert/COURS/CFA-L3/02-Recursivite.pdf
**Type** : Cours (PDF)
**Commentaire** : Cours rapide et clair sur la notion de récursivité qui s'appuie sur la notion de pile d'appels. Introduit notamment le concept de récursivité terminale (notion qui n'est pas au programme de NSI mais intéressante à connaitre pour les enseignants)
### 5. [ENIB](https://www.enib.fr/enibook/algorithmic/learning/site/html/recursivite-0-index.html)
**URL** : https://www.enib.fr/enibook/algorithmic/learning/site/html/recursivite-0-index.html
**Type** : Cours et exercices
**Commentaire** : Cours très clair et bien détaillé, avec de nombreux exemples et exercices.
### 6. [Site de Patrice Roi](https://h-deb.clg.qc.ca/Sujets/AuSecours/Comprendre-la-recursivite.html)
**URL** : https://h-deb.clg.qc.ca/Sujets/AuSecours/Comprendre-la-recursivite.html
**Type** : Cours
**Commentaire** : Ce n'est pas la présentation la plus claire, mais présente le concept important (pour les enseignants, pas pour les élèves) de récursivité terminale, et donne aussi quelques critères sur les cas où la récursivité est efficace et ceux où elle l’est moins. Enfin, une bonne liste de ressources (pas toujours à jour malheureusement) est présente à la fin.
### 7. [Apprendre-en-ligne.net](https://www.apprendre-en-ligne.net/info/recursivite/recursivite.pdf)
**URL** : https://www.apprendre-en-ligne.net/info/recursivite/recursivite.pdf
**Type** : Cours et exercices (PDF)
**commentaire** : semble être la nouvelle adresse de http://www.nymphomath.ch/info/recursivite/recursivite.pdf. Support mélangeant à bon escient branché et débranché, applications mathématiques et recréatives.
### 8. [Le web pédagogique](http://projet.eu.org/pedago/sin/NSI/cours02/chap3.zip)
**URL** : http://projet.eu.org/pedago/sin/NSI/cours02/chap3.zip
**Type** : Cours et exercices (Archive zip)
**Commentaire** : Cours et TD prêts à l'emploi avec une partie sur sur la récursivité (et les algoritmes de tri récursifs), ainsi que sur les algorithmes de type "diviser pour régner".
## C. Modularité
### [Site de David Latouche & Cédric Gerland (Lycée Saint-Exupéry Mantes la Jolie)](http://nsi4noobs.fr/-Partie-D-Langages-et-programmation-)
**URL** : http://nsi4noobs.fr/-Partie-D-Langages-et-programmation-
**Type** : Cours de terminale NSI avec activités
**Commentaire** : Avec comme fil rouge la réalisation d'une API d'analyse d'un fichier GPX permettant à partir d'un site web (Open Street Map) de cartographier des déplacements, les élèves découvrent au travers de capsules vidéos et d'activités associées, l'utilisation de l'API lxml.etree (gestion fichier GPX) et de la bibliothèque Folium.
## D. Paradigmes de programmation
### 1. [Cours de DIU à Lyon](https://forge.univ-lyon1.fr/diu-eil/bloc4/-/tree/master/1_paradigmes_de_programmation)
**URL** : https://forge.univ-lyon1.fr/diu-eil/bloc4/-/tree/master/1_paradigmes_de_programmation
**Type** : Cours de DIU. Dépôt Git avec PDF et TP Python.
### 2. [Site de Bruno Mermet](https://mermet.users.greyc.fr/Enseignement/EnseignementInformatiqueLycee/Havre/Bloc4/indexParadigmes.html)
**URL** : https://mermet.users.greyc.fr/Enseignement/EnseignementInformatiqueLycee/Havre/Bloc4/indexParadigmes.html
**Type** : cours de DIU
**Commentaire** : Cours qui présente un certain nombre de paradigmes de programation (fonctionnelle, logique, événementielle, parallèle) avec des exemples et des exercices faisables en ligne. Il s'agit essentiellement d'un cours de culture générale, qui va bien au-delà du programme de Terminale. Cependant, chacun des paradigmes évoqués peut être présenté en Terminale à l'occasion d'un projet.
### 3. [Silo](https://wiki.inria.fr/wikis/sciencinfolycee/images/9/97/LSICh2.pdf)
**URL** : https://wiki.inria.fr/wikis/sciencinfolycee/images/9/97/LSICh2.pdf
**Type** : Cours (pdf) pour les enseignants
**Commentaire** : Il s'agit d'un cours portant essentiellement sur les caratéristiques et la sémantique des langages impératifs. Les concepts communs à la plupart de ces langages sont présentés clairement. Quelques pages sont aussi consacrées aux aspects didactiques associés.
### 4. [Repl.it](https://repl.it/)
**URL** : https://repl.it/
**Type** : Outil
**Commentaire** : Un interpréteur en ligne pour de nombreux langages. Très pratique pour faire découvrir certains langages sans aucune installation.
### 5. [Swish](https://swish.swi-prolog.org/)
**URL** : https://swish.swi-prolog.org/
**Type** : Outil
**Commentaire** : Un interpréteur en ligne pour prolog. Pratique pour un TP de découverte de la programmation logique.
### 6. [CodeShare](https://codeshare.io/)
**URL** : https://codeshare.io/
**Type** : Outil d'édition de code collaborative
**Commentaire** : Très pratique, avec mise en évidence syntaxique pour de nombreux langages, mais présente le risque d'être utilisé pour communiquer lors de contrôles sur machine.
### 7. [Python Tutor (et variations)]( http://www.pythontutor.com/ )
**URL** : http://www.pythontutor.com/
**Type** : Outil d’interprétation en ligne (python / C / C++ / Java )
**Commentaire** : Permet d’exécuter des petits snipsets de code en ligne pas à pas avec visualisation de l’organisation mémoire et de la pile.
## E. Mise au point des programmes, Gestion des bugs
### 1. [Cours de Bruno Mermet sur le Test Logiciel](https://mermet.users.greyc.fr/Enseignement/CoursPDF/coursTestL3.pdf)
**URL** : https://mermet.users.greyc.fr/Enseignement/CoursPDF/coursTestL3.pdf
**Type** : Cours de Licence 3 Informatique
**Commentaire** : Il s'agit d'un cours de Licence Informatique d'introduction au test. La première partie (transparents 1 à 5) présente quelques exemples de bugs marquants montrant l'importance de la "mise au point" d'un programme. Le coeur du document, consacré à la définition des tests, est hors sujet par rapport à NSI (mais peut donner une culture générale sur les principes de constructions des tests pour les enseignants). La partie sur les "tests humains" (transparents 73) permet de trouver des principes généraux qu'il est possible de faire passer aux élèves pour éviter les bugs (check-list et inspection) et pour mieux comprendre le fonctionnement des programmes (pas-à-pas surtout, mais aussi relecture par les pairs). Enfin, les transparents 74 à 80 donnent quelques grands principes à mettre en oeuvre pour le débuggage.