Der Kurs "Algorithmisches Denken und Programmierung" (ADP) ist in sechs inhaltliche Blöcke gegliedert:
- Einführung: Grundlagen der Programmierung
- Suchalgorithmen
- Sortieralgorithmen und Datenstrukturen
- Rekursion
- Hashfunktionen
- Design
Die ersten fünf Blöcke bestehen jeweils aus zwei Bausteinen (Präsenzeinheit, Programmierlabor):
(a) Eine Präsenzeinheit von 2 Stunden zu Konzepten mit geführten Programmierübungen (auf Basis des begleitenden Lehrbuchs), die gemeinsam mit den BetreuerInnen in einer interaktiven Arbeitsumgebung schrittweise erarbeitet werden.
(b) Ein Programmierlabor, zur Anwendung der Konzepte und Fertigkeiten in selbstständig auszuarbeitenden Aufgaben, in welchem drei Aufgaben auszuarbeiten sind. Zu diesem Zweck wird das Programmierlabor nicht in Form einer Präsenzveranstaltung abgehalten, sondern über Online-Aktivitäten in LEARN. Diese Aktivitäten im "Blended-Learning-Modus" werden begleitet (Forum, Chat, Laborstunden der BetreuerInnen) und durch die BetreuerInnen beurteilt. Der sechste Block ("Design") besteht aus einer abschließenden Präsenzeinheit, die auch der Rückmeldung zu den Ergebnissen der Programmierlabore und der Prüfungsvorbereitung dient, ohne angeschlossenes Labor.
Das erste Programmierlabor ist ein Präsenztermin, in denen dieBetreuerInnen eine Einführung zu den notwendigen Arbeitsumgebungen (Kommandozeile, Editor, LEARN, Jupyter Notebooks) und unmittelbare Hilfestellung bei individuellen Problemen bieten.
Online-Aktivitäten
- Online-Diskussion im Umfang von 2 Nettoarbeitsstunden (LEARN: Chat, Forum):
In der Kleingruppe erarbeiten Sie in Form eines Chats eine Beschreibung in natürlicher Sprache für einen vorgegebenen, bereits implementierten Algorithmus. - Kollaborative Codeannotation im Umfang von 2,5 Nettoarbeitsstunden (LEARN: Chat, Wiki):
In der Kleingruppe studieren Sie vorgegebene Programme (sog. "code review"). Mit Hilfe von Annotationen sind die zentralen Programmbestandteile zu markieren und zu beschreiben. - Online-Abgabegespräch im Umfang von 4 Nettoarbeitsstunden (LEARN: Screencast):
Als Einzelner erarbeiten Sie eine Implementierung für ein vorgegebenes Berechnungsproblem. Dieses ist in Form eines Jupyter-Notebooks zu dokumentieren (Implementierung und Codekommentare). Zusätzlich, und anhand eines Leitfadens mit Fragen, erstellen Sie ein Präsentationsvideo (max. 3-4 Minuten), in welchem Sie Ihren KollegInnen und den BetreuerInnen wichtige Lösungsschritte und Details der Implementierung erläutern.