Module Handbook

  • Dynamischer Default-Fachbereich geändert auf INF

Module INF-02-41-M-2

Programming 2 (M, 12.0 LP)

Module Identification

Module Number Module Name CP (Effort)
INF-02-41-M-2 Programming 2 12.0 CP (360 h)

Basedata

CP, Effort 12.0 CP = 360 h
Position of the semester 1 Sem. in SuSe
Level [2] Bachelor (Fundamentals)
Language [DE] German
Module Manager
Lecturers
Area of study [INF-PFL] Mandatory Modules
Reference course of study [INF-82.B16-SG] B.Sc. Socioinformatics
Livecycle-State [NORM] Active

Courses

Type/SWS Course Number Title Choice in
Module-Part
Presence-Time /
Self-Study
SL SL is
required for exa.
PL CP Sem.
4V+2U INF-02-06-K-2
Algorithms and Data Structures
P 84 h 156 h
U-Schein
ja PL1 8.0 SuSe
2L INF-02-21-K-2
Programming Lab
P 28 h 92 h
PR_MDL
- no 4.0 SuSe
  • About [INF-02-06-K-2]: Title: "Algorithms and Data Structures"; Presence-Time: 84 h; Self-Study: 156 h
  • About [INF-02-06-K-2]: The study achievement "[U-Schein] proof of successful participation in the exercise classes (ungraded)" must be obtained.
    • It is a prerequisite for the examination for PL1.
  • About [INF-02-21-K-2]: Title: "Programming Lab"; Presence-Time: 28 h; Self-Study: 92 h
  • About [INF-02-21-K-2]: The study achievement "[PR_MDL] presentation or oral examination" must be obtained.

Examination achievement PL1

  • Form of examination: written exam (Klausur) (120-150 Min.)
  • Examination Frequency: each semester
  • Examination number: 60206 ("Algorithms and Data Structures")

Evaluation of grades

The grade of the module examination is also the module grade.


Contents

  • Characteristics and properties of algorithms (computability, correctness, pseudocode notation)
  • Runtime of algorithms (runtime and efficiency, growth of functions, asymptotic notation and calculation rules, recursive algorithms, amortized analysis)
  • Runtime of operations of elementary data structures
  • Sorting algorithms (primitive sorting algorithms, quicksort, mergesort, heapsort, external sorting, sorting without comparisons)
  • Data structures for dictionaries (binary search trees, balanced search trees, B-trees, hashing)
  • Graphs and important graph algorithms (data structures for graphs, traversing, shortest paths, minimum span trees)
  • Basic Design Methods (Divide-and-Conquer, Dynamic Programming, Greedy Algorithms, Backtracking)
  • Basic concepts of complexity theory (Turing machines, classes P and NP, Karp reduction, some important NP-complete problems)
  • Specification of software requirements
  • Development and implementation of algorithms as well as data modeling in programs
  • Characteristics of programming frameworks, algorithms and programming languages
  • Development environments and other programming tools (e.g., version control systems)
  • Testing and debugging as well as software quality assurance (e.g., module and integration tests)
  • Practical experiments on the runtime behavior of algorithms
  • Development and usage of libraries for efficient data structures

Competencies / intended learning achievements

Die Studierenden kennen grundlegende Algorithmen und Datenstrukturen (Suchverfahren, Sortierverfahren, balancierte Suchbäume, Hashing) und sind in der Lage,
  • Algorithmen zu formulieren und dabei grundlegenden Datenstrukturen und algorithmische Ansätze zu verwenden,
  • Standardmethoden zur Bestimmung und Beschreibung der Laufzeit von Algorithmen anzuwenden,
  • Standardtechniken für den Entwurf von Algorithmen auf neue Problemen anzuwenden,
  • für einfache Probleme zu beweisen, dass kein effizienter Algorithmus existieren kann,
  • Probleme nach ihrer Laufzeitkomplexität und Struktur zu klassifizieren und zu vergleichen,
  • ihre Programmierfertigkeiten anhand ausgewählter Aufgabenstellungen zu vertiefen, die vor allem die Anwendung von Algorithmen und Datenstrukturen einüben,
  • mit Softwareentwicklungsumgebungen in einer praxisrelevanten Programmiersprache umzugehen und geeignete Ressourcen bei der Problemlösung zu nutzen,
  • die erzielten Ergebnisse angemessen zu dokumentieren,
  • wichtige Erkenntnisse bei der gemeinsamen Bearbeitung der Aufgaben im Team zu beschreiben.

In den Übungen haben sie sich einen sicheren, präzisen und selbstständigen Umgang mit den Begriffen, Aussagen und Methoden aus der Vorlesung erarbeitet.

Literature

  • Cormen, Leiserson, Rivest, Stein: Algorithmen - Eine Einführung. Oldenbourg Verlag, 2013.
  • Mehlhorn, Kurt, and Peter Sanders. Algorithms and data structures: The basic toolbox. Springer Science & Business Media, 2008.
  • Nebel: Entwurf und Analyse von Algorithmen. Springer-Verlag, 2012.
  • Ottmann, Widmayer: Algorithmen und Datenstrukturen. Springer-Verlag, 2012.
  • Bloch, Joshua.  Effective java . Pearson Education India, 2016.
  • A. Hunt und D. Thomas,The Pragmatic Programmer: From Journeyman to Master , 1 edition. Reading, Mass: Addison-Wesley Professional, 1999.
  • R. C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship , 1. Aufl. Upper Saddle River, NJ: Prentice Hall, 2008.
  • S. McConnell, Code Complete: A Practical Handbook of Software Construction, Second Edition , 2nd edition. Redmond, Wash: Microsoft Press, 2004.
  • Naftalin, Maurice, and Philip Wadler.  Java generics and collections . " O'Reilly Media, Inc.", 2007.
  • R. Sedgewick, K. Wayne, Algorithms, Addison-Wesley Professional; 4th edition, 2011
  • Sestoft, Peter. Java precisely. Mit Press, 2016.

Requirements for attendance of the module (informal)

Modules:

Requirements for attendance of the module (formal)

None

References to Module / Module Number [INF-02-41-M-2]

Course of Study Section Choice/Obligation
[INF-82.B16-SG] B.Sc. Socioinformatics [Compulsory Modules] Computer Science [P] Compulsory