inf030 Programmierung, Datenstrukturen und Algorithmen (Vollständige Modulbeschreibung)

inf030 Programmierung, Datenstrukturen und Algorithmen (Vollständige Modulbeschreibung)

Deutsch English PDF Download
Modulbezeichnung Programmierung, Datenstrukturen und Algorithmen
Modulkürzel inf030
Kreditpunkte 9,0 KP
Verantwortliche Einrichtung Department für Informatik
Zuständige Personen
Modulverantwortung:
Christian Schönberg
Prüfungsberechtigt:
Die im Modul Lehrenden
Teilnahmevoraussetzungen

Keine fachspezifischen Vorkenntnisse erforderlich.

Unterrichtssprache Deutsch
Lernergebnisse/Kompetenzen

Das Programmieren ist eine der Basistätigkeiten von Informatikern (m/w/d) und Voraussetzung für viele andere Veranstaltungen des Informatikstudiums. Ziel des Moduls „Programmierung, Datenstrukturen und Algorithmen“ ist das Erlernen grundlegender Konzepte der imperativen, prozeduralen und objektorientierten Programmierung anhand der Programmiersprache Java sowie die Vorstellung bekannter, effizienter Algorithmen und Datenstrukturen für verschiedene, häufig vorkommende Problemstellungen.

Die Studierenden sollen nach Abschluss des Moduls selbstständig imperative und einfache objektorientierte Programme auf der Grundlage von Java für die Lösung kleinerer Probleme entwickeln und die Effizienz ihrer Programme einschätzen können. Außerdem sollen sie wichtige Algorithmen anwenden und aufgrund ihrer Komplexität auswählen können.

Fachkompetenzen

Die Studierenden

  • beschreiben grundlegende Konzepte der imperativen Programmierung mit Java
  • erkennen die Terminologie der imperativen Programmierung und verwenden die entsprechenden Begriffe präzise bei Diskussionen
  • erkennen grundlegende Terminologie der objektorientierten Programmierung
  • beschreiben, was ihnen vorgelegte Programme tun
  • entwickeln selbstständig Programme für die Lösung kleinerer Probleme
  • untersuchen systematisch eigene und fremde Programme auf Fehler
  • setzen moderne Programmentwicklungsumgebungen zum Entwickeln und Testen von Programmen ein
  • erstellen Algorithmen mit allgemeinen Entwurfskonzepten (z.B. Greedy-Verfahren, Divide-and-Conquer- Verfahren)
  • benennen Algorithmen und Datenstrukturen zur Lösung von häufig vorkommenden Problemen und bewerten diese in ihrer Anwendbarkeit
  • benennen Probleme der Effizienz von algorithmischen Lösungen konkreter Fragestellungen und bewerten diese
  • wählen fundiert einen Algorithmus und eine Datenstruktur zur Lösung eines konkreten Problems aus
  • wenden die gelernten Algorithmen und Datenstrukturen sinnvoll auf gegebene und konkrete Probleme an

Methodenkompetenzen

Die Studierenden

  • lösen gegebene Probleme unter den Gesichtspunkt der imperativen bzw. objektorientierten Programmierung
  • übertragen praktische Erfahrungen in der Programmentwicklung auf neue Aufgaben

Sozialkompetenzen

Die Studierenden

  • vermitteln die Struktur und Wirkungsweise selbst entwickelter Programme an andere
  • präsentieren selbstständig entwickelte Lösungen zu kleinen Aufgaben vor Gruppen

Selbstkompetenzen

Die Studierenden

  • organisieren sich beim Finden von algorithmischen Lösungen für kleine und mittelgroße Probleme der Informatik
  • beziehen die Konzepte des allgemeinen Programmentwurfs in ihr Handeln ein
Modulinhalte

Im ersten Teil werden allgemeine Grundbegriffe der Programmierung eingeführt:

  • Algorithmus, Programmiersprachen, Computer
  • Entwicklungswerkzeuge, Entwicklungsphasen
  • Compiler
  • Grammatiken
  • Logik

 

