Bachelor: Geodata Science
101 - Computational Thinking
Empfohlenes Studiensemester: 1
Turnus: Wintersemester
Sprachen: Deutsch
ECTS: 10
Prüfungsform: schrP und FrwL oder praP und FrwL, weitere Angaben siehe SPO und Studienplan
Lehrform und SWS: SU (4SWS), Pra (4SWS)
Gesamter Workload: 300 Stunden
Präsenzzeit: 60 Stunden Seminaristischer Unterricht, 60 Stunden Praktikum
Selbststudium: 180 Stunden
Modulverantwortung: Prof. Dr. Martin Hobelsberger (FK07)
Weitere Lehrende: Prof. Dr. Thomas Kofler (FK07), Prof. Dr.-Ing. Martin Orehek (FK07), Prof. Dr. Matthias Bauer (FK07), Prof. Dr. Benedikt Dietrich (FK07)
Empfohlene Voraussetzung für die Teilnahme
keine
Lernziele
Fach- und Methodenkompetenz
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, Probleme in Teilprobleme zu zerlegen, Algorithmisch abstrakte Ähnlichkeiten zu erkennen und für sich zu nutzen (Mustererkennung), 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.
Selbstkompetenz
Studierenden im Kurs Computational Thinking
- modellieren Lösungen mit Hilfe von Konstrukten in Programmiersprachen, so dass eine algorithmische Verarbeitung möglich wird.
- entwickeln eine Neugier für noch unbekannte und ungelöste Probleme.
Sozialkompetenz
Studierenden im Kurs Computational Thinking
- erarbeiten Lösungen zu anwendungsnahen Problemen im Team.
- präsentieren und erläutern Teammitgliedern ihre Lösungen.
- werden für sozial-gesellschaftliche Zusammenhänge im Rahmen der Informationsverarbeitung sensibilisiert.
Inhalt
- Konzepte und Methoden des Computational Thinking
- Grundlegende 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. Analyse 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 Datenstrukturen aus dem Bereich des Scientific Computing (z.B. Numpy-Arrays und Pandas-Datenframes)
Lehrmethoden und Lernformen
Folien, Tafel, virtuelle Lehr-Lernräume, interaktive Notebooks, interaktives Jupyter-Buch, anwendungsorientierte Projekte, Lehr-/Lernvideos, Gastvorträge
Verwendbarkeit des Moduls
Bachelor Digital Engineering, Bachelor Informatik und Design, Bachelor Geodata Science, Hochschulzertifikat Digital
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