Bachelor: Digital Engineering

101 - Computational Thinking

Empfohlenes Studiensemester: 1

Turnus: Wintersemester

Sprachen: Deutsch

ECTS: 10

Prüfungsform: praP oder schrP, 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