PL: Programming Languages

helloWorld.png

Course: 21048 (Spring Semester 2021)
Lecturer: Oscar Nierstrasz, Nataliia Stulova
Staff: Mohammadreza Hazhirpasand, Joel Niklaus
Lectures: Friday 10h15 - 12h00
Exercises: Friday 12h00 - 13h00
Place: IWI 001, Engehaldestrasse 8
Start: 2021-02-26
Exam: 2021-06-04 (written, 60 minutes)

Logistics

NB: Due to Covid-19, this class will largely be held remotely. Please sign up in ILIAS as soon as possible so that we can inform you about how to participate in the lectures. In case of any encounters in person, please be sure to bring a mask, as there may not be enough room to maintain social distancing.

Description

Programming languages are the means by which we instruct a computer to perform tasks for us. We use different programming languages to accomplish different tasks, but what really are the differences between various languages?

In this course we adopt the viewpoint that programming is modeling, so different programming languages offer us different ways to model our applications. We will examine a number of different paradigms for programming, and in each case look at one or more concrete examples of programming languages that support that paradigm. Specifically we will look at languages like Postscript, Haskell, Prolog, JavaScript and EToys. We will also take a brief look at the semantics of programming languages, and we will see how semantic descriptions can be made directly executable to obtain a rapid prototype of a language.

Learning Outcomes

On successful completion of this course, you will be able to:

Grading

The final grade in the course will be based 30% on exercises and 70% on the final exam.

Schedule Spring 2021

Week Date Lecture Assignment
1 26-Feb-21 Introduction Week 1 - solution
2 05-Mar-21 Stack-based Programming Week 2 - solution
3 12-Mar-21 Functional Programming Week 3 - solution
4 19-Mar-21 Types and Polymorphism Week 4 - solution
5 26-Mar-21 Lambda Calculus Week 5 - solution
- 02-Apr-21 Good Friday
- 09-Apr-21 Spring break
6 16-Apr-21 Fixed Points Week 6 - solution
7 23-Apr-21 Programming Language Semantics Week 7 - solution
8 30-Apr-21 Objects and Prototypes Week 8 - solution
9 07-May-21 Objects, Types and Classes Week 9 - solution
10 14-May-21 Logic Programming Week 10 - solution
11 21-May-21 Applications of Logic Programming Week 11 - solution
12 28-May-21 Visual Programming
13 04-Jun-21 Final Exam