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 (updated 17/03/2016)

Lecture Recitation Exercise
29/2 Overview 2-3/3 Predictive Parsing Ex. 1 - Predictive Parsing
pdf
python files
Due 17/03/2016 24/03/2016
7/3 Predictive Parsing 9-10/3 No recitation
14/3 Natural Operational Semantics 16-17/3 Natural Operational Semantics Ex. 2 - Operational Semantics
pdf
python files
Due 31/03/2016
21/3 Structural Operational Semantics 23,25/3 More NOS and SOS
28/3 Revised Introduction to Lambda Calculus 30-31/3 Untyped Lambda Calculus (revised 31/3)
new Lambda Calculus Evaluation Orders
Ex. 3 - Untyped Lambda Calculus
pdf (updated 5/4)
Due 14/04/2016 18/04/2016
4/4 Revised Introduction to ML 6-7/4 More Untyped Lambda Calculus
11/4 Advanced ML 13-14/4 Real World OCaml, Chapters 1,2,3,5,6
Recitation utop history
18-19/4 OCaml Example: Regular Expressions
Recitation utop history
2/5 Closure
(Revised)Type Inference
4-5/5 More OCaml:
List folding and tail recursion
Tail recursive DFS
Continuation Passing Style
Ex. 4 - OCaml Project: Lambda Calculus Interpreters
pdf
OCaml files
Due 19/05/2016 26/05/2016
9/5 Javascript
16/5 RevisedScope, Function Calls and Storage Management 18-19/5 Hindley-Milner Type Inference
22/5 The Scala Programming Language 25-26/5 JavaScript 1 (updated 26/5) Ex. 5 - JavaScript & Type Inference
pdf
fibonacci.js
Minesweeper
Minesweeper zip file
Due 16/06/2016
30/5 The Go Programming Language
Course Summary (Initial Version)
1-2/6 JavaScript 2
6/6 Type Inference of Pattern Matching 8-9/6 Scala:
Sieve of Eratosthenes
Phone Coder
Scala Spreadsheet (source files)

Course Forum

Course forum

Past Exams