101 - Computational Thinking
Studiensemester: 1
Turnus: Wintersemester
Lehrveranstaltungen:
4 SWS Seminaristischer Unterricht
4 SWS Praktikum
Geplante Gruppengröße:
Seminaristischer Unterricht: ca. 45 Studierende
Praktikum: ca. 20 Studierende
Präsenzzeit:
60 Stunden Seminaristischer Unterricht
60 Stunden Praktikum
Workload/Selbststudium:
300 Stunden Workload /
180 Stunden Selbststudium
ECTS: 10
Modulverantwortung:
Prof. Dr. Martin Hobelsberger (FK 07)
Lehrende:
Prof. Dr. Martin Hobelsberger (FK 07)
Prof. Dr. Thomas Kofler (FK 07)
N.N.
Lehrinhalte
Konzepte und Methoden des Computational Thinking
Grundlegene Konzepte, Arbeitsweisen und Aufbau von IT Systemen
Grundlegende Konzepte der prozeduralen Programmierung auf der Basis einer aktuellen, allgemein verfügbaren Programmiersprache
Einführung und Einstieg in die objektorientierte Programmierung
Im Einzelnen werden behandelt:
Der intrinsische, sozial-gesellschaftliche und langfristige Wert des Computational Thinkings
Informationsverarbeitung: Informationsdarstellung und Codierung (Binärsystem und andere Formate), Informationsmanipulation (Funktionsweise von Gattern bis zum Addierer), Informationskreislauf (Prinzipien und Arbeitsweise eines IT-Systems), Gegenüberstellung von Hard- und Software
Computational Thinking verstehen als Kunstform: Unterschied zwischen konkreter Welt, modellierter Welt und abstrahierter Welt, Unterschied zwischen Programmieren und Computational Thinking betont als kreativer Akt, Definition von Quellcode, Programm und Algorithmus, Evolution unterschiedlicher Programmiersprachen
Grundlagen der Programmierung mit u.a.: Arithmetische Ausdrücke, Variablen und Datentypen, Kontrollstrukturen, Datenstrukturen, Arrays und Listen, Strings und Textzeichen, Funktionen, Rekursion, Klassen und Methoden, Exception Handling, Tests
Bearbeitung/Lösung konkreter algorithmischer Probleme aus den Bereichen der jeweiligen Studiengänge (z.B. Anaylse und Darstellung von Datensätzen, Erstellung und Nutzung eines neuen binären Bildformats, Bildverarbeitung, Animation einer Schwingung, Zeichnen einer Schneeflocke, Nutzung eines Web Crawlers, Animation
Einführung in Algorithmen und Datenstrukturen: Entwicklung einer Intuition für Komplexität, Tradeoff zwischen Speicher und Rechenleistung (z.B. verlustfreie Komprimierung von Daten), Sortieralgorithmen, Konzept der Hashfunktion (Dictionaries/HashMaps), mehrdimensionale Listen, Unterschied zwischen veränderlichen (mutable) und unveränderlichen (immutable) Datenstrukturen, Entwurf eigener erster einfacher Datenstrukturen (z.B. ein Namensregister), Umgang mit Datenstukturen aus dem Bereich des Scientific Computing (z.B. Numpy-Arrays und Pandas-Datenframes)
Kompetenzorientierte Lernziele
Fachkompetenz
Die Studierenden erwerben die Fähigkeit, algorithmische Lösungskonzepte für Problemstellungen zu entwickeln und diese mit einer höheren Programmiersprache umzusetzen. Sie können eine Problemstellung analysieren, die zur Lösung erforderlichen Schritte identifizieren, diese Schritte verbalisieren, geeignete Konstrukte auswählen sowie syntaktisch und semantisch korrekt umsetzen. Im konkreten werden folgende Ziele adressiert:
Studierende im Kurs Computational Thinking
entwickeln ein breites und solides Verständnis von Informatik, der Informationsverarbeitung und Programmierung.
kennen den Grundlegenden Aufbau und die Funktionsweise von IT Systemen.
entwickeln die Kompetenz algorithmisch zu denken, um u.a. Alltagssituationen in Algorithmen (- unmissverständliche Lösungsschritte) zu übertragen oder Probleme in Teilprobleme zu zerlegen. Weiterhin ist algorithmisches Denken erforderlich, um algorithmisch abstrakte Ähnlichkeiten zu erkennen und für sich zu nutzen (Mustererkennung) oder wichtige von unwichtigen Informationen zur Lösung eines Problems zu unterscheiden und ihre Lösungsschritte dadurch so allgemein wie möglich zu halten.
entwickeln die Kompetenz effiziente Lösungskonzepte für (Programmier-) Problemstellungen zu entwickeln.
entwickeln die Fähigkeit Lösungsschritte in unmissverständlicher Form niederzuschreiben (Design von Algorithmen).
wenden moderne Werkzeuge zur Umsetzung von Lösungskonzepten an.
setzen Programmierprojekte eigenständig und im Team um.
entwickeln eine Neugier für noch unbekannte und ungelöste Probleme.
werden für sozial-gesellschaftliche Zusammenhänge im Rahmen der Informationsverarbeitung sensibilisiert.
entwickeln ihre eigenen sozialen Kompetenzen weiter.
Methodenkompetenz
Die Studierenden setzen Werkzeuge zur Erstellung von Software sinnvoll ein.
Selbstkompetenz
Die Studierenden modellieren Lösungen mit Hilfe von Konstrukten in Programmiersprachen, so dass eine algorithmische Verarbeitung möglich wird.
Sozialkompetenz
Die Studierenden erarbeiten Lösungen zu anwendungsnahen Problemen im Team. Studierende präsentieren und erläutern Teammitgliedern ihre Lösungen.
Vorkenntnisse/Teilnahmevoraussetzungen
Verwendung des Moduls
Das Modul ist ein Pflichtmodul in den MUC.DAI Studiengängen 'Informatik und Design' und 'Digital Engineering'.
Seminaristischer Unterricht
praktische Programmieraufgaben
praktische Programmierprojekte
Lehrmethoden
Literatur
Paul Curzon, Peter W. McOwan, Computational Thinking: Die Welt des algorithmischen Denkens – in Spielen, Zaubertricks und Rätseln. Springer Verlag
Klein, Bernd. Einführung in Python 3: Für Ein-und Umsteiger. Carl Hanser Verlag GmbH Co KG, 2017
Klein, Bernd. Numerisches Python: Arbeiten mit NumPy, Matplotlib und Pandas. Carl Hanser Verlag GmbH Co KG, 2019
VanderPla, Jake. Python Data Science Handbook, O'Reilly Media, Inc. 2016