Kategorien
Uncategorized

Computational Thinking

Was ist „Computational Thinking“?

Als ich vor einigen Jahren erstmals über den Begriff des „Computational Thinking“ (CT) gestolpert bin, war ich zunächst Feuer und Flamme. Der Begriff ist zwar schon alt, wurde aber von Jeanette Wing in einem berühmt gewordenen Artikel im Jahr 2006 neu belebt. Sie schreibt:

Computational Thinking (…) represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use.

(…)

Computational thinking involves solving problems, designing systems, and understanding human behavior, by drawing on the concepts fundamental to computer science

J. Wing (2006): Computational Thinking. Communications of the ACM 49(3), p.33-35

Das klang nach etwas, was ich unbedingt unterschreiben konnte, denn wie ich bereits ganz zu Beginn dieses Blogs schrieb, habe ich mich nicht zuletzt deshalb mit der Informatik beschäftigt, weil ich menschliches Entscheiden und Problemlösen verstehen und verbessern wollte. Und gerade die Forderung, dass solche Powertools des Denkens eigentlich ein Teil moderner Allgemeinbildung sein sollte, erschien mir unmittelbar einleuchtend. Schließlich stellt die Informatik die wohl umfassendste Sammlung von Techniken zum systematischen Problemlösen zur Verfügung, die es in der Menschheitsgeschichte gegeben hat.

Begriffsverwirrung

Aber leider scheint es nicht möglich zu sein, einen Begriff einzuführen, ohne dass dieser von unterschiedlichen Menschen sehr unterschiedlich verstanden wird (Geisteswissenschaftler können davon ein Lied singen). Tatsächlich erregte Wings Artikel nicht nur großes Interesse, sondern trat auch eine wahre Lawine von Begriffsdefinitionen los. Die Tatsache, dass sie in ihrem Artikel den Begriff „Computational Thinking“ zwar mit verschiedenen Eigenschaften umschrieben, aber genau genommen nirgends wirklich definiert hatte, machte die Sache auch nicht eben einfacher. Diese Definition lieferte sie erst 2014 nach:

Computational thinking is the thought processes involved in formulating a problem and expressing its solution(s) in such a way that a computer – human or machine – can effectively carry out.

J. Wing (2014): Computational Thinking Benefits Society. Social Issues in Computer Science, 40th Anniversary Blog.

Wichtig ist hier vor allem, dass ein „Computer“ im Verständnis des Computational Thinking nicht zwingend eine Maschine sein muss, sondern (im ursprünglichen Sinne des Wortes, das ja deutlich älter ist als die erste Rechenmaschine) auch ein denkender Mensch sein kann.

Ich ertappe mich aber dabei, von dieser Definition enttäuscht zu sein. Sie klingt nach einer aufgehübschten Definition von Algorithmik und ist deutlich weniger umfassender als die ursprüngliche Vision, bei er es ja auch darum ging, menschliches Denken zu verstehen.

Es gibt aber auch das umgekehrte Extrem, das schlicht alles, was auch nur entfernt mit Informatik zu tun hat, unter die Überschrift „Computational Thinking“ packt, so wie die folgende Definition von Denning und Tedre:

Computational Thinking is the mental skills and practices for
(1) designing computations that get computers to do jobs for us, and
(2) explaining and interpreting the world as a complex of information processes.

P. Denning, M. Tedre (2019): Computational Thinking, p. 4

Nach dieser Definition ist also nicht nur die komplette Informatik „Computational Thinking“, sondern auch zahlreiche andere Wissenschaften wie beispielsweise Biologie, Physik, Chemie, Psychologie, Sozial- und Kommunikationswissenschaft und letztlich sogar die Kunst. Wie hilfreich ein solches Verständnis von Computational Thinking dann wohl noch ist, wenn eigentlich irgendwie alles CT ist?

Lehrbücher

