Concepts in Programming Languages

Lecture: Monday 10-12, Dan David 003
Recitation: Wednesday 16-17, 17-18, Dan David 110
Instructor: Mooly Sagiv
TA: Oded Padon (

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 50% homework assignments, and 50% exam.

Reading Material

Course Material

Exercise submission guidelines

Lecture Recitation Exercise
9/3 Overview
18/3 Predictive Parsing 20/3 Predictive Parsing Ex. 1 - Predictive Parsing
python files
Due 13/04/2015
23/3 Natural Operational Semantics 25/3 Natural Operational Semantics
30/3 More Natural Operational Semantics

13/4 Structural Operational Semantics 15/4 Structural Operational Semantics & Interpreters Ex. 2 - Operational Semantics
python files
Due 04/05/2015
20/4 Introduction to Lambda Calculus
27/4 Introduction to Ocaml 29/4 Untyped Lambda Calculus Ex. 3 - Untyped Lambda Calculus
Due 18/05/2015
4/5 Modules and References 6/5 Real World OCaml, Chapters 1,2,3,5,6
OCaml installation instructions
11/5 Closures 13/5 OCaml Example: Regular Expressions Ex. 4 - OCaml Project: Lambda Calculus Interpreters
new: version that does not require Core
OCaml files that require Core
OCaml files without Core
Due 08/06/2015 15/06/2015
18/5 Javascript
Spider Monkey Stand alone interpreter
20/5 More OCaml:
List folding and tail recursion
Tail recursive DFS
Continuation Passing Style
25/5 Run Time Management for Programming Languages
27/5 JavaScript 1
1/6 Type Checking and Type Inference (Corrected)
3/6 JavaScript 2
8/6 The Scala Programming Language
10/6 Hindley-Milner Type Inference Ex. 5 - JavaScript & Type Inference
Due 29/06/2015
15/6 Exam Rehearsal 17/6 Scala:
Sieve of Eratosthenes
Phone Coder
Scala Spreadsheet (source files)


Course Forum

course forum

Important Message

If your POWERPOINT does not show certain mathematical characters use fonts in a zip file, by clicking here. Make sure to extract
them to the appropriate directory,

Alternatively, you can extract them anywhere, and install them via the control panel