Concepts in Programming Languages

Instructor: Mooly Sagiv
TA: Yotam Feldman

Lecture: Recitations:

This is a basic which covers some of the main programming languages and also some 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
27-28/2 No recitation
04/3 Overview PPTX & Principles of Induction PPTX 6-7/3 Inductive Definitions (revised)
11/3 Natural Operational Semantics PPTX 13-14/3 Natural Operational Semantics Ex. 1 - Syntax, Induction, NOS
Due 01/04/2019
18/3 Structural Operational Semantics PPTX 18/3 Natural & Structural Operational Semantics
semantics implementation
25/3 Lambda Calculus PPTX 27-28/3 Structural Operational Semantics +
Untyped Lambda Calculus
Ex. 2 - NOS & SOS
python files
Due 15/04/2019 23/04/2019
1/4 Simply Typed Lambda Calculus PPTX 3-4/4 Untyped Lambda Calculus 2
Lambda Calculus Evaluation Orders Handout
8/4 An Introduction to ML PPTX 10-11/4 Untyped & Simply Typed Lambda Calculus Ex. 3 - Lambda Calculus
Due 13/05/2019
29/4 Advanced Issues in ML PPTX 1-2/5 OCaml 1

Course Forum

In the course's Moodle page.