Liste des compétences
| Discipline | Compétence | Ressources | Situations |
|---|---|---|---|
| Informatique INF.3.1 Algorithmique et programmation |
Définir ce qu’est un algorithme, représenter un algorithme de différentes manières et interpréter des algorithmes simples. |
|
|
| Informatique INF.3.2 Algorithmique et programmation |
Savoir utiliser les principales méthodes de résolution de problèmes et résoudre des problèmes à l’aide d’algorithmes. |
|
|
| Informatique INF.3.3 Algorithmique et programmation |
Se servir des éléments essentiels d’un langage de programmation, utiliser les types de données appropriés pour des problèmes simples |
|
|
| Informatique INF.3 Algorithmique et programmation |
Comparer des algorithmes simples, prendre conscience de la différence d’efficacité des algorithmes pour résoudre un même problème et des limites de l’algorithmique pour certains problèmes. |
|
|
| Informatique INF.3.3 Algorithmique et programmation |
Diagnostiquer et corriger une erreur. |
|
|
Définir ce qu’est un algorithme, représenter un algorithme de différentes manières et interpréter des algorithmes simples.
Savoir représenter un algorithme de manières différentes (pseudocode, ordinogramme) et d'en analyser le fonctionnement en utilisant différentes approches (pas à pas, tableau d’états).
Les élèves réfléchissent aux algorithmes qu'ils utilisent dans la vie de tous les jours (recette de cuisine, aller à l'école, aller à la piscine) et décrivent ces différents algorithmes. A partir des propositions des élèves, faire réfléchir aux différentes caractéristiques (importance ou non de l'ordre des tâches, répétitions de certaines tâches) et proposer différentes méthodes de représentation de l'algorithme à l'aide d'exemples qu'ils pourront appliquer à leurs propositions.
Savoir utiliser les principales méthodes de résolution de problèmes et résoudre des problèmes à l’aide d’algorithmes.
Comprendre et savoir utiliser différentes méthodes de résolution de problèmes (spécification du problème, décomposition en sous-problèmes, amélioration par itération, passage du simple au complexe, abstraction, vérification et validation).
Dans le cadre d'un cours de robotique, les élèves doivent déplacer un robot afin qu'il suive une ligne en utilisant des capteurs infrarouges.
Dans un processus itératif, les élèves améliorent leur programme en adaptant différents paramètres, par exemple la vitesse de déplacement ou l'angle dont le robot tourne lorsqu'il ne détecte plus la ligne.
Les élèves peuvent également échanger leurs programmes afin de se rendre compte que de mêmes capteurs peuvent avoir des comportements différents.
En se basant sur un algorithme mathématique simple (par exemple la résolution d'une équation du second degré) ou sur un jeu simple (deviner un nombre), les élèves apprennent à découper un problème en sous-problèmes et identifient les procédures nécessaires à la résolution de l'algorithme.
Par exemple, dans le cadre de la résolution d'une équation du second degré, les élèves pourraient imaginer 4 procédures :
Demander les coefficients à l'utilisateur ;
Calculer le discriminant ;
Calculer les solutions de l'équation ;
Afficher le résultat.
Se servir des éléments essentiels d’un langage de programmation, utiliser les types de données appropriés pour des problèmes simples
Savoir définir et utiliser instruction, expression, séquence, structures de contrôle, imbrication, constante, variable, procédure et commentaire.
Savoir définir et utiliser les types de variables simples (nombre, booléen, texte).
Savoir définir et utiliser des fonctions.
Savoir définir et utiliser les types de variables avancés (tableau, liste).
Savoir appliquer les différents concepts de programmation pour implémenter des solutions informatiques à des problèmes donnés.
Dans une approche "lire avant d'écrire", les élèves acquièrent les différents notions de programmation en étant confrontés à de nombreux exemples de programmes qu'ils doivent analyser, commenter, adapter légèrement afin de se construire une bibliothèque de cas pratiques d'écriture d'un programme. Avec le temps, ils deviennent alors eux-mêmes capables d'écrire, dans un premier de manière guidées, des programmes pour résoudre un problème donné.
L'utilisation de la méthode PRIMM, par exemple, permet de "concevoir des situations d’enseignement dans lesquelles les élèves s’engagent de manière progressive dans leur compréhension du code."
Les élèves doivent implémenter un système de gestion d'utilisateurs.
Il mettent en pratique l'approche de découpage du problème en sous-problème (ajouter un utilisateur, supprimer un utilisateur, modifier le mot de passe d'un utilisateur, connecter / déconnecter un utilisateur).
Les données sont stockées dans une base de donnée et les élèves apprennent également à utiliser une API pour interroger la base de donnée.
Comparer des algorithmes simples, prendre conscience de la différence d’efficacité des algorithmes pour résoudre un même problème et des limites de l’algorithmique pour certains problèmes.
Savoir définir et identifier différents critères pour comparer des algorithmes (nombre d’étapes / opérations, temps d’exécution, ressources utilisées).
Comprendre la notion de complexité d'un algorithme (croissance lente (linéaire) vs rapide (quadratique)), savoir l'identifier graphiquement (courbes comparatives simples (une ligne droite vs une parabole)) et l'appliquer à des problèmes classiques (algorithmes de tri, algorithmes de recherche).
Savoir expliquer les limites de certains algorithmes (problèmes trop grands pour être résolus exhaustivement (ex. problème du sac à dos, problème du voyageur), problèmes insolubles (ex. problème de l'arrêt - halting problem), limite physique du temps de calcul).
A partir d'exemples visuel de tri de cartes, les élèves les différentes méthodes utilisées pour trier les cartes.
Une fois la méthode (l'algorithme) définie, les élèves l'applique à une suite de nombres qui doit être triée.
Pour aborder la notion de complexité, les élèves peuvent comparer le nombres d'opérations nécessaires pour chacune méthode de tri.
Cette activité peut être téléchargée (en allemand) à l'adresse https://www.swisseduc.ch/informatik/theoretische_informatik/sortieren/index.html.
Diagnostiquer et corriger une erreur.
Savoir utiliser différentes méthodes pour identifier les erreurs dans un programme et les corriger (interprétation des messages d'erreurs, ajout d'éléments simples dans le programme pour identifier l'endroit et les conditions d'arrêt, exécution pas à pas à l'aide d'un outil de visualisation).
Connaître et savoir identifier les différents types d'erreurs en programmation (syntaxiques, sémantiques et exécution).
Une situation pour la détection d'erreur en 1ère ...
Une situation pour la détection d'erreur en 2ème ...