Stud.IP Uni Oldenburg
Universität Oldenburg
08.04.2020 17:09:48
inf030 - Programmierung,Datenstrukturen und Algorithmen (Vollständige Modulbeschreibung)
Originalfassung Englisch PDF Download
Modulbezeichnung Programmierung,Datenstrukturen und Algorithmen
Modulcode inf030
Kreditpunkte 9.0 KP
Workload 270 h
Fachbereich/Institut Department für Informatik
Verwendet in Studiengängen
  • Fach-Bachelor Informatik (Bachelor) > Basismodule
  • Fach-Bachelor Mathematik (Bachelor) > Nebenfachmodule
  • Fach-Bachelor Wirtschaftsinformatik (Bachelor) > Basismodule
  • Fach-Bachelor Wirtschaftswissenschaften (Bachelor) > Studienrichtung Wirtschaftsinformatik
  • Zwei-Fächer-Bachelor Informatik (Bachelor) > Basismodule
Ansprechpartner/-in
Modulverantwortung
Prüfungsberechtigt
Teilnahmevoraussetzungen
Kompetenzziele
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.
Modulinhalte
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
Unterrichtssprache Deutsch
Dauer in Semestern 1 Semester
Angebotsrhythmus Modul WiSe
Aufnahmekapazität Modul unbegrenzt
Modullevel BC (Basiscurriculum / Base curriculum)
Modulart Pflicht / Mandatory
Lern-/Lehrform / Type of program V+Ü
Vorkenntnisse / Previous knowledge
Lehrveranstaltungsform Kommentar SWS Angebotsrhythmus Workload Präsenzzeit
Vorlesung 4.00 WiSe 56 h
Übung 2.00 WiSe 28 h
Präsenzzeit Modul insgesamt 84 h
Prüfung Prüfungszeiten Prüfungsform
Gesamtmodul
Genaue Prüfungsmodalitäten werden in der Veranstaltung bekannt gegeben.
Klausur oder mündliche Prüfung oder Portfolio