Der zweite Teil befasst sich mit grundlegenden Programmierkonzepten:

  • Datentypen
  • Variablen
  • Ausdrücke, Anweisungen
  • Kontrollstrukturen
  • Methoden, Parameter
  • Rekursion
  • Referenzdatentypen, Arrays
  • Klassen, Objekte
  • Dokumentation
  • Testen

 

Der dritte Teil beinhaltet eine Einführung in Datenstrukturen und Algorithmen sowie die Diskussion ihrer Effizienz, d.h. des Berechnungsaufwands bzw. des Speicherbedarfs in Abhängigkeit vom Umfang der zu verarbeitenden Daten. Das Modul stellt für verschiedene, häufig vorkommende Problemstellungen bekannte, effiziente Algorithmen und Datenstrukturen vor. Dazu gehören insbesondere:

  • Verfahren zum Suchen nach Schlüsseln, sowie Einfügen und Löschen in dynamischen Datenmengen, z.B. Listen, Bäume, AVL-Bäume oder Hash-Verfahren,
  • Methoden zur Suche nach Textmustern,
  • Verfahren zum Sortieren von Daten nach Schlüsselwerten, z.B. QuickSort und HeapSort,
  • Graph-basierte Anwendungen, z.B. zur Ermittlung kürzester Wege in Graphen.

 

Ergänzt wird der Vorlesungsteil um einen umfassenden Übungsteil, in dem insbesondere die vermittelten Programmierinhalte an praktischen Beispielen umgesetzt werden.

Literaturempfehlungen

Essenziell

  • Skript (wird in elektronischer Form über das Stud.IP fortlaufend in der Vorlesung zur Verfügung gestellt)

Empfohlene Sekundärliteratur

  • Dietmar Ratz, Jens Scheffler, Detlev Seese, Jan Wiesenberger: Grundkurs Programmieren in Java, Carl Hanser Verlag.
  • Joachim Goll, Cornelia Heinisch: Java als erste Programmiersprache, Springer Vieweg Verlag
  • Ottmann, Widmayer: Algorithmen und Datenstrukturen. Spektrum Verlag, 5. Auflage, 2012
  • Segdewick, Wayne: Algorithms. Addison Wesley, 4th ed., 2011
  • Siege: Einführung in die Informatik. Shaker Verlag, 2013
Zu erbringende Leistungen
Prüfungsart, -umfang, -dauer

Klausur / Portfolio (schriftliche Kurzprüfungen) / mündliche Prüfung

Wiederholungsprüfung:

Klausur / Portfolio (schriftliche Kurzprüfungen) / mündliche Prüfung

Prüfungszeiten

Am Ende der Veranstaltungszeit

Dauer in Semestern 1 Semester
Angebotsrhythmus jedes Wintersemester
Workload
Arbeitsaufwand gesamt Davon Präsenzzeit
270 h
Lehrveranstaltungsform
Veranstaltungsart SWS Angebotsrhythmus Workload Präsenzzeit
Vorlesung 4 WiSe 56 h
Übung 2 WiSe 28 h
Zusätzliche Hinweise

Aufnahmekapazität:
unbegrenzt

Lehr-/Lernform:
V+Ü

Verwendbarkeit des Moduls
  • Erweiterungsfach Gymnasium Informatik > Informatik
  • Erweiterungsfach Gymnasium Informatik > Module
  • Fach-Bachelor Informatik > Basismodule
  • Fach-Bachelor Mathematik > Nebenfachmodule
  • Fach-Bachelor Nachhaltigkeitsökonomik > Wahlpflichtbereich
  • Fach-Bachelor Wirtschaftsinformatik > Basiscurriculum
  • Fach-Bachelor Wirtschaftswissenschaften > Studienrichtung Wirtschaftsinformatik
  • Zwei-Fächer-Bachelor Informatik > Basismodule