Instructor: Mooly Sagiv
TA: Yotam Feldman
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.
Lecture  Recitation  Exercise 
2728/2 No recitation  
04/3 Overview PPTX & Principles of Induction PPTX  67/3 Inductive Definitions (revised)  
11/3 Natural Operational Semantics PPTX  1314/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  2728/3 Structural Operational Semantics +
Untyped Lambda Calculus  Ex. 2  NOS & SOS python files Due 
1/4 Simply Typed Lambda Calculus PPTX  34/4 Untyped Lambda Calculus 2
Lambda Calculus Evaluation Orders Handout 

8/4 An Introduction to ML PPTX  1011/4 Untyped & Simply Typed Lambda Calculus 
Ex. 3  Lambda Calculus
Due 13/05/2019 
29/4 Advanced Issues in ML PPTX  12/5 OCaml 1 
In the course's Moodle page.