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

Reading Material

Course Material

Exercise submission guidelines

Lecture Recitation Exercise
30/10 Overview 2/11 No recitation
6/11 Predictive Parsing 9/11 Predictive Parsing Ex. 1 - Predictive Parsing
python files
Due 23/11/2016
13/11 Natural Operational Semantics 16/11 Natural Operational Semantics
python files
20/11 Structural Operational Semantics 23/11 More NOS and SOS
python files (same as above)
Ex. 2 - Operational Semantics
pdf (updated 26/11)
python files
Due 07/12/2016
27/11 Lambda Calculus 27/11 Even More NOS and SOS
30/11 Lambda Calculus
4/12 Lambda Calculus 7/12 More Lambda Calculus
Lambda Calculus Evaluation Orders
Ex. 3 - Lambda Calculus
pdf (6d updated 11/12)
Due 21/12/2016
11/12 Introduction to ML 14/12 More Untyped Lambda Calculus and Simply Typed Lambda Calculus (updated 19/12)
18/12 Advanced issues in ML
21/12 Real World OCaml, Chapters 1,2,3,5,6
OCaml Example: Regular Expressions
Recitation utop history
Ex. 4 - OCaml Project: Lambda Calculus Interpreters
OCaml files
Due 11/01/2017
25/12 Hanukkah 28/12 More OCaml:
List folding and tail recursion
1/1 (Revisted 8/1) Type Inference 4/1 More OCaml:
Continuation Passing Style
Tail recursive DFS
8/1 Javascript 11/1 Hindley-Milner Type Inference Ex. 5 - JavaScript & Type Inference
Minesweeper zip file
Due 25/01/2017
15/1 Storage Management for PL 18/1 JavaScript 1
22/1 Scala Go 25/1 JavaScript 2
29/1 PL Summary 1
PL Summary 2

Course Forum

Course forum

Past Exams