Module Programming language concepts, Computer Science (Master) (ER 8)

English language
Compact font

Color scheme

Module summary

Programming language concepts

INFM120SE

Prof. Dr. Martin Sulzmann

/

All semesters

none

none

Programming languages are the most basic tool of programmers. This course covers the basics of the theory of programming languages, its applications to widely used languages today, and trends in the field that are likely to help define the programming languages of tomorrow. After this course, students will have an understanding of a wide range of programming language concepts and will be able to quickly adapt to emerging new programming languages. A mix of written as well as practical exercises will help students to get an understanding of different styles of programming in several programming languages.


Content.


Various styles of programming with a focus on functional programming:

  • data types and pattern matching
  • higher-order functions
  • polymorphic types


Different flavors of polymorphism:

  •  subtyping (structual and nominal)
  • generics
  • overloading


Program correctness:

  •  static verification methods
  •  testing methods such as QuickCheck


There is no final exam. Evaluation is based on quizzes, midterms and several smaller projects that are carried out during the semester.

Individual exams
Course Programming paradigms

INFM121SE

Lecture

Prof. Dr. Martin Sulzmann

German

3/3

90 hours in total, including 45 hours of contact study.

Exercise 1 Semester (graded)

Programming languages are the most basic tool of programmers. This course covers the basics of the theory of programming languages, its applications to widely used languages today, and trends in the field that are likely to help define the programming languages of tomorrow. After this course, students will have an understanding of a wide range of programming language concepts and will be able to quickly adapt to emerging new programming languages. A mix of written as well as practical exercises will help students to get an understanding of different styles of programming in several programming languages.


Content:

Various styles of programming with a focus on functional programming:

  • data types and pattern matching
  • higher-order functions
  • polymorphic types

Different flavors of polymorphism:

  • subtyping (structual and nominal)
  • generics,
  • overloading

Program correctness:

  • static verification methods
  • testing methods such as QuickCheck


There is no final exam. Evaluation is based on quizzes, midterms and several smaller projects that are carried out during the semester.

  • Lecture notes and slides
  • Exercises
  • Textbook: Concepts in Programming Languages von John C. Mitchell

Prerequisites: Experience in a programming language. 

 

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

Course Program Optimization Laboratory

INFM122E

Exercise

Prof. Dr. Christian Pape

German

4/3

120 hours in total, including 45 hours of contact study.

Exercise 1 Semester (not graded)

The students learn to correctly implement complex algorithms using a system-level procedural or object-oriented programming language such as C or C++.


They optimize these algorithms in terms of execution speed using various paradigms such as hybridization or cache optimization techniques.


The participants in the course measure the execution times and empirically check the asymptotic runtime of the implemented procedures. To do this, they create various test scenarios in order to compare and evaluate the algorithms based on them.


The students document and discuss the results. They analyze their optimizations and explain the results.


The computer science problems to be addressed vary. Typical content is:

  • Ray tracing
  • Fast multiplication of polynomials and numbers
  • Graphical geometric algorithms
  • Graph algorithms

Detailled description of the assigments and source code framework.

The solutions are presented and discussed with the supervisor during the exercises.