CS653: Functional Programming (2010-11 First Semester)

Instructor: Amey Karkare TA: Barnali Basak Timings: Tue, Fri: 10 AM; Wed: 11 AM Classroom: CS 103


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

Moodle Link(Internal to IITK) for the course. All students crediting and auditing the course are requested to register. We will use it for submission of assignments.

Announcements

Grading Policy

Assignments (2) 10%
Quizzes (best 2 out of 3) 10%
One of Project/Term Paper 10%
Midsems (2 x 15%) 30%
Endsem 40%

Topics Covered

Date Topics Remarks
Fri, Nov 19 End semester exam Paper with solutions
Wed, Nov 03 Quiz #3 Solutions
Sun, Oct 31 Translation of List comprehension Translation Notes
Fri, Oct 29 From Haskell to enriched lambda calculus Translation Notes
Wed, Oct 27 From Haskell to enriched lambda calculus Translation Notes
Tue, Oct 26 From Haskell to enriched lambda calculus Translation Notes
Fri, Oct 22 No lecture due to ANTARAGNI
Wed, Oct 20 Unification and Type Inferencing Prof Sanyal's Notes
Tue, Oct 19 Unification Prof Sanyal's Notes
Oct 10 - Oct 17 Midsem Recess No Lectures
Thu, 07 Oct Midsem #2 Solutions
Wed, 06 Oct Type Checking Prof Sanyal's Notes
Tue, 05 Oct Type Checking Prof Sanyal's Notes
Fri, 01 Oct Type Checking Prof Sanyal's Notes
Wed, 29 Sep Quiz #2 Quiz #2 Solutions
Tue, 28 Sep Revision of Monads
Fri, 24 Sep Recursion and Y combinator Two papers explaining Why of Y
Wed, 22 Sep Recursion and Y combinator Two papers explaining Why of Y
Tue, 21 Sep Data structures (list, pair), Useful functions References: 1 , 2 ; An interactive tutorial.
Fri, 17 Sep Church Numerals, Booleans References: 1 , 2 ; An interactive tutorial.
Wed, 15 Sep Lambda Calculus: lambda terms, beta-, eta- conversion, Normal form, Church-Rosser theorem statement, Normal order reduction, normalisation theoerm statement References: 1 , 2 ; An interactive tutorial.
Tue, 14 Sep Lambda Calculus: lambda terms, alpha renaming, beta conversion References: 1 , 2 ; An interactive tutorial.
Fri, 10 Sep Monads and I/O AS notes, Peyton-Jones/Wadler's Papers 1, 2
Wed, 08 Sep Monads and I/O AS notes, Peyton-Jones/Wadler's Papers 1, 2
Tue, 07 Sep Midsem discussions Midsem solutions (some solutions may not be exact)
Mon, 30 Aug First Mid-semester exam No class this week (30th Aug - 3rd Sep)
Fri, 27 Aug I/O and Monads Gentle Introduction, Section 7, 9
Wed, 25 Aug Overloading Examples, I/O in Haskell Gentle Introduction, Section 7
Tue, 24 Aug Overloading in Numeric Classes Gentle Introduction, Section 10
Fri, Aug 20 Type Classes and Overloading Gentle Intoduction Section 5, Type classes in Haskell, How to make ad-hoc polymorphism less ad hoc
Wed, Aug 18 Type Classes and Overloading Gentle Intoduction Section 5, Type classes in Haskell, How to make ad-hoc polymorphism less ad hoc
Tue, Aug 17 Discussion on Quiz #1 and Assignment #1, Type classes recap.
Fri, Aug 13 Quiz #1. Solutions.
Fri, Aug 06 Use of let and where in Expressions, Type Classes. Gentle Intoduction Section 5, Type classes in Haskell, How to make ad-hoc polymorphism less ad hoc
Fri, Aug 09 Lazy Pattern Matching. Section 3.17 of Haskell Report, Section 4.2.7, 4.3.4, 4.3.5 of Implementation book.
Wed, Aug 06 Functions, Currying, Lambda abstractions, Infinite data structures. Finished 3rd section of Gentle Introduction.
Tue, Aug 03 User defined data types, List comprehension (Gentle Introduction).
Fri, July 30 Discussions on Assignment#0; Started Introduction to Haskell using Gentle Introduction. Covered Sect. 1 - 2.3
Wed, July 28 Motivation/Paper reading continued. Read section 3, 4 of "Why Functional Programming Matters".
Tue, July 27 Administrative stuff, Motivation, Reading of "Why Functional Programming Matters". Note: In paper, foldr is referred as reduce

Course Contents

Following is a tentative list of topics to be covered. Depending on the class interest, we can make minor modifications to the contents.

References