Inzwischen habe ich mir eine Reihe von Lehrbüchern zugelegt, die das Wort „Computational Thinking“ im Titel führen. Hier zeigt sich, dass in der Praxis eine größere Einigkeit über die Bedeutung des „Computational Thinking“ herrscht als in der Theorie. Ein Überblick:

  • S. De Jesús, D. Martinez (2020): Applied Computational Thinking with Python
    Ein Einführungsbuch in die Informatik, das typische CT-Konzepte und insbesondere das Problemlösen mit einer Einführung in die Python-Programmierung kombiniert. Der Fokus liegt hier auf dem algorithmischen Denken, und das Buch taucht vergleichsweise tief in die Materie ein. Die Zielgruppe sind aber wohl angehende Informatiker (von denen das Buch in Rezensionen auch sehr gelobt wird) – für Nicht-Informatiker ist es dagegen wohl zu ambitioniert und besitzt zu wenige Verbindungen zum Problemlösen im Alltag.
  • P. Denning, M. Tedre (2019): Computational Thinking
    Dieses Buch hat sich zum Ziel gesetzt, zu erklären, was „Computational Thinking“ ist und was alles darunterfällt. Leider wählen die Autoren dazu die oben zitierte extrem breite Definition, unter die dann auch wirklich alle Bereiche der Informatik (einschließlich Hardwareentwurf, Betriebssysteme, Softwareengineering und aller Anwendungsdisziplinen) fallen. Die Inhalte, die hier jeweils kurz skizziert werden, sind für einen Nicht-Informatiker in der Kürze oft gar nicht nachzuvollziehen. So liest sich das Buch denn eher wie eine Kurzeinführung in die Geschichte der Informatik und lässt den Leser mit dem Gefühl zurück, dass CT wohl doch nur etwas für Informatiker ist.
  • K. Beecher (2017): Computational Thinking
    Die ersten 100 Seiten dieses Buches führen den Leser ein in die Themen, die ich für zentral im Computational Thinking halte: Logik, algorithmisches Denken, Problemlösen, Abstraktion, Modellierung, Fehlerbehandlung und Evaluierung. Danach folgen 140 Seiten, in denen diese Konzepte durch Programmierung praktisch umgesetzt werden. So löst der Autor recht elegant das Problem, dass Programmieren natürlich eine besonders elegante Art ist, grundlegende CT-Techniken zu erlernen und anzuwenden, dass es aber schwierig ist, dem unerfahrenen Leser Konzept und Programmierung gleichzeitig beizubringen.
  • P. Wang (2016): From Computing to Computational Thinking
    Der didaktische Ansatz hier ist eigentlich recht vielversprechend: Themen der Informatik werden diskutiert und dann in „CT-Kästchen“ in Beziehung zum Nicht-Informatiker-Alltag gesetzt. Allerdings wirkt die Themenauswahl recht willkürlich und umfasst Themen wie Betriebssysteme, Computernetze, Webseiten, Datenformate oder IT-Sicherheit. Erst ganz am Ende kommt der Autor auf das Thema, das für mich den Kern des Computational Thinking ausmacht, nämlich das problemlösende Denken.
  • D. Riley, K. Hunt (2014): Computational Thinking for the Modern Problem Solver
    Dieses Buch entspricht am ehesten dem, wie ich mir eine Aufbereitung der Thematik vorstelle. Es setzt kaum Vorkenntnisse voraus und führt den Leser durch Themen wie Informationskodierung, Logik, Problemlösen, Algorithmisches Denken, Modellierung, Datenorganisation, Korrektheitsprüfung und Grenzen der Berechenbarkeit. Allerdings wird hier nicht programmiert.

Man kann hier herauslesen, dass mein ursprüngliches Verständnis des Computational Thinking durchaus das ist, was auch von den meisten Buchautoren geteilt wird: Es geht im Kern um Denktechniken (Informationscodierung, Logik, Abstraktion/Modellierung, Algorithmik/Problemlösen, Robustheit, Evaluierung etc.), die beim Programmieren von Computern ebenso zum Einsatz kommen wie im beruflichen oder privaten Alltag.

Fazit

Meine anfängliche Begeisterung für die mögliche Zugkraft des Begriffs „Computational Thinking“ ist inzwischen einer gewissen Vorsicht gewichen, weil mir klar geworden ist, wie groß die Gefahr ist, dass jemand darunter etwas ganz anderes versteht als ich. Dies ist übrigens auch der Grund, warum ich diesen Blog stattdessen unter die Überschrift „algorithmisches Denken“ gestellt habe.

Ich werde den Begriff „Computational Thinking“ auch künftig nur zurückhaltend benutzen. Aber wenn ich es tue, dann ist damit das ursprüngliche Verständnis nach Wing von 2006 gemeint: Es geht mir um diejenigen Techniken der Informatik, die auch außerhalb des Computers von Interesse sind und dazu geeignet sind, das menschliche Denken zu verstehen und zu verbessern.

Kategorien
Uncategorized

Gedanken zum Suchraum-Modell

