CS653: Functional Programming (2017-18 IInd Semester)

This course aims to teach design and implementation of Functional Programming Languages. I will use Haskell as the programming language.

Code of Ethics

Any report/program/assignment you submit must clearly distinguish your contribution from others (webpages, softwares, report, discussions with other students). The penalty for copying in any form will be severe.


Important: All emails' subject line should begin with "[CS653]". Email not complying to this rule will NOT be entertained.

Topics Covered and Slides

# Description (# of Lectures) Slides References
1. Introduction & Motivation (1) [slides] [Why FP Matters]
2. Motivation (1) [slides]
3. Introduction to Haskell (7) [slides]
4. + Functions and List Comprehension [slides]
5. + Data types, Pattern matching [slides] [Gentle Intro]
6. + Type Classes and Overloading [slides] [Paper-1][Paper-2]
7. + Numeric Class Hierarchy [slides]
8. + Monads [slides] [Paper-1] [Paper-2]
9. + IO, Modules [slides]
10. Lambda Calculus (2) [slides]
11. + Church Numerals, Y combinator [slides]
12. Type Checking [slides]
13. Type Checking, Unification [slides]
14. Type Inferencing [slides]
15. Enriched Lambda Calculus [slides]
16. Haskell to Enriched Lambda Calculus [slides]
17. Towards Compilation - Graph Reduction [slides]
18. Supercombinators, Lambda Lifting [slides]
19. G-Machine [slides]
20. G-Machine [slides]


There will be short assignments to give you a chance to apply the lecture material. Assignments will have some programming tasks.

Course Project

Evaluation Scheme


Assignments 10%
Quizzes 10%
Mid semester exam 25%
End semester exam 40%
Course Project 15%



Haskell Tutorials and Resources


Papers and Other Resources

Lambda Calculus

Type classes


Prof Amitabha Sanyal's Notes on

Papers about Y combinator.

Both the papers use Scheme syntax to explain Y.

Take me to the Top

powered by Pandoc

Last Modified at : Tue Apr 17 10:37:25 IST 2018