Wie kommt man von einer (komplexen) Problemstellung auf eine algorithmische Beschreibung einer (schlauen) Lösung?
Mit Computational Thinking! «Computisches Denken» meint die Strategie, Lösungswege in eine Schritt-für-Schritt-Anleitung zu übersetzen.
Computational Thinking (auf Deutsch etwa «Informatisches Denken») beschreibt eine sehr allgemeine Menge von Denkfiguren, also Arten des Denkens, die bei der Problemlösung zum Einsatz kommen. Computational Thinking bezieht sich nicht notwendigerweise auf Algorithmen und auch nicht nur auf die Informatik. Vielmehr sollen die beschriebenen Denkweisen als Hilfestellung zur strukturierten Lösung aller möglichen Arten von Problemen dienen.
Die wichtigsten Denkfiguren des Computational Thinking sind:
Decomposition
![](/m27d/assets/ct-decomposition.Zt2D5EVM.png)
Ein grosses Problem wird in mehrere kleine zerlegt. Diese kleineren Teilprobleme sind einfacher zu handhaben bzw. zu bedenken, oft kann man sie einzeln nacheinander lösen. Dazu gehört ebenfalls die Strategie, zunächst eine einfachere Version des Problems zu lösen und den initialen Lösungsansatz dann auf immer allgemeinere Formen des Problems zu erweitern.
Pattern Recognition
![](/m27d/assets/ct-pattern-recognition.Cuhy7hdp.png)
Wiederkehrende Muster und ähnliche Teilprobleme, also gleichartige Strukturen werden identifiziert. So kann man sich bei der Lösungsfindung auf wenige Aspekte konzentrieren und durch die wiederholte Anwendung derselben Lösungsschritte auch umfangreiche Aufgaben meistern.
Abstraction
![](/m27d/assets/ct-abstraction.DoI5jRZB.png)
Das Problem wird aus einem gewissen Abstand betrachtet und über Details hinweggeschaut. Dieser Schritt ist beispielsweise nötig, um das Problem in seiner einfachst möglichen Form zu formulieren, in der nur noch die wirklich relevanten Informationen berücksichtigt werden.
Natürlich hilft die abstraktere Sichtweise auch bei Decomposition und Pattern Recognition, denn oftmals zeigt sich, dass zu Beginn verschieden erscheinende (Teil-)Probleme sich auf einen gemeinsamen Kern zurückführen lassen und mit derselben (wiederholten) Strategie zu lösen sind.
Bei komplexen Problemen ist es oft nötig, kontinuierlich mit verschiedenen Ebenen der Abstraktion umzugehen, beispielsweise wenn man eigentlich gerade eine Lösung für ein Teilproblem sucht, dabei aber den Zusammenhang mit dem Gesamtproblem auf der einen und der technischen Umsetzung auf der anderen Seite nicht ganz ausser Acht lassen darf.
Algorithm Design
![](/m27d/assets/ct-algorithm-design.CXQ80bfn.png)
Die Lösung oder den Lösungsansatz wird in klar formulierte, einzelne Schritte aufgeteilt und eine Reihenfolge für diese Schritte festgelegt. Dazu gehört ebenfalls, dass man die Rahmenbedingungen für einen Algorithmus immer wieder überprüft (z.B. ob die Schritte eindeutig formuliert sind, ob der gefundene Lösungsansatz immer korrekte Ergebnisse liefert oder ob alle Varianten des Problems berücksichtigt sind).