Skip to content

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

#TitleContent
1.IntroductionIn this lab you will familiarize yourself with the IDE we will use to write Racket programs.
2.Lists & TreesThe main purpose of this lab is to practice elementary recursive manipulation with lists
3.Higher Order FunctionsDeals with higher-order functions like map, filter, foldl.
4.Tree RecursionPractice operations over trees.
5.Streams and graphsIntroduce lazy streams and graphs.
6.InterpretersImplement an interpreter of Brainf*ck.

Lambda Calculus

#TitleContent
7.Lambda CalculusThis lab focuses on lambda calculus.

Haskell

#TitleContent
8.Introduction to HaskellPractice function definitions using pattern matching and guarded equations.
9.Haskell TypesDefine types to represent binary trees and polynomials.
10.Type ClassesHaskell functions can be polymorphic.
11.Functors and IOIntroduces Haskell's IO and the typeclass Functor.
12.Monads in actionFind the shortest path.
13.State MonadThis lab is focused on the state monad State.