ADAGE

Historique

Ces compétences sont introduites dans l'article intitulé Computational thinking: the developing definition de Selby et Woollard publié en 2013.

Elles sont reprises dans le travail de V. Dagienė sur le projet Bebras et publié entre autres dans l'article Developing a Two-Dimensional Categorization System for Educational Tasks in Informatics de 2017. Ces compétences ont d'ailleurs été utilisé dans le projet anglais "Computing at School". Un guide à ce sujet a d'ailleurs été rédigé pour les enseignants anglais.

Présentation générale

ADAGE est un acronyme désignant un ensemble de 5 compétences que doivent permettre d'acquérir les cours d'informatique. Les connaître donne donc des guides pour définir le contenu de ses cours d'une part, et aider à déterminer les évaluations d'autre part.

Les compétences en question sont les suivantes :

Détail des compétences

Abstraction

L'abstraction est la compétence qui consiste à être capable, dans la modélisation d'un problème, à ne garder que les données pertinentes pour la résolution du problème. Il devient ainsi plus facile de raisonner sur le problème et de le résoudre.

Cette compétence peut être par exemple mise en oeuvre dans la modélisation d'un problème, mais également dans la distinction entre interface et réalisation (classe) pour un concept donné.

Décomposition

La décomposition est la compétence qui consiste à être capable de décomposer un problème complexe en sous-problèmes plus simples, et ce, récursivement, jusqu'à tomber sur des problèmes simples que l'on sait résoudre.

Cette compétence est par exemple mise en oeuvre dans les 2 cas suivants :

Pensée Algorithmique

La pensée algorithmique est une compétence qui consiste essentiellement à comprendre comment une succession d'étapes permet d'atteindre un objectif. Même si la définition de base ne parle que de l'aspect séquentiel, il semble logique d'ajouter à cette notion les concepts d'itération et de conditionnelle.

Généralisation

La généralisation est une compétence qui consiste à savoir reconnaître que 2 problèmes différents ne sont en fait que des cas particuliers d'un même problème et ainsi, à savoir produire une solution pour tous les problèmes de la même famille.

Cette compétence est notamment celle qui va permettre d'introduire judicieusement de nouvelles fonctions, de nouvelles classes (et super-classes), de nouveaux Design Patterns, etc.

Évaluation

L'évaluation est une compétence qui consiste à être capable de juger la solution produite : est-elle correcte ? est-elle suffisamment efficace en temps et et en espace ? Le logiciel est-il facile à utiliser ?

Cette compétence est donc liée aux notions de complexité, de test, de qualité de code, de vérification. Mais avant tout, elle nécessite de savoir évaluer ce que produit un algorithme, en terme de valeur et en terme de type.