CAPE – Computer-assisted Programming Exercises. Verzahnung von Programmieraufgaben und E-Learning.

CAPE – Computer-assisted Programming Exercises. Verzahnung von Programmieraufgaben und E-Learning.

Fakultät

Abteilung Informatik und Angewandte Kognitionswissenschaft

Organisationseinheit

Bachelor

Studienform

Förderprogramm / Auszeichnung

Format

11/2017 bis 8/2018

Förderzeitraum

In den Vorlesungen Grundlagen der künstlichen Intelligenz (ca. 250 Studierende) und Sprachtechnologie (ca. 50 Studierende) wird der Anteil der Programmieraufgaben für die Studierenden erhöht, um die Programmierkenntnisse der Studierenden zu verbessern. Zusätzlich werden Zugangshürden der Studierenden verringert, indem vorkonfigurierte Systeme für die Programmieraufgaben zur Verfügung gestellt werden.

Programmierung ist ein grundständiger Lerninhalt in allen Studiengängen mit Informatikanteilen – dementsprechend auch in der Angewandten Informatik und der Angewandten Kognitions- und Medienwissenschaften. Programmieren ist jedoch ein anwendungsbezogener Lernprozess. Diese praktische Seite kommt in den eher theoretisch geprägten Vorlesungen oft zu kurz und die praktischen Übungen orientierten sich bislang nicht im gewünschten Maße an Fragestellungen, wie sie im späteren Arbeitskontext aufkommen würden. Konkret ist zu beobachten, dass Programmieraufgaben, selbst wenn sie in den Übungen angeboten werden, nicht bearbeitet werden. Das hat zum einen mit Zugangshürden zu tun: Zur Bearbeitung der Programmieraufgaben ist eine Entwicklungsumgebung notwendig, die korrekt konfiguriert werden muss. Regelmäßig scheitert die aktive Teilnahme an den Programmieraufgaben an dieser inhaltlich irrelevanten Hürde. Weiter wird Programmierung am Anfang des Studiums gelehrt und dann vorausgesetzt. Die konkrete Realisierung vieler Informatikvorlesungen erfordert jedoch oft keinerlei wirkliche Programmierung. Diese Mischung aus fehlenden Anreizen und fehlenden Möglichkeiten führt dazu, dass die Studierenden oft keine ausreichenden Programmierkenntnisse im Studium erwerben oder die erworbenen Kenntnisse nicht weiter ausbauen.

Um die Programmierkenntnisse der Studierenden zu erhöhen, standen den Studierenden verschiedene Programmieraufgaben zur Verfügung. Die Aufgaben haben drei Schwierigkeitsniveaus, um den unterschiedlichen Lernständen der Studierenden Rechnung zu tragen. Da Programmieraufgaben in jedem Fall eine Anwendung des erworbenen Wissens darstellen, zielen die Niveaus eher auf eine Binnendifferenzierung der Kompetenzen. Leichte Aufgaben geben einen Programmcode vor, dessen Funktion erklärt werden soll („Erkennen“). Mittlere Aufgaben geben einen Programmcode vor, der an eine geänderte Aufgabenstellung adaptiert werden soll („Analysieren“). Schwierige Aufgaben enthalten eine textuelle Beschreibung eines Problems, welches dann selbstständig in einen Programmcode übersetzt werden soll. („Anwenden“).

In beiden Vorlesungen wird bereits ein Bonussystem eingesetzt, bei dem Punkte für eingereichte Hausaufgaben verteilt werden, die über die normalen Übungsaufgaben hinausgehen. Die Schwierigkeitsniveaus wurden so gewählt, dass die erfolgreiche Lösung des mittleren Niveaus zur Lösung der Bonusaufgaben befähigt.

Um die Zugangshürden der Studierenden abzubauen, wurden vorkonfigurierte Systeme, teilweise unterstützt durch Virtualisierung (z.B. Bereitstellung einer vorkonfigurierten Programmierumgebung in einer Virtual Machine) oder Web-IDEs, zur Verfügung gestellt, damit alle Studierenden in der Lage waren, die Aufgaben zu bearbeiten.

Zusätzlich sorgte aber auch die Modellierung der Aufgaben auf drei Schwierigkeitsniveaus für eine Verringerung der Zugangshürden, da die Studierenden jeweils auf dem niedrigsten Niveau beginnen konnten und dann stufenweise zum erwarteten Leistungsniveau geführt wurden.

Eine weitere Zugangshürde bestand darin, dass die Vorlesung Grundlegende Programmiertechniken zwar im Studienverlaufsplan vor den hier adressierten Vorlesungen stattfindet, aber von einem nicht unwesentlichen Teil der Studierenden noch nicht bestanden wurde, d.h. es fehlen wesentliche Voraussetzungen für eine aktive Teilnahme. Dies wurde insoweit abgefangen, dass eine kurze Einführung in die grundlegende Python-Programmierung anhand von sehr einfachen Aufgaben optional als „Übung 0“ angeboten wurde.

Die Übungen gaben den Studierenden verbesserte Möglichkeiten zum Selbststudium der Programmieraufgaben. Zudem konnten die beschriebenen Einstiegshürden minimiert, und die Bearbeitung der Programmieraufgaben über das Semester hinweg verbessert werden.

Zuletzt aktualisiert: Nov. 27, 2025

  • Prof. Dr.-Ing. Torsten Zesch

    Fakultät für Informatik

    Sprachtechnologie

    torsten.zesch@uni-due.de