Pensée computationnelle

De EduTech Wiki
Aller à : navigation, rechercher
Initiation à la pensée computationnelle avec JavaScript
Module: Aspects théoriques de la pensée computationnelle ▬▶
◀▬▬▶
à finaliser débutant
2018/10/13
Voir aussi
Catégorie: JavaScript


Voir aussi/suites

  • Qualité: à finaliser
  • Difficulté: débutant

1 Introduction

La pensée computationnelle (Computational Thinking en anglais, abrégé CT dans le reste de l’article) est un terme se référant, de manière plutôt flexible, à un ensemble d'habiletés, compétences et procédures qui facilitent la résolution de problèmes en s'appuyant sur des principes tirés des sciences informatiques (Computer Science).

Bien que des concepts similaires au CT aient déjà été introduits dans les années 1960 (Guzdial, 2008; Tedre & Denning, 2016) et réactualisés une première fois dans les années 1980, notamment en relation avec le langage LOGO de Papert (1980) utilisé pour apprendre aux enfants la programmation, le terme a connu une plus grande célébrité à partir de 2006, suite à l'article "Computational thinking" de Jeannette M. Wing (Wing, 2006). Dans cet article, Wing suggère que la pensée computationnelle doit être une compétence fondamentale - i.e., "fundemantal skill" dans le texte (Wing, 2006 p. 33) - pour tous, pas simplement pour les informaticiens : « [t]o reading, writing, and arithmetic, we should add computational thinking to every child's analytical ability » (Wing, 2006, p. 33).

Le CT est à la base de plusieurs mouvements qui essaient de (re)définir le rôle de l'informatique dans l'éducation, surtout aux USA (Grover & Pea, 2013), comme par exemple le mouvement Computer Science for All ou Hour of code. Des ressources sur le CT et la manière de l'enseigner à l'école sont mises à disposition sur internet par plusieurs sources, de Google à la BBC. Le concept de CT n'est cependant pas sans critique à la fois au niveau théorique et pratique. Sur le plan théorique, le CT a été critiqué en relation au manque d'une définition claire et, surtout, à la promotion d'atteintes exagérées sur les bénéfices en termes de généralisation à d’autres domaines (Grover & Pea, 2013; Tedre & Denning, 2016). Sur le plan pratique, c'est-à-dire au niveau de l'enseignement dans les écoles, le débat concerne l'utilité et/ou la nécessité de considérer le CT une matière fondamentale, et si cette matière doit être enseignée en ajoute, en substitution, ou en intégration avec d'autres matières fondamentales (RTS, 2016).

2 Définitions et composantes du Computational Thinking

Selon la première définition du CT proposée par Wing (2006, p. 33), « computational thinking involves solving problems, designing systems, and understanding human behavior, by drawing on the concepts fundamental to computer science ». Cette definition a été ensuite mise à jour par Wing elle-même en 2011 : « [c]omputational thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent » (Wing, 2011). Sur la base de ces définitions, Aho (2012) propose une version simplifiée :

We consider computational thinking to be the thought processes involved in formulating problems so their solutions can be represented as computational steps and algorithms (Aho 2012, p. 832)

Aho (2012) suggère également que la définition du CT doit forcément tenir compte à priori de la définition de computation. Si cette définition peut être établie grâce à des modèles existant en informatique (Sipser, 2012), sur le plan pragmatique la computation dépend intrinsèquement de l’agent qui l’effectue, que ce soit une machine ou un être humain. Wing propose une définition très large du concept de computation « [b]y ‘computing’ I mean very broadly the field encompassing computer science, computer engineering, communications, information science and information technology » (Wing, 2008, p. 3717, note de pied de page).

Au contraire, déjà à partir des années 1980, Denning et al. (1989) identifient dans le « computing » une discipline définie de la manière suivante : « The discipline of computing is the systematic study of algorithmic processes that describe and transform information: their theory, analysis, design, efficiency, implementation, and application. The fundamental question underlying all of computing is, “What can be (efficiently) automated? » (Denning et al., 1989, p. 12; voir également Denning & Martell, 2015 pour une description plus approfondie des principes fondamentaux du computing).

