Labs
The labs usually consist of two parts. In the first part, the teacher introduces new concepts from the last lecture and shows students how to use them. In the second part, students are given tasks that they try to solve individually.
The solutions to the given tasks will be available after the last lecture of the week.
Racket
# | Title | Content |
---|---|---|
1. | Introduction | In this lab you will familiarize yourself with the IDE we will use to write Racket programs. |
2. | Lists & Trees | The main purpose of this lab is to practice elementary recursive manipulation with lists |
3. | Higher Order Functions | Deals with higher-order functions like map , filter , foldl . |
4. | Tree Recursion | Practice operations over trees. |
5. | Streams and graphs | Introduce lazy streams and graphs. |
6. | Interpreters | Implement an interpreter of Brainf*ck. |
Lambda Calculus
# | Title | Content |
---|---|---|
7. | Lambda Calculus | This lab focuses on lambda calculus. |
Haskell
# | Title | Content |
---|---|---|
8. | Introduction to Haskell | Practice function definitions using pattern matching and guarded equations. |
9. | Haskell Types | Define types to represent binary trees and polynomials. |
10. | Type Classes | Haskell functions can be polymorphic. |
11. | Functors and IO | Introduces Haskell's IO and the typeclass Functor . |
12. | Monads in action | Find the shortest path. |
13. | State Monad | This lab is focused on the state monad State . |