Module summary
Module name:
Internal number:
Coordinator:
Extent:
Semester:
Pre-requisites with regard to content: none
Pre-requisites according to the examination regulations:
none
Competencies:

Students will get to know various types of programming languages and their underlying concepts as well as optimization methods to efficiently execute programs. Via practical exercises students are exposed to different styles of programming in several programming languages. They are able to judge the usefullness and effectiveness of various programming concepts.

Assessment:
Written Exam 90 Min. (graded)
Course: New Lecture
Internal number: INFM121SE.b Type/mode: Lecture
Lecturer:
Prof. Dr. Christian Pape
Language of instruction:
German
Credits (ECTS): 1 Contact hours: 1
Assessment: Module exam
Content:
Recommended reading:
Comments:
Course: New Lecture
Internal number: INFM123E Type/mode: Exercise
Lecturer:
Prof. Dr. Martin Sulzmann
Language of instruction:
German
Credits (ECTS): 2 Contact hours: 1
Assessment: Exercise 1 Semester (not graded)
Content:
Recommended reading:
Comments:
Course: Programming Paradigms
Internal number: INFM121SE.a Type/mode: Lecture
Lecturer:
Prof. Dr. Martin Sulzmann
Language of instruction:
German
Credits (ECTS): 2 Contact hours: 2
Assessment: Module exam
Content:

Students of this course

  • obtain an overview of the history of programming languages,
  • get to know the various styles of programming (paradigms),
  • explore their commonalities and differences,
  • get hands on experiences by solving practical problems.

List of topics covered includes:

  • Historical Overview

  • Procedural languages

    • Block structure

    • Parameter Passing

  • Object-oriented languages

    • Subtyping

    • Inheritance

    • Overloading

  • Functional languages
    • Lambda calculus
    • Higher-order functions
    • Algebraic data types and pattern matching
  • Type systems
    • Deduction (-> Prolog / logic programming)
    • Typinference
    • Polymorphism
    • Static Analysis
  • Concurrent and distributed programming
    • The Actor model
    • Software Transactional Memory
Recommended reading:
  • Lecture notes and slides
  • Exercises
  • Textbook: Concepts in Programming Languages von John C. Mitchell
Comments:

Prerequisites: Experience in a programming language.  

 

Mix of lectures (2/3) and practical exercies (1/3)

Course: Program Optimization Laboratory
Internal number: INFM122E Type/mode: Exercise
Lecturer:
Prof. Dr. Christian Pape
Language of instruction:
German
Credits (ECTS): 2 Contact hours: 2
Assessment: Exercise 1 Semester (not graded)
Content:

The students of this course have to

  • implement complex algorithms with a procedural or object-oriented programming language,
  • optimize the implementation with specific techniques like CPU-cache optimization or the pardigm of hybridization,
  • measure and analyze the time and memory consumption of the implemenation,
  • compare algorithms with respect to different test scenarios, and
  • documenting and discuss the final results.

The computer science problems of this course change from time to time. Typical problems include:

  • Fast multiplication of polynomials and numbers,
  • geometric algorithms, or
  • graph algorithms.
Recommended reading:

The exercises and supplementary materials are available electronically (HTML, PDF, partial programms).

Comments:

Prerequisites:

Deep practical knowledge of a procedural or object-oriented programming language like C, C++, C#, or Java. Implementation and testing of basic algorithms in the field of search, graphs and sorting problems.

Format:

Practical  Assignment in a computer laboratory with small introductional parts as a lecture.

Support:

Individual support by the teachers in the computer lab. Contact outside laboratory time via e-mail or during the hours of the lecturers.