Es ist schon wieder drei Monate her, dass ich im Beitrag „Problemlösen als Suchproblem“ das Modell von Newell und Simon vorgestellt habe. Dabei wird ein Suchproblem durch einen Suchbaum charakterisiert: Ich habe einen Startzustand (den Wurzelknoten), verschiedene Handlungsalternativen (die Kanten im Baum), verschiedene Zwischenzustände (Knoten im Baum) und schließlich einen oder mehrere Zielzustände unterschiedlicher Güte, die erreicht werden sollen.

Bounded Rationality

Als Beschreibung der Situation beim Lösen von Problemen ist dieses Modell sehr einleuchtend. In der praktischen Anwendung tritt dabei aber das Problem auf, dass der Suchbaum oft exponentiell wächst und daher schnell zu groß wird, um überblickt zu werden. So gibt es beispielsweise beim Schachspiel schon nach sechs Halbzügen (dreimal weiß, dreimal schwarz) rund 107 mögliche Stellungen, und die Zahl der denkbaren Stellungen im Spiel insgesamt wird auf über 1043 geschätzt – eine Zahl, die so riesig ist, dass man sich den zugehörigen Suchraum gar nicht mehr vorstellen kann.

Ein vollständiges Durchsuchen des Suchraums ist also nicht möglich – beim Schach, aber auch bei den meisten Alltagsproblemen, die man lösen möchte. Newell und Simon gehen daher von zwei Annahmen aus:

  • Menschliche Entscheider suchen nicht nach optimalen Lösungen, sondern geben sich mit „zufriedenstellenden Lösungen“ zufrieden. Für dieses Verhalten prägte Herbert A. Simon den Begriff des Satisficings.
  • Menschliche Entscheider verwenden keine vollständigen Suchalgorithmen (wie es ein Computer typischerweise tut), sondern setzen auf Intuition und Daumenregeln. Später kam hierfür der Begriff der Heuristik auf.

Aus diesen beiden Komponenten entstand das Konzept der Bounded Rationality – Problemlöser suchen meist nicht nach optimalen Lösungen (und sind dazu für gewöhnlich auch gar nicht in der Lage), sondern nur nach Lösungen, die ein bestimmtes Zufriedenheitsniveau mit einem bestimmten Aufwand erreichen.

Die Rolle der Intuition

Die Frage, nach welchen Regeln Satisficing und Heuristik bestimmt werden, ist damit aber natürlich noch nicht beantwortet. Eine zentrale Rolle bei menschlichen Entscheidern kommt dabei wohl der Intuition zu – dem unbewussten Wissen, welche Vorgehensweise am ehesten zum Erfolg führt und womit man sich zufriedengeben sollte.

Die Psychologie weiß inzwischen, dass unsere Intuition umso besser ist, je mehr Erfahrung wir in einem bestimmten Anwendungsgebiet haben. Entgegen der landläufigen Auffassung, dass man entweder Sachverstand oder eine gute Intuition benötigt, ist die Intuition also ein Werkzeug, das umso wirksamer ist, je mehr Sachverstand man hat. Sie ist keine Gabe, über die wir alle verfügen und die wir überall anwenden können, sondern ein Ergebnis von anwendungsbezogenem Training.

Die Erkenntnis, dass wir nicht in allem genügend Expertise für gute Intuitionen entwickeln können, hat auch ursprünglich zum Siegeszug der Algorithmen geführt. Denn diese gibt es schon seit Jahrtausenden – nicht, um Computer damit zu füttern, sondern um auch solchen Personen das Bearbeiten bestimmter Probleme zu erlauben, die nicht genügend Erfahrung besitzen, um selbständig eine Lösung zu finden. Für sie liefert der Algorithmus eine Schritt-für-Schritt-Anleitung, mit der auch eine Person mit geringem Sachverstand das Problem bearbeiten kann.

Das Expertenproblem

Der Siegeszug der Computer führt nun aber dazu, dass wir genau solche Personen zunehmend weniger brauchen. Ein Computer mag eine „deprimierend dämliche Maschine“ sein, aber er ist gut darin, eine Schritt-für-Schritt-Anleitung schnell und fehlerfrei auszuführen. Aufgaben, deren Lösung durch einen Algorithmus beschrieben werden können, werden daher immer häufiger von Maschinen gelöst.

Was mich wieder zu einem der Dauerthemen dieses Blogs bringt: Dem Unterricht bzw. der akademischen Lehre. Wie bereits mehrfach erwähnt, konzentrieren sich beide derzeit mehrheitlich auf das Lernen von Fakten und das Anwenden von Standard-Lösungsverfahren, also genau auf die Dinge, die der Computer eigentlich besser kann als wir Menschen. Besonders bedauerlich ist dabei, dass genau das von vielen Studierenden auch noch gefordert wird.

