Wir leben mittlerweile in einer digitalisierten Welt, die voller Technologie steckt und von Informatik lebt. Software und Technologie haben sämtliche Fach- und Arbeitsgebiete, von Wissenschaft und Medizin bis hin zu Geschichte und Psychologie, transformiert. Digitale Technologie ist allgegenwärtig. Um sachkundig und selbstständig damit umgehen zu können, muss die nächste Schülergeneration die sie umgebende digitale Welt verstehen.
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...
„Informatisches Denken ist der Denkprozess, der beim Formulieren von Problemen und deren Lösungen Anwendung findet, sodass die Lösungen in einer Weise dargestellt werden, die durch einen informationsverarbeitenden Vermittler effektiv ausgeführt werden kann.“
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.
Nehmen wir als Beispiel eine App auf einem Smartphone, über die man eine Wegbeschreibung zum Haus eines Freundes abrufen kann: Die App ist das Computerprogramm und das Smartphone ist der „informationsverarbeitende Vermittler“, der das Programm für uns ausführt. Wer auch immer den Algorithmus zur Ermittlung der besten Strecke konzipiert hat, und all die Details wie die Benutzeroberfläche oder wie die Karte gespeichert wird, hat informatisches Denken angewendet, um das System zu konzipieren. Der- oder diejenige hat dies jedoch nicht dem Smartphone zuliebe entwickelt. Es wurde entwickelt, um der Person zu helfen, die das Smartphone benutzt.
Informatisches Denken auf CS Unplugged
Aus allen Lektionen und Unterrichtseinheiten auf CS Unplugged ergeben sich zahlreiche Verbindungen zu informatischem Denken. Beim Unterrichten von informatischem Denken mithilfe von CS Unplugged Aktivitäten lernen Schüler:
ein Problem zu beschreiben,
die zur Lösung des Problems erforderlichen Details zu identifizieren,
das Problem in kleine, logische Schritte zu zerlegen,
anhand dieser Schritte einen Prozess (Algorithmus) zur Lösung des Problems zu erstellen
und dann diesen Prozess zu beurteilen.
Diese Fähigkeiten sind auf beliebige andere Bildungsbereiche übertragbar, sind jedoch insbesondere wichtig, um digitale Systeme zu entwickeln und Probleme mithilfe der Einsatzmöglichkeiten von Computern zu lösen.
Diese informatischen Denkkonzepte sind alle miteinander verbunden und stützen sich gegenseitig. Insoweit möchten wir jedoch anmerken, dass nicht alle Aspekte des informatischen Denkens in jeder Unterrichtseinheit oder Lektion vorkommen. Wir haben in den einzelnen Unterrichtseinheiten und Lektionen die für Sie wichtigen Verbindungen hervorgehoben, um Ihre Schüler in Aktion zu beobachten.
Es gibt etliche Definitionen für informatisches Denken, die meisten weisen jedoch fünf oder sechs Problemlösungsfähigkeiten aus, die informatisches Denken verkörpert. Für das Unplugged-Projekt haben wir die folgenden sechs informatischen Denkfähigkeiten identifiziert, die häufig in der Literatur erwähnt werden. Diese sind nachstehend beschrieben und am Ende einer jeden Unplugged-Lektion finden Sie Hinweise dazu, wie diese Fähigkeiten in der Lektion in Erscheinung treten, um Ihnen die Verbindung zwischen informatischem Denken und der Lektion zu verdeutlichen.
Informatische Denkfähigkeiten
Algorithmisches Denken
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.
Algorithmisches Denken ist der Prozess zur Erstellung von Algorithmen. Wenn wir einen Algorithmus erstellen, um ein Problem zu lösen, nennen wir dies eine algorithmische Lösung.
Computeralgorithmen (also die auf digitalen Geräten ausgeführten Algorithmen) haben relativ wenig Bestandteile, da digitale Geräte nur ein paar Befehlstypen folgen können. Sie sind hauptsächlich in der Lage, Eingaben anzunehmen, Ausgaben zu liefern, Werte zu speichern, Befehlsabläufe zu befolgen, zwischen Optionen zu wählen und Befehle in einer Schleife zu wiederholen. Da wir ungeachtet dieses eingeschränkten Befehlsumfangs alles geschildert haben, was digitale Geräte kalkulieren können, wurden die Algorithmen auf diese Elemente beschränkt erläutert.
Abstraktion
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.
Auch wir setzen in unserem täglichen Leben oft Abstraktion ein, beispielsweise wenn wir Karten verwenden. Karten zeigen uns eine vereinfachte Version der Umgebung an, indem unnötige Details wie die Standorte der einzelnen Bäume in einem Park ausgelassen und nur die für den Leser der Karte wichtigsten Informationen beibehalten werden, wie beispielsweise Orts- und Straßennamen.
Digitage Geräte bedienen sich ständig der Abstraktion und versuchen, möglichst viele unnötige Informationen vor uns Benutzern zu verbergen. Nehmen wir beispielsweise einmal an, Sie haben bei Ihrem letzten Campingausflug ein herrliches Landschaftsfoto aufgenommen, das Sie nun auf Ihrem Computer bearbeiten und die Farben anpassen möchten. Dies können wir normalerweise tun, indem wir ein Bildbearbeitungsprogramm öffnen, ein paar Farbregler anpassen und vielleicht noch einen Filter auswählen. Während wir dies tun, finden jede Menge komplizierte Vorgänge statt, die der Computer vor uns verbirgt.
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.
Dekomposition
Bei Dekomposition geht es darum, Problematiken in kleinere, überschaubarere Teile zu zerlegen und sich dann darauf zu konzentrieren, diese kleineren Probleme nacheinander zu lösen. Jede komplexe Problematik kann so weit zerlegt werden, bis die kleineren Teile so simpel sind, dass sie leicht gelöst werden können. Die Lösungen zu diesen kleineren, simpleren Problemen bauen aufeinander auf und ergeben die Lösung zur anfänglichen Problemstellung. Mit Dekomposition werden große Problematiken zu weitaus weniger einschüchternden Teilaufgaben!
Dekomposition ist eine wichtige Qualifikation zur Erstellung von Algorithmen und Prozessen für Computersysteme, da Computer äußerst genaue Anweisungen erfordern. Computern benötigen Anweisungen für jeden kleinen Schritt, der von ihnen zu befolgen ist, um Funktionen auszuführen.
Beispielsweise kann die Gesamtaufgabe, einen Kuchen zuzubereiten, in mehrere Unteraufgaben zerlegt werden, die einzeln jeweils leicht bewältigt werden können.
Kuchen zubereiten
Kuchen backen
Zutaten in eine Schüssel geben (Butter, Zucker, Ei, Mehl)
Alle Zutaten verrühren
In eine Backform gießen
Für 30 Minuten im Ofen backen
Aus der Backform nehmen
Glasur zubereiten
Auf den Kuchen auftragen
Generalisierung und Muster
Generalisierung wird auch „Mustererkennung und Generalisierung“ genannt. Generalisierung bedeutet, die Lösung (oder einen Teil einer Lösung) eines Problems heranzuziehen und zu verallgemeinern, sodass sie auf andere ähnliche Problematiken und Aufgabenstellungen angewandt werden kann. Nachdem es sich bei Lösungen in der Informatik um Algorithmen handelt, bedeutet dies, dass wir einen Algorithmus heranziehen und diesen so verallgemeinern, dass er für eine Reihe von Problemen verwendet werden kann. Um etwas zu verallgemeinern, ist Abstraktion erforderlich, da unwichtige Details, die sich auf eine bestimmte Problematik oder Situation beziehen, jedoch für die Funktionsweise des Algorithmus unwichtig sind, außer Acht gelassen werden müssen.
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.
Generalisierte Algorithmen können für zahlreiche ähnliche Problematiken wiederverwendet werden, was bedeutet, dass wir schnell und effektiv mit Lösungen aufwarten können.
Auswertung
Bei der Auswertung geht es darum, die möglichen Lösungen zu einer Problematik zu identifizieren und zu beurteilen, welche am besten zu verwenden ist, ob diese nur unter gewissen Umständen funktionieren wird und wie sie verbessert werden kann. Wenn wir unsere Lösungen bewerten, müssen wir eine Reihe an Faktoren berücksichtigen. Beispielsweise wie lange werden diese Prozesse (Algorithmen) brauchen, um das Problem zu lösen, und ob das Problem dadurch zuverlässig gelöst werden kann, oder ob das Resultat in bestimmten Situationen anders ausfallen wird. Auch in unserem täglichen Leben nehmen wir oft derartige Auswertungen vor.
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.
Logik
Wenn wir versuchen, Probleme zu lösen, müssen wir logisch denken. Logisches Denken bedeutet, durch Beobachtung, Datenerfassung und Erwägung der uns bekannten Gegebenheiten zu versuchen, einen Sinnzusammenhang herzustellen und dann basierend auf dem uns bereits Bekannten Schlußfolgerungen zu ziehen. Mithilfe unseres bereits vorhandenen Wissens können wir Regeln festlegen und Tatsachen überprüfen.
Nehmen wir beispielsweise an, wir schreiben eine Software, die den kürzesten Weg von unserem Haus zu einem bestimmten Ort ermittelt. Auf der daraus folgenden Karte sind es zwei Minuten zur Bibliothek, wenn wir von unserem Haus in Richtung Norden gehen, doch wenn wir Richtung Süden gehen, sind es drei Minuten zur nächsten Kreuzung. Nun fragen wir uns vielleicht, ob es einen besseren Weg zur Bibliothek gibt, wenn wir Richtung Süden gehen. Logisch gesehen ist dies jedoch nicht möglich, da wir bereits drei Minuten laufen würden, um zur Kreuzung zu gelangen.
Auf einer tieferen Ebene sind Computer gänzlich auf Logik aufgebaut. Sie verwenden „True“- und „False“-Werte (also „wahr“- und „falsch“-Werte) und etwas, das „Boolesche Ausdrücke“ genannt wird, wie beispielsweise „ist Alter > 5“, um in Computerprogrammen Entscheidungen zu treffen.
Auch um Fehler in einem Programm ausfindig zu machen, muss anhand von logischem Denken ermittelt werden, wo und warum irgendetwas im Programm schief läuft.
Diese Definition ist leider nicht in Deutsch verfügbar!