Module Concepts of Programming Languages, Computer Science (Master) (ER 5)

English language
Compact font

Color scheme

Module summary

Concepts of Programming Languages

INFM120S

Prof. Dr. Martin Sulzmann

/

1st Semester

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.

Written Exam 90 Min. (graded)
Course Programming Paradigms

INFM121S

Lecture

Prof. Dr. Martin Sulzmann

German

3/3

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

Module exam

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

  • 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

INFM122S

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 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.

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

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.