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.
Students of this course
List of topics covered includes:
Historical Overview
Procedural languages
Block structure
Parameter Passing
Object-oriented languages
Subtyping
Inheritance
Overloading
Prerequisites: Experience in a programming language.
Mix of lectures (2/3) and practical exercies (1/3)
The students of this course have to
The computer science problems of this course change from time to time. Typical problems include:
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.