[Announcements] | [General Information] | [Additional Material] | [Schedule] |

- [18/5]: For the final exam, you are authorized to bring with you one page (A4) of hand-written notes (as in previous years).
- [29/4]: The midterm grades can be found here.
- [16/01]: First class. Welcome! TD/TP sessions begin in the week of 22/1.

Instructor: Michail Lampis

Email: michail.lampis AT dauphine.fr

As the name suggests, the topic of this course is the paradigm of Functional Programming, for which we will use the programming language Haskell. Functional programming is a style of programming where functions are first-class citizens that has many applications in modern computing (especially machine learning). We will work on Haskell because it is one of the purest languages in this paradigm (although FP ideas appear in most modern programming languages, such as Java, Python, etc.).

More information on the topics to be covered appears in the schedule below (which will be updated during the semester).

The course consists of 1.5 hours of weekly lectures, followed by 1.5 hours
of TD,~~ and 1.5 hours of TP~~ **TP sessions have been
canceled**. Students are partitioned into three groups for the
TD/TP. For the TD/TP click here.

**Grading:** Your final grade is the maximum of (a) your grade
in the final exam; or (b) the result of the formula
0.7E+0.3P, where E is your grade in the final exam and P
is
your grade in the midterm exam (partiel, during the week of 18/3).

- A recommended textbook is Programming in Haskell by G. Hutton.
- You can also check out the
**FREE**wikibook here - Another good (and
**FREE**!) textbook is Learn you a Haskell for Great Good! which is also vailable in French here. - If you prefer textbooks in French, you can also try La programmation Fonctionnelle by J. Dehos.
- An excellent textbook with a more algorithmic flavor is Algorithm Design with Haskell.

Here you will find a tentative schedule (updated regularly throughout the semester) and the slides we will use in class.

Lecture No. | Date | Topic | Notes and code |
---|---|---|---|

1 | 16/1 | Introduction | slides |

2 | 23/1 | Types | slides |

3 | 30/1 | More types - Currying | |

4 | 6/2 | List Operations | slides |

5 | 13/2 | Map, Fold, and higher-order operations | |

6 | 27/2 | Foldl and Foldr continued. Data types. | slides |

7 | 5/3 | Defining Data Types | |

8 | 12/3 | Functors | slides |

9 | 26/3 | Applicatives | slides |

10 | 2/4 | Monads | slides |

11 | 23/4 | IO Monad | slides |

12 | 30/4 | Dynamic Programming | slides |

13 | 7/5 |