Instructors:
M Praveeen: Object oriented programming, exception handling, event driven programming, concurrent programming
Madhavan Mukund: λ-calculus, type inference, logic programming
λ-Calculus
Logic Programming
λ-Calculus, Lecture 1, 6 March 2017
λ-calculus: syntax, β reduction, Church numerals
λ-Calculus, Lecture 2, 10 March 2017
Church numerals, encoding arithmetic functions
Encoding Gödel's recursive functions: basic
functions, composition, primitive recursion
λ-Calculus, Lecture 3, 13 March 2017
Encoding recursive functions: minimalization,
booleans, recursive definitions
Normal forms, Church-Rosser property
λ-Calculus, Lecture 4, 17 March 2017
Normal forms, reduction strategies, fixed point combinators, semantics for terms without normal forms
λ-Calculus, Lecture 5, 20 March 2017
Types: simply typed λ-calculus, strong normalization, type checking, principal types, System F
λ-Calculus, Lecture 6, 27 March 2017
Types: System F: type inference rules, deep and shallow typing, unification algorithm
λ-Calculus, Lecture 7, 31 March 2017
Type inference: shallow type inference via unification, local function definitions and generic types
Logic Programming, Lecture 1, 3 April 2017
Prolog: programming with relations, rules, matching, backtracking, arithmetic
Logic Programming, Lecture 2, 7 April 2017
Prolog: accumulators, circular definitions, controlling backtracking with cut, control structures, difference lists