| 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.
| Assignments (2) | 10% |
|---|---|
| Quizzes (best 2 out of 3) | 10% |
| One of Project/Term Paper | 10% |
| Midsems (2 x 15%) | 30% |
| Endsem | 40% |
| 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
|