Die Notwendigkeit echter Problemlösungskompetenz dagegen wird zwar von manchen Professoren durchaus erkannt. Doch aus den unter „Probleme lösen lernen“ beschriebenen Gründen ist man oft nicht konsequent genug, die Lehre (und die Prüfungen) so umzustellen, dass die Mehrzahl der Teilnehmer eine realistische Chance hat, sie zu erlernen.

Suchräume und AD(H)S

Beim Lesen des Buches „Mit ADHS erfolgreich im Beruf“ von Heiner Lachenmeier ist mir übrigens eine interessante Verbindung zu AD(H)S aufgefallen. Lachenmeier charakterisiert ADS ausdrücklich nicht als Aufmerksamkeitsstörung (im Gegenteil, unter den richtigen Umständen neigen ADSler ja sogar zum Hyperfokussieren), sondern dadurch, dass ADSler dazu neigen, ihre Gedanken zu weit vom „vorgesehenen Weg“ schweifen zu lassen.

Das kann man ganz gut mit dem Suchraum-Modell erklären. Demnach würde ein ADSler dazu neigen, in seinem Denken weniger „bounded“ im Sinne der bounded rationality zu sein – sein Geist verfolgt auch Pfade, die untypisch sind und die manchmal auch nicht zum Erfolg führen. Der Nachteil ist, dass sein Verhalten so von dem des typischen Denkers abweicht und dass er manchmal selbst vermeintlich einfache Probleme nicht oder nur mit übermäßigem Zeitaufwand löst, weil er sich im Suchbaum „verlaufen“ hat. Der Vorteil ist dafür, dass er manchmal sehr kreative Lösungen findet, weil er Denkwegen folgt, die andere gar nicht erst in Betracht ziehen. Hinzu kommt – und dieser Punkt ist mir wirklich erst durch Lachenmeiers Buch aufgefallen – dass er viel mehr Übung darin hat, größere Suchräume zu bearbeiten. Auf diese Weise ist er (wenn er es schafft, seinen Fokus auf einem Thema zu halten) u.U. in der Lage, Probleme zu lösen, die sonst niemand lösen konnte.

Zugegeben, das ist reine Küchenpsychologie – ich habe keine Studien dazu durchgeführt oder Paper dazu gelesen. Aber es würde den hohen Anteil von ADS-Denkern sowohl unter Künstlern als auch unter erfolgreichen Wissenschaftlern erklären.

Ein offenes Problem

Aber so sehr ich mich für das Suchraum-Modell begeistern kann (für einen Informatiker ist wahrscheinlich alles, was mit Suchbäumen zu tun hat, automatisch reizvoll), so sehr wurmt mich, dass es sich eben nur um ein Modell handelt.

Es beschreibt zwar mathematisch korrekt, wie man ein Suchproblem strukturieren kann. Aber es beschreibt dummerweise nicht, wie unser Gehirn tatsächlich beim Lösen von Problemen vorgeht.

Zur Erinnerung: Unser Gehirn enthält zwar auch „Knoten und Kanten“ (nämlich Neuronen und Synapsen) wie ein Baum oder Graph, aber diese Neuronen entsprechen wohl kaum den Zwischenzuständen beim Lösen eines Problems. Mein Verständnis der „Hardware“ unseres Gehirns ist leider nicht so gut, wie ich es mir wünschen würde, aber je mehr ich mich damit beschäftige, desto mehr beschleicht mich der Verdacht, dass es den (Neuro-)Psychologen da nicht wirklich anders geht. Soweit ich verstanden habe, können wir trotz aller Forschung ganz elementare Fragen wie „Wie speichert unser Gehirn (physisch) eine komplexe Erinnerung?“ oder „Wie findet das Gehirn (physisch) eine Lösung zu einem Optimierungsproblem?“ genau genommen bis heute nicht beantworten. Es gelingt mir daher derzeit noch nicht, das Suchraum-Modell auf unser Modell des menschlichen Gehirns abzubilden.

Vielleicht liest ja ein Neuropsychologe oder KI-Experte mit und versorgt mich im Kommentarbereich mit hilfreichen Links, die meiner pessimistischen Einschätzung widersprechen. Aber bis dahin fürchte ich, dass das schöne Suchraum-Modell eben nur genau das ist: ein Modell.