En fonction de cette définition, Denning (2016) souligne qu’un algorithme n’est pas une séquence d’étapes quelconques mais doit présupposer la présence d’un modèle :

An algorithm is not any sequence of steps, but a series of steps that control some abstract machine or computational model without requiring human judgment. Computational thinking includes designing the model, not just the steps to control it. (Denning, 2016, p. 33).

Malgré la difficulté à cerner une définition précise de CT, il existe un certain accord sur les éléments qui composent la pensée computationnelle.

2.1 Les éléments de la pensée computationnelle

Les 4 composantes "principales" de la pensée computationnelle.

Le nombre d’éléments qui composent le CT peuvent varier en nombre et complexité des concepts. Par exemple, dans une version simplifiée, le guide proposé par la BBC identifie quatre éléments principaux :

  1. Décomposition
    L’action de diviser un problème complexe ou un système en petites parties plus simples à gérer ;
  2. Reconnaissance de pattern
    L’action d’identifier des similarités entre problèmes ou à l’intérieur du même problème donné ;
  3. Abstraction
    L’action de se focaliser exclusivement sur les parties importantes du problème ;
  4. Algorithmes
    L’action de trouver une solution à travers une règle composée par une série d’étapes.

De manière plus formelle, Aho (2012, pp. 39–40) propose une synthèse des éléments sur lequel il existe un certain accord :

  • Abstraction et généralisation de pattern (y compris modèles et simulations)
  • Traitement systématique de l’information
  • Utilisation de systèmes et représentations symboliques
  • Notions algorithmiques de contrôle du flux
  • Décomposition structurelle d’un problème (modularisation)
  • Pensée itérative, récursive et parallèle
  • Logique conditionnelle
  • Contraintes d’efficacité et de performance
  • Débogage et contrôle systématique des erreurs

2.2 Le rôle fondamental de l’abstraction pour la création d’algorithmes

Parmi les éléments qui composent le CT, Wing (2008, p. 3718) identifie l’abstraction en tant qu’élément fondamental : « [t]he abstraction process—deciding what details we need to highlight and what details we can ignore—underlies computational thinking ». Malgré le fait que dans l’imaginaire collectif le terme abstrait soit associé souvent à quelque chose de difficile ou indéfini, il s'agit plutôt du contraire : la simplification d’un processus à l’essentiel. L’abstraction peut être utilisée à plusieurs niveaux, que ce soit d’un point de vue théorique ou technique. Sur le plan technique, le langage de programmation ou les outils auteurs permettent de faire abstraction par rapport à des niveaux plus bas du dispositif (e.g. afficher un message à l’écran, imprimer, etc.). Sur le plan théorique, l’abstraction est essentielle dans l’identification et la généralisation de pattern, surtout lorsqu’on a affaire avec une grande quantité de données. De plus, selon Wing (2008), l’abstraction dans le traitement de l’information est également l’élément qui permet de différencier le CT d’autres formes de pensée (voir plus bas dans la section critiques du CT).

L’abstraction sert principalement pour identifier le meilleur algorithme pour résoudre le problème donné ou exécuter la tâche déterminée. D’après Wing (2008, p. 3718) « [a]n algorithm is an abstraction of a step-by-step procedure for taking input and producing some desired output ». Si on compare cette définition avec une définition "scolastique" – par exemple, « an algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output » (Cormen, Leiserson, Rivest, & Stein, 2009, p. 5) – on rélève comment l’accent est effectivement mis sur l’abstraction. Importance confirmée d’ailleurs dans le challenge identifié par Wing (2011) :

« Computer scientists already know the value of thinking abstractly, thinking at multiple levels of abstraction, abstracting to manage complexity, abstracting to scale up, etc. Our immediate task ahead is to better explain to non-computer scientists what we mean by computational thinking and the benefits of being able to think computationally. Please join me in helping to spread the word! ».

3 Critiques du CT

Le concept de CT fait l’objet de plusieurs types de critiques, que ce soit au niveau théorique ou pratique. Nous proposons par la suite une liste de points critiques qui ont été soulevés dans la littérature, surtout dans un article de Tedre et Denning (2016), mais également quelques considérations plus générales.

