Ziele |
Lernziele
Die Studierenden erlernen in diesem Modul fortgeschrittene Konzepte der systematischen Entwicklung von Software am Beispiel einer aus didaktischer Sicht geeigneten, praxisrelevanten Programmiersprache.
Kompetenzen
Die Veranstaltung fokussiert die unter Inhalt aufgelisteten fachlichen Themen und entwickelt dazu in den Studierenden die folgenden Kompetenzen.
Die Studierenden…
- definieren die Grundbegriffe des jeweiligen fachlichen Inhalts.
- benennen in einem vorgegebenen Artefakt (Anforderungsdefinition, Testfall, Entwurf, Algorithmusspezifikation, Quelltext) die dort verwendeten Konstrukte / Elemente mit den korrekten Fachbegriffen.
- schreiben die konkrete Syntax eines programmier-sprachlichen Konstruktes korrekt auf und halten dabei die Syntaxkonventionen ein.
- erklären in eigenen Worten die Bedeutung der Grundbegriffe des jeweiligen fachlichen Inhalts, insbesondere der programmiersprachlichen Konstrukte.
- beschreiben in eigenen Worten die Unterschiede zwischen den einzelnen programmiersprachlichen Konstrukten.
- begründen, warum Softwareentwicklung aus mehr Schritten besteht als nur der Implementierung.
- setzen einen textuell oder grafisch vorgegebenen Entwurf in Quelltext einer festgelegten Programmiersprache um. Der Entwurf gibt dabei die Struktur der Klassen incl. von deren Attributen und Methoden vor. Für die Methoden ist der Algorithmus in seinen Grundzügen ebenfalls vorgegeben. Der Quelltext erfüllt dabei grundlegende Qualitätsanforderungen (Lesbarkeit, Testbarkeit, Korrektheit).
- ermitteln zu einer gegebenen Implementierung und konkreten Eingabe- bzw. Startwerten das konkrete Ergebnis.
Der Fokus liegt dabei auf fortgeschrittenen Programmierkonzepten sowie den höheren Kompetenzebenen gemäß der Lernzieltaxonomie von Bloom (in der Überarbeitung von Anderson et. al.), also Analysieren, Evaluieren und Kreieren. Die Studierenen…
- geben zu einer vorgegebenen Implementierung an, was diese prinzipiell macht, abstrahiert von konkreten Eingabe- bzw. Startwerten.
- wägen systematisch ab, welches Konzept bzw. Konstrukt der Programmiersprache am besten geeignet ist, um eine bestimmte Anforderung umzusetzen.
- identifizieren Stärken und Verbesserungspotenzial in einem gegebenen Artefakt (z.B. Problemformulierung, Entwurf, Algorithmusspezifikation, Quelltext).
- bewerten ihre eigene Lösung (d.h. ein von ihnen selbst erstelltes Artefakt) kritisch auf Stärken und Schwächen, die hinsichtlich grundlegender Qualitätsanforderungen bestehen (Lesbarkeit, Testbarkeit, Korrektheit).
- entwickeln für ein einfaches Problem aus einer gegebenen Anforderungsspezifikation heraus einen Entwurf, der sowohl die Gesamtstruktur der Lösung als auch die einzelnen Algorithmen vorgibt. Der Entwurf erfüllt dabei grundlegende Qualitätsanforderungen (Korrektheit, Effizienz der Algorithmen, Testbarkeit). Ein „einfaches Problem“ ist dabei eine Aufgabenstellung, die mit max. 10 Klassen objektorientiert zu lösen ist.
Überfachliche Kompetenzen
Ergänzend entwickeln die Studierenden Informatik-relevante Schlüsselkompetenzen weiter, die für die adressierten Kompetenzebenen notwendig sind, insbesondere:
- Abstraktes Denken
- Analytisches Denken
- Logisches Denken
- Kritisches Hinterfragen
- Strukturieren
- Kreativität
- Sorgfalt
|
Literatur |
- R. Schiedermeier: Programmieren in Java, Pearson Studium, 2. Auflage, August 2010.
- R. Schiedermeier, K. Köhler: Das Java-Praktikum: Aufgaben und Lösungen zum Programmierenlernen mit Java 7, dpunkt, 2. Auflage, September 2011.
- M. Inden: Der Weg zum Java-Profi: Konzepte und Techniken für die professionelle Java-Entwicklung, dpunkt, 3. Auflage, Februar 2015.
- K. Günster: Einführung in Java: Ideal für Studium und Ausbildung, Rheinwerk Computing, Januar 2015.
|