Stud.IP Uni Oldenburg
University of Oldenburg
22.06.2021 04:14:26
inf030 - Programming, Algorithms and Data Structures (Complete module description)
Original version English PDF Download
Module label Programming, Algorithms and Data Structures
Modulkürzel inf030
Credit points 9.0 KP
Workload 270 h
Institute directory Department of Computing Science
Verwendbarkeit des Moduls
  • Bachelor's Programme Business Informatics (Bachelor) > Basiscurriculum
  • Bachelor's Programme Computing Science (Bachelor) > Basismodule
  • Bachelor's Programme Economics and Business Administration (Bachelor) > Studienrichtung Wirtschaftsinformatik
  • Bachelor's Programme Mathematics (Bachelor) > Nebenfachmodule
  • Bachelor's Programme Sustainability Economics (Bachelor) > Wahlpflichtbereich
  • Dual-Subject Bachelor's Programme Computing Science (Bachelor) > Basismodule
Zuständige Personen
Lehnhoff, Sebastian (Prüfungsberechtigt)
Boles, Dietrich (Prüfungsberechtigt)
Lehrenden, Die im Modul (Prüfungsberechtigt)
Prerequisites
Skills to be acquired in this module
Ziele des Moduls:
Das Programmieren ist eine der Basistätigkeiten von Informatikern und Voraussetzung für viele andere Veran- staltungen des Informatikstudiums. Ziel des Moduls „Programmierung, Datenstrukturen und Algorithmen“ ist das Erlernen grundlegender Konzepte der imperativen und prozeduralen Programmierung anhand der Pro- grammiersprache Java sowie die Vorstellung bekannter, effizienter Algorithmen und Datenstrukturen für ver- schiedene, häufig vorkommende Problemstellungen.
Die Studierenden sollen nach Abschluss des Moduls selbstständig imperative Programme auf der Grundlage von Java für die Lösung kleinerer Probleme entwickeln und die Effizienz ihrer Programme einschätzen 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
- 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 bewer- ten 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 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 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.
Module contents
Im ersten Teil werden allgemeine Grundbegriffe der Programmierung eingeführt:
  • Algorithmus, Programmiersprachen, Computer
  • Entwicklungswerkzeuge, Entwicklungsphasen
  • Compiler
  • Syntaxdiagramme
  • Logik
  • Dokumentation

Der zweite Teil befasst sich mit imperativen Programmierkonzepten:
- Datentypen
- Variablen
- Ausdrücke, Anweisungen
- Kontrollstrukturen
- Prozeduren, Funktionen, Parameter
- Rekursion
- Referenzdatentypen, Arrays, Verbunde

Der dritte Teil beinhaltet eine Einführung in Datenstrukturen und Algorithmen sowie die Diskussion ihrer Effi- zienz, d.h. des Berechnungsaufwands in Abhängigkeit vom Umfang der zu verarbeitenden Daten. Das Modul stellt für verschiedene, häufig vorkommende Problemstellungen bekannte, effiziente Algorithmen und Daten- strukturen vor. Konkreter sind dies insbesondere:
- Verfahren zum Suchen nach Schlüsseln, sowie Einfügen und Löschen in dynamischen Datenmengen, z.B. AVL-Bäume, B-Bäume, Hash-Verfahren,
- Methoden zur Suche nach Textmustern,
- Verfahren zum Sortieren von Daten nach Schlüsselwerten, z.B. Quick-Sort und Heap-Sort,
- Graph-basierte Anwendungen, z.B. zur Ermittlung kürzester Wege in Graphen,
- einfache numerische Verfahren, z.B. zum Lösen linearer Gleichungssysteme,
- ein Beispiel eines diskreten Optimierungsverfahrens, z.B. das Simplex-Verfahren.

Ergänzt wird der Vorlesungsteil um einen umfassenden Übungsteil, in dem insbesondere die vermittelten Programmierinhalte an praktischen Beispielen umgesetzt werden.
Literaturempfehlungen
Essentiell:
  • Skript (wird entweder in gedruckter Form oder in elektronischer Form über das StudIP fortlaufend in der Vorlesung zur Verfügung gestellt)


Gute Sekundärliteratur:
  • Dietmar Ratz, Jens Scheffler, Detlev Seese, Jan Wiesenberger: Grundkurs Programmieren in Java, Carl Han- ser 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
Links
Language of instruction German
Duration (semesters) 1 Semester
Module frequency WiSe
Module capacity unlimited
Modullevel / module level BC (Basiscurriculum / Base curriculum)
Modulart / typ of module Pflicht / Mandatory
Lehr-/Lernform / Teaching/Learning method V+Ü
Vorkenntnisse / Previous knowledge
Form of teaching Comment SWS Frequency Workload of compulsory attendance
Lecture
4 WiSe 56
Exercises
2 WiSe 28
Präsenzzeit Modul insgesamt 84 h
Examination Prüfungszeiten Type of examination
Final exam of module
Genaue Prüfungsmodalitäten werden in der Veranstaltung bekannt gegeben.
KL