3.1 Manque d’une définition précise et atteintes disproportionnées

La première critique qui est souvent portée au concept de CT concerne le manque d’une définition précise et partagée. Bien qu’il s’agisse d’une critique commune à plusieurs concepts théoriques, dans le cas du CT il existe des circonstances particulières qui accentue la problématique. Ces circonstances concernent le contexte fondamental que le CT essaie d’occuper en tant que compétence de base universelle. Tedre et Denning (op. cit.) affirment cependant que l’attribution au CT d’objectifs inatteignables crée des atteintes disproportionnées, surtout en relation avec la possibilité de généraliser les connaissances/compétences du CT à d’autres domaines (voir également Dillenbourg, 2018 dans les ressources en bas de page). Les auteurs suggèrent d’appliquer une perspective historique au CT pour éviter de proposer cycliquement les mêmes concepts et, surtout, répéter les mêmes erreurs. Une erreur fréquente identifiée par Tedre et Denning consiste à affirmer que les compétences acquises grâce au CT peuvent être automatiquement généralisées à d’autres domaines. Cette affirmation, selon les auteurs, a déjà été infirmée dans les années ’80 (Pea & Kurland, 1984), et également par des recherches plus récentes menées par Guzdial (2015).

3.2 Tous les problèmes ne sont pas computationnels

Une autre critique qui a été soulevée au sujet du CT concerne le fait que tous les problèmes ne possèdent pas forcément une solution computationnelle. Par exemple Jones (2011) souligne que :

« There are a number of problems that would seem to lie outside the realm of computational thinking – for example, when I consider how to revise a draft of a story. While I go through a problem-solving process in thinking about the changes I wish to make, there are a number of elements that I consider which seem very different from a computational process, such as questions of aesthetics, or what I personally wish to gain from the story itself, as well as what I wish my reader to gain from it. » (Jones, 2011)

Jones (ibid.) donne également l’exemple des problèmes moraux ou éthiques qui ne peuvent pas être résolus sans faire recours à des considérations sur les valeurs et les idées personnelles ou qui appartiennent à un cadre social de référence. Cette critique se réfère probablement à la visée généralisée des bénéfices du CT, car la « naissance » elle-même de la computation automatisée, avec les travaux de Turing (1936), est basée sur l’impossibilité de mener à bien certains types de computation. L’une des branches de la théorie de la computation (Sipser, 2012) s’intéresse d’ailleurs à déterminer quels sont les problèmes pour lesquels on peut calculer une solution et ceux qui sont, au contraire, impossible à traiter.

Sur le versant opposé, on retrouve les travaux de Marvin Minsky (1985, 2006) en relation avec l’intelligence artificielle selon lesquels la pensée des êtres humains est fondamentalement de type computationnel. Si on arrive à voir les émotions, les intuitions, les préférences, ou de façon générale tout ce qui n’est pas considéré comme strictement rationnel simplement comme « d’autres formes de pensée », on peut s’apercevoir que notre pensée suit une progression des formes les plus simples aux plus complexes, ressemblant ainsi à des algorithmes. En d’autres termes, si on arrive à faire abstraction de certaines particularités de la pensée humaine, on peut la considérer computationnelle et, par extension, toute résolution de problèmes faite par l’esprit humain est forcément computationnelle.

3.3 Le CT n’est pas une forme de pensée distincte

Une dernière critique que nous proposons dans cet article concerne la distinction entre le CT et d’autres formes de pensée, notamment en relation avec la résolution de problèmes (Newell & Simon, 1972). La psychologie cognitive s’occupe depuis de nombreuses années des stratégies et processus qui sont mobilisés, à différents niveaux et selon différents degrés d’expertise, pour résoudre des problèmes. En quoi, dans ce cas, le CT serait-il une forme de pensée distincte par rapport à d’autres types de résolution de problèmes ?

La réponse à cette question dépend étroitement du champ d’application du CT et les moyens déployés pour l’enseigner/exploiter. Par exemple, il existe des nombreuses ressources qui visent l’enseignement de la pensée computationnelle sans utiliser des dispositifs numériques, s’appuyant plutôt sur des activités comme des jeux ou des puzzles. Dans ce sens, il est peut-être difficile de pouvoir identifier nettement une différence avec d’autres formes de pensée.

