[Announcements] | [General Information] | [Additional Material] | [Schedule] |
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).
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 |