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.
Daher wird informatisches Denken auch „Schlüsselkompetenz des 21. Jahrhunderts“ genannt und sollte von jedermann erlernt werden. Um sich die Leistungsfähigkeit von Computern zur Lösung schwieriger Aufgabenstellungen zunutze zu machen und großartige Dinge zu vollbringen, muss man verstehen, wie die digitale Welt funktioniert. Darüber hinaus ermöglicht es uns, nicht nur die Vorteile bestimmter Technologien kritischer zu betrachten, sondern auch die möglichen Nachteile, ethischen Auswirkungen oder die unbeabsichtigten Konsequenzen davon.
Doch was genau ist informatisches Denken? Sehen wir uns einmal eine technische Definition dazu an ...
„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.“
Puh! Das ist ein ganz schöner Happen, nicht wahr? Aber wie wir bei CS Unplugged immer sagen: Es sind nur große Worte für einfache Konzepte! „Informationsverarbeitender Vermittler“ bezieht sich auf alles, was einer Reihe von Anweisungen folgt, um eine Aufgabe auszuführen (wir nennen dies „Datenverarbeitung“). In den meisten Fällen bezieht sich „Vermittler“ auf einen Computer oder ein sonstiges digitales Gerät – es könnte allerdings auch ein menschliches Wesen damit gemeint sein! Damit die Sache etwas einfacher wird, beziehen wir uns insoweit künftig auf Computer. Um nun Lösungen so darzustellen, dass sie von einem Computer ausgeführt werden können, müssen sie als schrittweiser Prozess, d. h. als Algorithmus, dargestellt werden. Und um diese Algorithmuslösung zu erstellen, wenden wir ein paar besondere Problemlösungsfähigkeiten an. Diese Fähigkeiten sind das, was informatisches Denken ausmachen! Und diese Fähigkeiten sind auf jeden beliebigen Bereich übertragbar.
Informatisches Denken könnte auch als „wie ein Informatiker denken“ umschrieben werden. Es ist jedoch inzwischen eine wichtige Fähigkeit, die jeder lernen sollte, ob man nun Informatiker werden möchte oder nicht! Als interessanter und wichtiger Hinweis sollte festgehalten werden, dass es bei informatischem Denken und Informatik nicht gänzlich um Computer geht, sondern eher um Menschen. Man könnte denken, dass wir Programme für Computer schreiben, in Wirklichkeit schreiben wir Programme jedoch für Menschen – damit sie kommunizieren, Informationen finden und Probleme lösen können.
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
Algorithmen sind das Herzstück von informatischem Denken und Informatik, da es sich bei Lösungen zu Problemen in der Informatik nicht einfach um Antworten (z. B. „42“ oder eine Tatsache) sondern um Algorithmen handelt. Ein Algorithmus ist ein schrittweiser Prozess, anhand dessen ein Problem gelöst oder eine Funktion ausgeführt werden kann. Werden die einzelnen Schritte des Algorithmus genau befolgt, erhält man selbst bei unterschiedlichen Eingaben stets eine richtige Lösung. Beispielsweise können wir einen Algorithmus dazu einsetzen, den kürzesten Weg zwischen zwei Orten auf einer Karte zu ermitteln. Derselbe Algorithmus kann für jede beliebige Kombination an Start- und Zielpunkten verwendet werden; die Lösung hängt also von der Eingabe in den Algorithmus ab. Wenn wir den Algorithmus zur Lösung einer Problemstellung kennen, können wir dieses Problem jederzeit im Nu lösen, ohne darüber nachdenken zu müssen, indem wir einfach die Schritte befolgen! Computer können nicht selbst denken und müssen daher mit Algorithmen gefüttert werden, um Funktionen auszuführen.
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
Bei Abstraktion geht es darum, Dinge zu vereinfachen, um mit Komplexität zurechtzukommen. Dabei werden die wichtigsten Aspekte eines Problems identifiziert und alle anderen Details ausgeblendet, denen wir keine Beachtung schenken müssen. Anhand dieser wichtigen Aspekte können wir dann ein Modell oder eine vereinfachte Darstellung unserer anfänglichen Problemstellung entwerfen. Anschließend können wir mit diesem Modell arbeiten, um das Problem zu lösen, anstatt uns mit allen wesentlichen Details auf einmal auseinandersetzen zu müssen. Informatiker arbeiten oft mit mehreren Abstraktionsebenen.
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.
Das aufgenommene Foto ist auf dem Computer als riesige Liste an Pixeln gespeichert, die alle eine unterschiedliche Farbe haben. Jede Farbe wird durch einen Satz an Zahlen dargestellt und jede dieser Zahlen ist als binäre Einheit gespeichert! Das sind eine ganze Menge Daten. Stellen Sie sich vor, wir müssten beim Anpassen der Farben alle Farbwerte eines jeden Pixels durchgehen und jeden einzelnen davon anpassen! Das ist genau das, was der Computer für uns macht. Da wir dies jedoch nicht wissen müssen, um unser Vorhaben auszuführen, werden diese Informationen vom Computer verborgen.
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.
Muster zu erkennen ist ein wichtiger Teil dieses Prozesses. Wenn wir über verschiedene Problematiken nachdenken, fallen uns unter Umständen Ähnlichkeiten zwischen ihnen auf, die auf ähnliche Weise gelöst werden können. Dies wird als Musterabgleich bezeichnet und ist etwas, das wir in unserem täglichen Leben von Natur aus tun.
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.
Es gibt verschiedene Möglichkeiten, wie wir unsere algorithmischen Lösungen beurteilen können. Wir können ihre Schnelligkeit testen, indem wir sie auf einem Computer implementieren, oder wir können sie analysieren, indem wir zählen oder kalkulieren, wie viele Schritte sie voraussichtlich benötigen werden. Wir können testen, ob unsere algorithmischen Lösungen ordnungsgemäß funktionieren, indem wir sie mit etlichen verschiedene Eingaben versehen und prüfen, ob alles erwartungsgemäß abläuft. Dabei müssen wir uns die verschiedenen von uns getesteten Eingaben genau überlegen, da wir nicht jede nur mögliche Eingabe überprüfen wollen (oftmals gibt es unendlich viele verschiedene mögliche Eingaben!), aber trotzdem feststellen müssen, ob unsere algorithmischen Lösungen für alle Eingaben geeignet sind. Informatiker und Programmierer führen fortwährend Testmaßnahmen durch. Da wir jedoch normalerweise nicht jede mögliche Eingabe testen können, versuchen wir zudem, Systeme anhand von logischem Denken zu beurteilen.
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!