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
P. Denning, M. Tedre (2019): Computational Thinking, p. 4
(1) designing computations that get computers to do jobs for us, and
(2) explaining and interpreting the world as a complex of information processes.
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.