Une clé de lecture possible pour différencier la pensée computationnelle d’autres formes de pensée réside donc plutôt dans le siège de la computation et dans la nécessité de transfert de la « solution ». En effet, si on considère le CT plus spécifiquement dans le cadre de la programmation et de la computation, l’objectif n’est pas de résoudre directement un problème, mais de formuler le traitement de l’information afin qu’une machine puisse le faire à notre place. Dans cette perspective, la particularité du CT n’est pas liée à une différence par rapport à d’autres formes de pensée de type logico-mathématique, mais plutôt à des contraintes qui sont déterminée par le passage d’un système computationnel (le cerveau) à un autre système computationnel (l’ordinateur). Les deux "agents computationnels", malgré un certain recouvrement de termes surtout dans l’intelligence artificielle (e.g. neural network), diffèrent sensiblement dans leur fonctionnement. Du Boulay et al. (1981) parlent à ce propos de notional machine, c’est-à-dire une représentation mentale de ce que la machine peut ou ne peut pas faire (Guzdial, 2015).

4 Les grands principes du computing

On peut faire un parallèle entre la difficulté à cerner le concept de CT avec la difficulté que l'informatique a eu à trouver sa propre place en tant que science détachée des mathématiques et de la logique d'une part, et de l'ingénierie de l'autre. Denning & Martell (2015, p.12) propose 6 grands principes à la base du computing :

  1. Communication
    Transférer de l'information d'un endroit à l'autre de manière fiable.
  2. Computation
    Déterminer ce qui peut être automatisé/calculé/computé de manière efficace et ce qui ne peut pas.
  3. Récollection
    Représentation, stockage, récupération, ... de l'information, comme par exemple dans les bases de données
  4. Coordination
    Utilisation de plusieurs dispositifs/agents computationnels en même temps.
  5. Évaluation
    Mesurer à quel point les systèmes arrivent à mener à bien les opérations attendues, y compris l'application de la méthode expérimentale pour comparer des technologies.
  6. Design
    Structuration et architecture de systèmes complexes.

Les auteurs suggèrent que tous les domaines qui font partie des sciences informatiques se réfèrent à un principe ou, plus souvent, plusieurs principes à la fois. Par exemple, on peut voir internet comme :

  • Un système de communication (principe 1), comme à travers le protocole HTTP pour le Web.
  • Un système de récollection de données (principe 3), comme dans le cadre des moteurs de recherche.
  • Un système de coordination entre plusieurs agents (principe 4), notamment à travers les échanges client/serveur, les serveurs DNS qui transforment les noms de domaines en addresses IP, etc.

Une des conséquences de l'adoption des grands principes concerne la variabilité de connaissances nécessaires pour chaque principe (ou la combinaison entre principes). Par exemple, les connaissances nécessaires à un développeur web ne sont pas les mêmes nécessaires à un ingénieur système, tandis que souvent, dans l'imaginaire collectif, la figure de l'informaticien englobe toute connaissance confondue.

Par dérivation, la pensée computationnelle n'est pas appliquée de manière homogène en informatique et doit forcement s'adapter aux contextes, objectifs et limitations de chaque principe. Néanmoins, il existe un trait d'union dans les différentes sous-domaines : le traitement de l'information.

4.1 Le rôle fondamental de l'information

