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:
Different flavors of polymorphism:
Program correctness:
There is no final exam. Evaluation is based on quizzes, midterms and several smaller projects that are carried out during the semester.
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:
Different flavors of polymorphism:
Program correctness:
There is no final exam. Evaluation is based on quizzes, midterms and several smaller projects that are carried out during the semester.
Prerequisites: Experience in a programming language.
Mix of lectures (2/3) and practical exercies (1/3)
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:
Detailled description of the assigments and source code framework.
The solutions are presented and discussed with the supervisor during the exercises.