Concepts in Programming Languages

Instructor: Mooly Sagiv
TA: Oded Padon

Lecture: Recitations:

This is a basic which covers some of the main programming languages and also sone of the fundamental areas in the programming languages design and implementations. The topics include: operational and denotational program semantics, programming concepts such as higher order functions, lazy and eager evaluation, normal forms such as continuation passing style, polymorphism, type theory, dependent types, and monads. Applications such as domain specific programming languages. The course is inspired by the programming language course in Stanford university

Prerequisites: Computer Models and Software Project.

The grade of the course will be based on 30% homework assignments, and 70% exam.

Reading Material

Course Material

Exercise submission guidelines

Lecture Recitation Exercise
05/03 Overview 7-8/3 No recitation
12/3 Principles of Induction 14-15/3 Inductive Definitions Ex. 1 - Induction and Inductive Definitions
pdf
Due 12/04/2018
19/3 Natural Operational Semantics 21-22/3 Natural Operational Semantics
python files
26-27/3 Natural and Structural Operational Semantics Ex. 2 - Operational Semantics
pdf
python files
Due 26/04/2018
9/4 Structural Operational Semantics 11-12/4 Structural Operational Semantics
Solution to 2017-A-Q3
16/4 Lambda Calculus Revised 18-19/4 No recitation
23/4 Typed Lambda Calculus Revised 25-26/4 Untyped Lambda Calculus
Ex. 3 - Lambda Calculus
pdf
Due 10/05/2018 17/05/2018
30/4 RevisedIntroduction to ML 2-3/5 Lambda Calculus
Lambda Calculus Evaluation Orders
7/5 Advanced Issues in ML
Closures
9-10/5 Typed Lambda Calculus
Real World OCaml, Chapters 1,2,3,5,6
OCaml Example: Regular Expressions
14/5 -"- 16-17/5 -"-
21/5 Type Inference 23-24/5 More OCaml:
List folding and tail recursion
Continuation Passing Style
Tail recursive DFS
Ex. 4 - OCaml Project: Lambda Calculus Interpreters
pdf
OCaml files
Due 14/06/2018
27/5 Introduction to JavaScript 30-31/5 Hindley-Milner Type Inference
4/6 Runtime Storage Management for Programming Languages 6-7/6 JavaScript 1 Ex. 5 - JavaScript & Type Inference
pdf
fibonacci.js
Minesweeper
Minesweeper zip file
Javascript submission instructions new
Due 29/06/2018 05/07/2018
11/6 The Scala Programming Language (Not in the exam)
Course Summary
Exam preparation
13-14/6 JavaScript 2

Course Forum

Course forum

Past Exams

Note: In 2018, the exam will include a question about inductive definitions, that will replace previous years' question about parsing.