Le monde dans lequel nous vivons est devenu numérique, rempli par la technologie et piloté par l'informatique. Les logiciels et la technologie ont transformé tous les sujets et les domaines d'activité, de la science et la médecine, jusqu'à l'histoire de l'art et la psychologie. La technologie numérique est omniprésente. Pour être des citoyens informés et autonomes, la prochaine génération d'élèves a besoin de comprendre ce monde numérique dans lequel ils vivent.
This is why Computational Thinking has been called the '21st Century Skill Set', and is important for everyone to learn. It is critical to understanding how the digital world works, for harnessing the power of computers to solve tough problems, and making great things happen! It also enables us to think critically about not just the benefits of certain technologies, but also the potential harm, ethical implications, or unintended consequences of these.
But what exactly is Computational Thinking? Let's have a look at a technical definition...
"La Pensée Informatique est le processus de la pensée impliqué dans la formulation des problèmes et de leurs solutions de manière à ce que ces solutions soient représentées sous une forme qui puisse être réalisée efficacement par un agent de traitement de l'information."
Phew, it's quite a mouthful isn't it? But, as we like to say at CS Unplugged, it's just big words for simple ideas! 'Information-processing agent' means anything that follows a set of instructions to complete a task (we call this 'computing'). Most of the time this 'agent' means a computer or other type of digital device - but it could also be a human! We'll refer to it as a computer to make things a bit simpler. To represent solutions in a way that a computer can carry them out, we have to represent them as a step by step process - an algorithm. To create these algorithmic solutions we apply some special problem solving skills to. These skill are what make up Computational Thinking! And they are skills that are transferrable to any field.
Computational Thinking could be described as 'thinking like a Computer Scientist', but it is now an important skill for everyone to learn, whether they want to be a Computer Scientist or not! It's interesting, and important, to note that Computational Thinking, and Computer Science, aren't entirely about computers, they are more about people. You might think that we write programs for computers, but really we write programs for people - to help them communicate, find information, and solve problems.
Par exemple, vous pourriez utiliser une application sur un smartphone pour obtenir l'itinéraire qui mène à la maison d'un ami ; l'application est un exemple de programme d'ordinateur, et le smartphone est l'"agent de traitement de l'information" qui exécute le programme pour nous. Celui qui a conçu l'algorithme pour trouver le meilleur chemin, et tous les détails comme l'interface ou la façon de stocker la carte en mémoire, applique la Pensée Informatique pour concevoir le système. Mais ils ne l'ont pas conçu pour le bien du smartphone ; ils l'ont conçu pour aider la personne qui utilise le smartphone.
La Pensée Informatique dans CS Unplugged
Tout au long des leçons et des modules de CS Unplugged, vous trouverez beaucoup de liens avec la Pensée Informatique. L'enseignement de la Pensée Informatique par le biais des activités CS Unplugged enseigne aux élèves comment :
décrire un problème,
identifier les informations importantes nécessaires pour résoudre ce problème,
diviser le problème en petites étapes logiques,
utiliser ces étapes pour créer un processus (algorithme) qui résout le problème,
et ensuite évaluer ce processus.
Ces compétences sont transférables à toute autre discipline, mais sont particulièrement pertinentes pour le développement des systèmes numériques et les résolutions de problèmes en utilisant les capacités des ordinateurs.
Ces concepts de la Pensée Informatique sont tous reliés les uns aux autres et se soutiennent les uns les autres, mais il est important de noter que tous les aspects de la Pensée Informatique ne se trouveront pas nécessairement dans chaque module ou leçon. Dans chaque module et chaque leçon, nous avons mis en évidence les liens importants qui vous permettent d'observer vos élèves en action.
Il y a un certain nombre de définitions de la Pensée Informatique, mais la plupart ont un ensemble de 5 ou 6 compétences de résolution de problèmes qu'incarne la Pensée Informatique. Pour le projet Unplugged, nous avons identifié six des compétences de Pensée Informatique qui sont souvent mentionnées dans la littérature ; elles sont décrites ci-dessous, et, à la fin de chaque leçon Unplugged, nous avons identifié la façon dont ces compétences apparaissent dans ces leçons, pour vous aider à voir les connexions de la Pensée Informatique avec elles.
Les compétences de la Pensée Informatique
Pensée algorithmique
Algorithms are at the heart of Computational Thinking and Computer Science, because in Computer Science the solutions to problems are not simply an answer (e.g. '42', or a fact), they are algorithms. An algorithm is a step-by-step process that solves a problem or completes a task. If you follow the algorithm's steps correctly, you will arrive at a correct solution, even for different inputs. For example, we can use an algorithm to find the shortest route between two locations on a map; the same algorithm can be used for any pair of starting and finishing points, so the solution depends on the input to the algorithm. If we know the algorithm for solving a problem then we can solve that problem easily, whenever we want, without having to think! We can just follow the steps. Computers can't think for themselves, so they need to be given algorithms to do things.
La pensée algorithmique est le processus de création d'algorithmes. Lorsque nous créons un algorithme pour résoudre un problème, nous appelons cela une solution algorithmique.
Les algorithmes informatique (le genre qui peut fonctionner sur les appareils numériques) ont relativement peu d'ingrédients, parce que les appareils numériques n'ont que quelques types d'instructions qu'ils peuvent suivre ; les principales choses qu'ils peuvent faire sont de recevoir des données, fournir une sortie, stocker des valeurs, suivre des séquences d'instructions, choisir parmi plusieurs options, et répétez des instructions dans une boucle. Bien que cet ensemble d'instructions soit très limité, nous avons décrit tout ce que les appareils numériques peuvent calculer, et c'est pourquoi les algorithmes sont décrits comme limités à ces éléments.
Abstraction
Abstraction is all about simplifying things to help us manage complexity. It requires identifying what the most important aspects of a problem are and hiding the other specific details that we don't need to focus on. The important aspects can be used to create a model, or simplified representation, of the original thing we were dealing with. We can then work with this model to solve the problem, rather than having to deal with all the nitty gritty details at once. Computer Scientists often work with multiple levels of abstraction.
Nous utilisons souvent l'abstraction dans notre vie de tous les jours, par exemple lorsque nous utilisons des cartes. Les cartes nous montrent une version simplifiée du monde en laissant de côté les détails inutiles, comme chaque arbre dans un parc, et ne gardant que les informations les plus pertinentes pour le lecteur, comme les routes et les noms de rue.
Les appareils numériques utilisent abstraction tout le temps ; ils essaient de cacher autant d'information inutiles que possible à l'utilisateur. Par exemple, imaginez que vous avez pris une belle photo panoramique pendant votre dernière excursion en camping, et maintenant vous voulez la modifier sur votre ordinateur portable et ajuster ses couleurs. En général, nous le faisons par l'ouverture d'un programme d'édition d'image, en ajustant des curseurs sur la couleur ou peut-être en choisissant un filtre. Lorsque vous faites cela il se produit beaucoup d'opérations compliquées que l'ordinateur vous cache.
The picture you took is stored on the computer as a big list of pixels, which are each a different colour, and each colour is represented by a set of numbers, and each of these numbers are stored as binary digits! That's a lot of information. Imagine if when you adjusted the colours you had to go through and look at all the colour values of every pixel and change each and every one of those! That's what the computer is doing for you, but since you don't need to know this to accomplish your goal the computer hides this information away.
Décomposition
La décomposition consiste à décomposer les problèmes en parties plus petites et plus faciles à gérer, puis à se concentrer sur la résolution de chacun de ces petits problèmes. Nous pouvons continuer de diviser un problème complexe encore et encore jusqu'à ce que les plus petits morceaux soient si simples qu'ils deviennent faciles à résoudre. Les solutions à chacun de ces plus petits et plus simples problèmes permettent de construire une solution du grand problème que nous avions au départ. La décomposition permet de rendre de gros problèmes beaucoup moins intimidants !
La décomposition est une compétence importante pour créer des algorithmes et des processus qui peuvent être mis en œuvre sur un dispositif informatique, parce que les ordinateurs ont besoin de directives très précises. Il faut leur dire chacune des petites étapes qu'ils doivent suivre pour faire quelque chose.
Par exemple l'ensemble de la tâche "faire un gâteau" peut être décomposé en plusieurs tâches plus petites, dont chacune peut être effectuée facilement.
Faire un gâteau
Cuire le gâteau
Mettre les ingrédients dans un bol (beurre, sucre, œuf, farine)
Mélanger
Verser dans le plat
Le mettre dans le four pendant 30 minutes
Sortir le plat
Faire le glaçage
Le mettre sur le gâteau
Généralisation et motifs
La généralisation est aussi appelée "reconnaissance des motifs et généralisation'. La généralisation est l'utilisation d'une solution (ou une partie d'une solution) à un problème et sa généralisation pour qu'elle puisse être appliquée à d'autres problèmes et tâches similaires. Étant donné que les solutions en informatique sont des algorithmes, cela signifie que nous prenons un algorithme et que nous le rendons assez général pour qu'il puisse être utilisé pour toute une famille de problèmes. Ce processus implique de l'abstraction car, pour faire quelque chose de plus général, nous devons supprimer des détails inutiles qui sont liées à un problème ou une situation spécifiques, mais ne sont pas importants dans la façon dont l'algorithme fonctionne.
Spotting patterns is an important part of this process, when we think about problems we might recognise similarities between them and that they can be solved in similar ways. This is called pattern matching, and it's something we do naturally all the time in our daily life.
Les algorithmes généralisés peuvent être réutilisés pour tout un ensemble de problèmes similaires, ce qui signifie que nous pouvons trouver des solutions rapidement et de manière efficace.
Évaluation
L'évaluation consiste à identifier les solutions possibles à un problème et juger quelle est la meilleure, si ces solutions vont fonctionner dans certaines situations mais pas dans d'autres, et comment elles peuvent être améliorées. Pour juger de la valeur de nos solutions, nous devons réfléchir à une série de facteurs. Par exemple combien de temps vont prendre ces processus (algorithmes) pour résoudre le problème et est-ce qu'ils sont fiables, ou est-ce qu'il y a certaines situations où ces processus vont s'exécuter de manière totalement différente. L'évaluation est quelque chose que nous faisons beaucoup dans notre vie de tous les jours.
There are different ways we can evaluate our algorithmic solutions. We can test their speed by implementing them on a computer; or we can analyse them by counting or calculating how many steps they are likely to take. We can test that our algorithmic solutions work correctly by giving them lots of different inputs, and checking they work as expected. When we do this we need to think about the different inputs we test, because we don't want to check every possible input (often there's an infinite number of possible inputs!), but we still need to know if our algorithmic solutions will work for all inputs. Testing is something Computer Scientists and programmers do all the time. But because we can't usually test every possible input, we also try to evaluate a system using logical reasoning.
Logique
Quand nous essayons de résoudre des problèmes nous devons penser de manière logique. Le raisonnement logique, c'est essayer de donner du sens aux choses par l'observation, la collecte de données, la réflexion sur les faits que nous connaissons, et ensuite essayer de comprendre les choses en fonction de ce que nous savons déjà. Cela nous permet d'utiliser nos connaissances existantes pour établir des règles et de vérifier les faits.
Par exemple, supposons que vous écrivez un logiciel qui calcule le plus court chemin vers un emplacement depuis votre maison. Sur la carte, vous êtes à 2 minutes de la bibliothèque si vous vous dirigez au nord depuis votre maison, mais si vous vous dirigez vers le sud, il y a 3 minutes jusqu'à la prochaine intersection. Vous pourriez vous demander si il y a une meilleure route vers la bibliothèque si vous commencez par le sud, mais logiquement ce n'est pas possible car vous aurez déjà marché pendant 3 minutes pour arriver à l'intersection.
À un niveau plus profond, les ordinateurs sont entièrement construits sur la logique. Ils utilisent les valeurs 'Vrai' et 'Faux', et utilisent quelque chose appelé des "expressions Booléennes", comme par exemple “est-ce que âge > 5”, pour prendre des décisions dans les programmes informatiques.
Traquer un bug dans un programme nécessite également de la pensée logique, pour trouver où, et pourquoi, quelque chose dans le programme ne fonctionne pas.
Désolé ! Cette définition n'est pas disponible en français.