Les six grands principes fondamentaux permettent de créer des traits d'union entre le computing et d'autres domaines scientifiques à travers le rapport avec l'information. Aucun autre domaine scientifique ne s'est occupé de manière aussi abstraite de l'information en tant que telle : dans les autres domaines, l'information consiste toujours dans quelque chose de plus ou moins concret (des mots, des séquences d'ADN, des processus cognitifs, ...). Denning & Martell (ibid.) identifient deux raisons qui différencient le computing des autres sciences (p. 15, adapté) :

  1. « First, computing emphasizes the transformation of information, not simply its discovery, classification, storage, and communication. Algorithms not only read information structures, they modify them. [...] »
  2. « Second, the structures of computing are not just descriptive, they are generative. An algorithm is not just a description of a method for solving a problem, it causes a machine to solve the problem. »

Ces deux caractéristiques renvoient au concept de notional machine introduit plus haut dans l'article. En effet, la transformation de l'information et la résolution de problèmes à travers une machine nécessitent une idée précise de ce qu'une machine peut ou ne peut pas faire.

4.2 Computing Education

Hiérarchie entre programmation, informatique et computing. Inspiré depuis Guzdial (2015)

Sur la base de ce principe, Guzdial (2015) propose le concept de computing education pour articuler des concepts qui sont souvent utilisés comme synonymes, mais qui en réalité ne le sont pas : programmation, informatique (computer science), et computing. Le schéma à droite explique de manière graphique les relations suivantes :

  • La programmation est l'une des composantes de l'informatique, mais pas la seule. La programmation est « the process of writing programs. Programs do not have to be text. A variety of notations can instruct a computer to behave in a certain way. That behavior is a process. A program specifies a computational process which can be executed some time in the future » (Guzdial, 2015, p. 2)
  • L'informatique est la science qui s'occupe du coeur de la computation d'un point de vue technique et théorique (Sipser, 2012)
  • Le computing, enfin, selon la définition proposée par Denning et al. (1989), est la science qui s'occupe du traitement automatisé de l'information. Par conséquent, le computing dépasse les bornes de l'informatique et joue le rôle de trait d'union avec d'autres disciplines comme les sciences de la communication et de l'information, le développement au niveau hardware et software, mais également toute les disciplines scientifiques qui peuvent bénéficier de la computation, par exemple dans la modélisation ou simulation de phénomènes (e.g. biologie, psychologie cognitive, etc.)
En fonction de cette hiérarchie, Guzdial (2015) fait l'hypothèse que la programmation reste la meilleure manière pour développer une compréhension du computing et tout ce qui est connecté avec ce principe, notamment tout ce qui relève du domaine du numérique.

4.3 Computing et TIC(E)

Cependant, la programmation n'est pas la seule fonction des dispositifs numériques et, encore moins, du computing. La plupart des personnes qui utilisent un ordinateur ne vont jamais écrire une seule ligne de code, mais vont se limiter à instruire la machine à travers des interfaces graphiques ou des périphériques qui permettent d'exécuter certaines opérations. Ces opérations, de plus, ne concernent souvent pas directement de la computation au sens stricte du terme, mais plutôt de la communication à travers du texte (écrit et audio), et des représentations graphiques (images et vidéo). Cette capacité d'utiliser le numérique pour atteindre des objectifs en dehors du domaine auto-référentiel du computing est souvent identifiée sous le terme de digital literacy.

Un autre aspect à approfondir dans le computing concerne ainsi son articulation avec les Technologies de l'Information et de la Communication (TIC), et, en perspective éducative, avec leur dérivation pour l'Enseignement (TICE). On peut se demander en effet si une compréhension du computing en tant que discipline, de l'informatique en tant que science, ou du fonctionnement des dispositifs numériques en tant que supports, sont des conditions nécessaires, favorables ou négligeables vis-à-vis l'utilisation des TIC(E). En d'autres termes, pour bénéficier du numérique en tant que medium pour atteindre d'autres objectifs, faut-il avoir une connaissance du computing ? Et si oui, à quel niveau d'abstraction ? Faut-il connaître les mécanismes électriques et mécaniques qui permettent d'implémenter un système binaire dans les micro-chips d'un processeur, des systèmes de mémoire vive ou de travail, et ainsi de suite ? Ou faut-il faire abstraction des parties physiques et se concentrer sur la compréhension des systèmes qu'on utilise le plus (système d'exploitation d'un ordinateur ou d'un smartphone, internet...) ?

5 Pourquoi apprendre le computing ?

Jusqu'à présent nous avons fait ressortir la complexité des enjeux liés à l'articulation entre pensée computationnelle, programmation, informatique et computing. Ce cadre nécessite des études empiriques pour corroborer ou infirmer les attentes vis-à-vis des bénéfices universels de la pensée computationnelle, mais on ne peut toutefois pas ignorer l'importance croissante des dispositifs numériques et de la computation en général dans nos vies. Nous proposons donc ici une liste de raisons, basée principalement sur les travaux de Guzdial (2015), pour apprendre le computing.

5.1 Marché du travail

En 2012, Marc Andreessen, fondateur de Netscape, a affirmé que « "[t]he spread of computers and the Internet will put jobs in two categories. People who tell computers what to do, and people who are told by computers what to do." » (USA Today, 2012). Le rapport entre apprentissage du computing, spécialement de la programmation, et le marché du travail a été mis en évidence à plusieurs reprises, même par Barack Obama en 2014, lorsqu'il a participé personnellement à une Hour of code.

Selon le bureau des statistiques américain, le poste de développeur software est l'une des professions où le marché du travail est le plus actif et selon les prévisions, des connaissances informatiques seront nécessaires dans plus de 50% des postes liés aux STEM (Science, Technology, Engineering, and Mathematics). À présent, selon des estimations, le rapport entre utilisateurs d'ordinateurs et développeurs professionnels est de 30 à 1 (voir End-User Development dans The Encyclopedia of Human-Computer Interaction, 2nd Ed.).

Des activités liées à la promotion du computing en fonction du marché du travail ne visent pas, cependant, seulement à augmenter la quantité de personnes, mais également à équilibrer la représentativité, notamment le nombre de femmes (e.g. Girls Who Code).

5.2 Comprendre le monde qui nous entoure

Une autre raison part du constat que le monde qui nous entoure est de plus en plus peuplé d'agents computationnels : ordinateurs, tablettes, mais également Internet des Objets, Self-driving cars, etc. Une connaissance du computing serait dans ce sens une connaissance fondamentale pour comprendre les principes, les idées, les potentialités, mais également les risques et les désavantages du numérique.

Guzdial (2015, p. 4) résume cet argument de la manière suivante : « [w]e ask students to study chemistry because they live in a world where there are chemical interactions. We ask students to study biology because they live in a living world. They also live in a computational world, and the reality of computation is probably going to impact their daily lives more than remembering the structure of a benzene ring or the stages of mitosis ».

5.3 Augmenter la computational literacy

Bien que le nombre de personnes ayant accès à des dispositifs numériques ait augmenté dans le temps, cela ne se traduit pas automatiquement par une compréhension et une capacité d'exploiter à fond les potentialités. La "révolution numérique" a également des impacts sociaux, politiques et éthiques qui jouent un rôle toujours plus important. Pensons par exemple au règlement général sur la protection des données entré en vigueur en Europe le 28 mai 2018. Une connaissance des principes fondamentaux du computing pourrait dans ce sens développer davantage un sens critique des personnes, notamment sur le rôle que les algorithmes jouent déjà dans notre vie : le positionnement des pages dans un moteur de recherche, le flux de nouvelles dans les réseaux sociaux, etc.

D'autre part, la computational literacy ne peut pas se limiter à constater les effets négatifs du numérique, mais peut également contribuer à en tirer avantage. À travers des agents computationnels on peut en effet augmenter la créativité. Cette philosophie est notamment à la base du projet Scratch mené par le MIT (Resnick, 2017). À travers le développement ou la programmation de petits jeux ou applications, les personnes peuvent raconter des histoires, enseigner des concepts sur toutes les matières, pas seulement l'informatique. De plus, elles peuvent partager leurs propres ressources et faire évoluer les ressources des autres.

6 Conclusion

Cet article a proposé un survol du concept de pensée computationnelle. Depuis cet aperçu, on peut identifier deux types de mouvements qui émergent :

  1. Il y a un mouvement du domaine informatique vers d'autres domaines sous la propulsion de la pensée computationnelle en tant que compétence universelle, dont toute personne peut bénéficier ;
  2. Il y a un mouvement des autres domaines vers le domaine informatique sous la propulsion du traitement de l'information en différentes formes et pour différentes finalités.

Le premier mouvement semble encore très vague et ses propositions disproportionnées par rapport à l'évidence empirique, encore limitée, dont on dispose à présent. Des études plus approfondies restent nécessaires pour cerner une définition précise du CT et évaluer son apport, surtout en fonction des atteintes universelles de ses bénéfices.

D'un autre côté, nous avons une vision de la computation comme une véritable discipline qui peut être appliquée à différents domaines. Cette discipline dépasse le contexte de l'informatique et de la programmation, qui demeurent toutefois deux piliers importants du traitement automatisé de l'information. Dans cette perspective, la pensée computationnelle serait l'une des compétences nécessaires, mais pas la seule, pour pouvoir instruire les machines, notamment les dispositifs numériques, pour effectuer les opérations souhaitées.

7 Bibliographie

  • Aho, A. V. (2012). Computation and computational thinking. Computer Journal, 55, 833–835.
  • Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Alogrithms (3rd ed.). Cambridge, MA: MIT press.
  • Denning, P. J. (2016). Remaining Trouble Spots With Computational Thinking. Cacm, 60, 33–39.
  • Denning, P. J., Comer, D. E., Gries, D., Mulder, M. C., Tucker, A., Turner, A. J., & Young, P. R. (1989). Computing as a discipline. Computer, 22, 63.
  • Denning, P. J., & Martell, C. H. (2015). Great Principles of Computing. Cambridge, MA: MIT press.
  • Du Boulay, B., O’Shea, T., & Monk, J. (1981). Black box inside the glass box: Presenting computing concepts to novices. Int. J. Man-Machine Studies, 14, 237–249.
  • Grover, S., & Pea, R. (2013). Computational Thinking in K-12: A Review of the State of the Field. Educational Researcher, 42, 38–43.
  • Guzdial, M. (2008). Paving the way for computational thinking. Communications of the ACM, 51, 25.
  • Guzdial, M. (2015). Learner-Centered Design of Computing Education. Research on Computing for Everyone. Morgan & Claypool.
  • Jones, E. (2011). The Trouble with Computational Thinking. In ACM. Retrieved from https://c.ymcdn.com/sites/www.csteachers.org/resource/resmgr/JonesCTOnePager.pdf
  • Minsky, M. (1985). The Society of Mind. New York, NY: Simon & Schuster.
  • Minsky, M. (2006). The Emotion Machine. Commonsense Thinking, Artificial Intelligence, and the Future of the Human * Mind. New York, NY: Simon & Schuster.
  • Newell, A., & Simon, H. A. (1972). Human problem solving. Englewood Cliffs, NJ: Prentice-Hall.
  • Papert, S. (1980). Mindstorms: Children, computers, and powerful ideas. Basic Books.
  • Pea, R. D., & Kurland, D. M. (1984). On the Cognitive Effects of Learning Computer Programming. New Ideas Psychology, 2, 137–168.
  • Resnick, M. (2017). Lifelong Kindergarten. Cultivating Creativity through Projects, Passion, Peers, and Play. Cambridge, MA: MIT press.
  • RTS. (2016). Faut-il obliger les enfants à suivre des cours de programmation informatique à l’école? Suisse. Retrieved from https://www.rts.ch/play/radio/forum/audio/faut-il-obliger-les-enfants-a-suivre-des-cours-de-programmation-informatique-a-lecole?id=7638246&station=a9e7621504c6959e35c3ecbe7f6bed0446cdf8da
  • Sipser, M. (2012). Introduction to the Theory of Computation (3rd ed.). Cengage Learning.
  • Tedre, M., & Denning, P. J. (2016). The Long Quest for Computational Thinking. In Koli Calling Conference on Computing Education Research (pp. 120–129).
  • Turing, A. M. (1936). On computable numbers, with an application to the entscheidungsproblem. Proceedings of the London Mathematical Society, 230–265.
  • Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49, 33–35.
  • Wing, J. M. (2008). Computational thinking and thinking about computing. Philosophical Transactions. Series A, Mathematical, Physical, and Engineering Sciences, 366, 3717–25.
  • Wing, J. M. (2011). Research Notebook: Computational Thinking-What and Why? Retrieved from http://www.cs.cmu.edu/link/research-notebook-computational-thinking-what-and-why

8 Ressources