INF1004 Programmieren 2

Modulverantwortliche
  • Prof. Dr. Dominikus Herzberg
Lehrende
  • Prof. Dr. Dominikus Herzberg
  • Nadja Krümmel
Vorausgesetzte Module
Kurzbeschreibung

Die Studierenden beherrschen grundlegende Konzepte einer modernen Programmiersprache, die sowohl prozedurale, objektorientierte als auch funktionale Sprachkonstrukte umfasst. Sie sind dazu befähigt, ein umfangreicheres Programmiervorhaben im Rahmen des Integrationsprojekts umzusetzen.

Inhalte
  • Fortgeschrittene objektorientierte Konzepte: Pakete/Module, Generizität von Klassen/Methoden, Annotationen, generische Datentyp-Bibliotheken, Bibliotheken zur Ein-/Ausgabe, zum Daten-/Verzeichniszugriff und zum Netzzugriff
  • Grundlegende funktionale Konzepte, wie u.a. Funktionen, Closures, Lambda-Ausdrücke, Immutabilität und referentielle Transparenz, Higher-Order-Functions, Streams, abstrakte Datentypen
  • Fortgeschrittene Laufzeitkonzepte, Introspektion und Reflection, Threads, Nebenläufigkeit und Parallelität, Ereignissteuerung, Probleme interaktiver Anwendungen
  • Fortgeschrittene Programmiertätigkeiten, wie u.a. Programmanalyse, Daten- und Programm-Modellierung, Qualitätssicherung, Dokumentation, Nutzung von Entwicklerdokumentation z.B. API-Dokumentation und Sprachstandards
  • Fortgeschrittener Technikeinsatz, wie u.a. Entwicklungswerkzeuge inkl. Debugger, Build-Werkzeug etc., Programmiertechniken (wie z.B. Design by Contract, datenflussorientierte Programmierung, Programmiermuster) und Nutzung von Rahmenwerken (wie z.B. zum Testing, zur Server-Programmierung).
  • Web-Basiswissen: wie u.a. Client/Server-Architektur, Frontend/Backend, HTTP, Sockets, HTML, CSS, basale JavaScript-Kenntnisse, Interaktionselemente, Web-Framework
Qualifikations- und Lernziele

Fachkompetenzen

  • Die Studierenden können neben erweiterten (Sprach)konzepten der Objektorientierung grundlegende Sprachkonzepte der funktionalen Programmierung benennen; Sie können das Verständnis der Konzepte gezielt zur Programmentwicklung nutzen (Objektorientierung, funktionale Programmierung).
  • Sie können eine Anwendung entwickeln und sind in der Lage, die Darstellung und Dokumentation des Codes nach professionellen Ansprüchen aufzubereiten (Anwendungsentwicklung).

Methodenkompetenzen (fachlich & überfachlich)

  • Die Studierenden sind in der Lage, eine Programmieraufgabe zu analysieren und auf Problemlösestrategien zurückgreifen, um einen Umsetzungsplan zu formulieren (Modellierung).
  • Sie sind in der Lage, ihre Programme einerseits auf Erfüllung der Anforderung hin zu testen und andererseits Fehler zu entdecken und zu beheben (Testing, Debugging).

Sozialkompetenzen

  • Die Studierenden können andere Studierende im Entwicklungsprozess unterstützen.

Selbstkompetenzen

  • Die Studierenden können erlernte Handlungs- und Entwicklungsmuster routiniert nutzen (Verinnerlichung).
  • Sie können sich nach dem ersten Programmierjahr eigenständig in andere objektorientierte und funktional-hybride Programmiersprachen einarbeiten, sowie Programme in einer anderen Programmiersprache lesen und verstehen (Transfer).
ECTS-Leistungspunkte (CrP)
  • 6 CrP
  • Arbeitsaufwand 180 Std.
  • Präsenzzeit 60 Std.
  • Selbststudium 120 Std.
Lehr- und Lernformen
  • 4 SWS
  • Vorlesung 1 SWS
  • Übung 1 SWS
  • Praktikum 2 SWS
Studiensemester
  • Bioinformatik (B.Sc. 2022)
  • Informatik (B.Sc. 2022)
  • Ingenieur-Informatik (B.Sc. 2022)
Dauer
1 Semester
Häufigkeit des Angebots
Jedes Semester
Unterrichtssprache
Deutsch
Bonuspunkte

Ja

Bonuspunkte werden gemäß § 9 (4) der Allgemeinen Bestimmungen vergeben. Art und Weise der Zusatzleistungen wird den Studierenden zu Veranstaltungsbeginn rechtzeitig und in geeigneter Art und Weise mitgeteilt.

Prüfungsleistungen

Prüfungsvorleistung:

Hausübungen und Kurztests

(Anzahl und Umfang der Vorleistung wird den Studierenden rechtzeitig und in geeigneter Weise bekannt gegeben.)

Prüfungsleistung:

Regelmäßige Teilnahme am Praktikum (mindestens 80% der Zeit), Klausur und/oder Entwicklung in der Informatik (zusammen 100%)

(Art und Umfang des Leistungsnachweises wird den Studierenden rechtzeitig und in geeigneter Weise bekannt gegeben.)

Benotung
Die Bewertung des Moduls erfolgt gemäß §§ 9, ggf. 12 (Teilleistungen), ggf. 18 (Arbeiten, Kolloquien) der Allgemeinen Bestimmungen (Teil I der Prüfungsordnung).
Verwendbarkeit
Gemäß § 5 der Allgemeinen Bestimmungen (Teil I der Prüfungsordnung) Verwendbarkeit in allen Bachelorstudiengänge der THM möglich.
Literatur, Medien
  • Gosling, James et al.: The Java Language Specification. https://docs.oracle.com/javase/specs/
  • Ullenboom, C.: Java ist auch eine Insel. Einführung, Ausbildung, Praxis. Rheinwerk.
  • Prähofer, H.: Funktionale Programmierung in Java. Eine umfassende Einführung. dpunkt.

Rechtliche Hinweise