<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://cw.fel.cvut.cz/b222/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://cw.fel.cvut.cz/b222/feed.php">
        <title>CourseWare Wiki courses:fup:tutorials</title>
        <description></description>
        <link>https://cw.fel.cvut.cz/b222/</link>
        <image rdf:resource="https://cw.fel.cvut.cz/b222/lib/tpl/bulma-cw/images/favicon.ico" />
       <dc:date>2026-04-20T11:54:53+0200</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_1_-_introduction_to_scheme?rev=1677511033&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_2_-_lists?rev=1678026991&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_3_-_higher-order_functions?rev=1678806833&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_4_-_higher-order_functions_and_tree_recursion?rev=1678532101&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_5_-_streams_and_graphs?rev=1679231932&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_6_-_interpreter_of_brainf_ck?rev=1680021586&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_7_-_lambda_calculus?rev=1680251043&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_8_-_haskell_basics?rev=1681652059&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_9_-_haskell_types?rev=1682608377&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_10_-_polymorphic_functions?rev=1682674911&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_11_-_functors_and_io?rev=1682608652&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_12_-_monads_in_action?rev=1684215759&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_13_-_state_monad?rev=1684216174&amp;do=diff"/>
                <rdf:li rdf:resource="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/start?rev=1682608834&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://cw.fel.cvut.cz/b222/lib/tpl/bulma-cw/images/favicon.ico">
        <title>CourseWare Wiki</title>
        <link>https://cw.fel.cvut.cz/b222/</link>
        <url>https://cw.fel.cvut.cz/b222/lib/tpl/bulma-cw/images/favicon.ico</url>
    </image>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_1_-_introduction_to_scheme?rev=1677511033&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-27T16:17:13+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_1_-_introduction_to_scheme</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_1_-_introduction_to_scheme?rev=1677511033&amp;do=diff</link>
        <description>Lab 1: Introduction to Racket

This lab aims to familiarize the students with the IDE we will use for Racket and help them write simple programs.

Dr. Racket IDE

The IDE can be downloaded for free for Linux, Windows, and MAC from:
&lt;https://racket-lang.org/&gt;

The students can use the one installed in the lab computers. The teacher may help the students (to a reasonable degree) to get the IDE running on students’ laptops.</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_2_-_lists?rev=1678026991&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-05T15:36:31+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_2_-_lists</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_2_-_lists?rev=1678026991&amp;do=diff</link>
        <description>Lab 2: Lists

The main purpose is to practice elementary recursive manipulation with lists. Lists can be decomposed by functions car and cdr. On the other hand, lists can be built by functions cons, list or append. Also, higher-order functions filter</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_3_-_higher-order_functions?rev=1678806833&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-14T16:13:53+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_3_-_higher-order_functions</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_3_-_higher-order_functions?rev=1678806833&amp;do=diff</link>
        <description>Lab 3: Higher-order functions

Exercise 1: Implement a function (mult-all-pairs lst1 lst2) taking two lists and returning a list of all possible binary products between elements from lst1 and elements from lst2. Mathematically, it could be written by a comprehension term as $ax^n$$2-3x+x^2$$p_1(x)=1+x$$p_2(x)=-1+x+3x^2$$ax^n + bx^n = (a+b)x^n$$(ax^n)(bx^k)=abx^{n+k}$$p_1(x)=a_0+a_1x$$p_2(x)=b_0+b_1x+b_2x^2$$p_1(x) + p_2(x) = ((p_1(x) + b_0) + b_1x) + b_2x^2$$p_1(x)p_2(x) = (((a_0b_0 + a_0b_1x) +…</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_4_-_higher-order_functions_and_tree_recursion?rev=1678532101&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-11T11:55:01+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_4_-_higher-order_functions_and_tree_recursion</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_4_-_higher-order_functions_and_tree_recursion?rev=1678532101&amp;do=diff</link>
        <description>Lab 4: Higher-order functions and tree recursion

Exercise 1: Write a function (permutations lst) taking a list lst and returning all its permutations. E.g., (permutations '(1 2 3)) =&gt; ((1 2 3) (2 1 3) (2 3 1) (1 3 2) (3 1 2) (3 2 1)). 

Hint: Suppose that we have all permutations of a list of length $n$$n$$\{0,1\}^n$$\{0,1\}$$f(x_1,\ldots,x_n)$$x_i$$i$$x_i$$\{0,1\}$$x_i$$x_i$$0$$1$$f(x_1,\ldots,x_n)$$f(x_1,\ldots,x_n)$$x_1,\ldots,x_n$$f(x_1,\ldots,x_n)$$f(x_1,\ldots,x_n)$$f(x_1,\ldots,x_n)=1$$x…</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_5_-_streams_and_graphs?rev=1679231932&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-19T14:18:52+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_5_-_streams_and_graphs</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_5_-_streams_and_graphs?rev=1679231932&amp;do=diff</link>
        <description>Lab 5: Streams and graphs

Exercise 1: Define a function (stream-add s1 s2) adding two infinite streams together component-wise. For instance,


  0 1 2 3 4 5 6 ....
+ 1 1 1 1 1 1 1 ....
--------------------
  1 2 3 4 5 6 7 ....


Using stream-add, define the infinite stream $F(0)=0$$F(1)=1$$F(n)=F(n-1) + F(n-2)$$n&gt;1$$G=(V,E)$$V$$E\subseteq\{\{u,v\}\mid u,v\in V, u\neq v\}$$\{u,v\}$$G$$G$$0!, 1!, 2!, 3!,\ldots$$f(0)=1$$f(n)=n\cdot f(n-1)$$n&gt;0$$e^x$$e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} +…</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_6_-_interpreter_of_brainf_ck?rev=1680021586&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-28T18:39:46+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_6_-_interpreter_of_brainf_ck</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_6_-_interpreter_of_brainf_ck?rev=1680021586&amp;do=diff</link>
        <description>Lab 6: Interpreter of Brainf*ck

This lab is closely related to the corresponding lecture. In that lecture, I showed how to implement an interpreter of a simple programming language Brainf*ck (for details, see wikipedia). The syntax of Brainf*ck is very simple. It is just a sequence of
eight possible characters:</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_7_-_lambda_calculus?rev=1680251043&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-31T10:24:03+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_7_-_lambda_calculus</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_7_-_lambda_calculus?rev=1680251043&amp;do=diff</link>
        <description>Lab 7: Lambda calculus

This lab focuses on lambda calculus. First, we focus on the syntax of $\lambda$-expressions. Second, we focus on its semantics, i.e., the computation specified by $\lambda$-expressions whose one step is performed by the $\beta$-reduction (and $\alpha$-conversion if necessary). To help you to play with these notions and concepts, I implemented in Racket an interpreter of $\lambda$$\lambda$$\lambda$$\lambda$$\lambda$$\lambda xy.xy(\lambda ab.b)$$\lambda xy.$$\lambda x.(\lam…</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_8_-_haskell_basics?rev=1681652059&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-16T15:34:19+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_8_-_haskell_basics</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_8_-_haskell_basics?rev=1681652059&amp;do=diff</link>
        <description>Lab 8: Haskell basics

The aim of the lab is to practice function definitions using pattern matching and guarded equations together with the list comprehension. 

Exercise 1: Write a function separate :: [Int] -&gt; ([Int], [Int]) taking a list and returning a pair of lists. The first
containing elements on indexes 0,2,4,</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_9_-_haskell_types?rev=1682608377&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-27T17:12:57+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_9_-_haskell_types</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_9_-_haskell_types?rev=1682608377&amp;do=diff</link>
        <description>Lab 9: Haskell types

Exercise 1: Define a type representing binary trees storing data in leaves of a general type a. Each non-leaf node has always two children. Make your type an instance of the class Show so it can be displayed in an XML-like format. A leaf node containing a datum $treeDepth(t) = 1$$t$$treeDepth(t)=1+\max(treeDepth(left),treeDepth(right))$$t$$left$$right$$x$$cx^e$$-1$</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_10_-_polymorphic_functions?rev=1682674911&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-28T11:41:51+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_10_-_polymorphic_functions</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_10_-_polymorphic_functions?rev=1682674911&amp;do=diff</link>
        <description>Lab 10: Polymorphic functions

Exercise 1: Haskell functions can be polymorphic if we use type variables in their definitions. Write a function 


permutations :: [a] -&gt; [[a]]


taking a list of elements of type a and returning a list of all its permutations.$a+b\epsilon$$a,b\in\mathbb{R}$$\epsilon$$i$$i^2=-1$$\epsilon^2=0$$\mathbb{R}[\epsilon]$$\epsilon^2$$\mathbb{R}[\epsilon]/\langle\epsilon^2\rangle$$(a+b\epsilon)+(c+d\epsilon)=(a+c) + (b+d)\epsilon$$(a+b\epsilon)(c+d\epsilon)=ac+(ad+bc)\epsi…</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_11_-_functors_and_io?rev=1682608652&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-27T17:17:32+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_11_-_functors_and_io</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_11_-_functors_and_io?rev=1682608652&amp;do=diff</link>
        <description>Lab 11: Functors and IO

Exercise 1: This is a warm-up exercise. Write a function converting a string into a CamelCase format. It takes a string, splits particular words separated by whitespace characters, changes the first letter of each word to uppercase, and joins all the words into a single string. E.g. $\langle Q,\Sigma,\delta,init,F\rangle$$Q$$\Sigma$$\delta\colon Q\times\Sigma\to Q$$init\in Q$$F\subseteq Q$$123.00$$0.12$$3476.25$$\delta$$\delta\colon Q\times\Sigma\to Q$$\Sigma$$\Sigma=$$\…</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_12_-_monads_in_action?rev=1684215759&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-16T07:42:39+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_12_-_monads_in_action</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_12_-_monads_in_action?rev=1684215759&amp;do=diff</link>
        <description>Lab 12: Monads in action

This lab will illustrate a complete Haskell program searching for the shortest path in a maze. We will see Maybe and IO monads in action.
It will be split into two parts. The first part deals with the breadth-first search and the second with parsing the file containing a maze.
Short fragments of code are left for you to fill.</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_13_-_state_monad?rev=1684216174&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-16T07:49:34+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:lab_13_-_state_monad</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/lab_13_-_state_monad?rev=1684216174&amp;do=diff</link>
        <description>Lab 13: State Monad

This lab is focused on the state monad State. In the lecture, I show you how it is implemented. In this lab, we are going to use the implementation from the lecture State.hs. So include the following lines in your source file:



import Control.Monad
import State
import System.Random
import Data.List

$(x,y)$$f\colon\mathbb{R}\to\mathbb{R}$$(a,b)$$\int_a^b f(x)\mathrm{d}x$$f(x)\geq 0$$x\in (a,b)$$u$$f$$(a,b)$$f$$(a,b)\times(0,u)$$f$$\frac{k}{n}(b-a)u$$k$$f$$n$$f$$(a,b)$$u$$n…</description>
    </item>
    <item rdf:about="https://cw.fel.cvut.cz/b222/courses/fup/tutorials/start?rev=1682608834&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-27T17:20:34+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>courses:fup:tutorials:start</title>
        <link>https://cw.fel.cvut.cz/b222/courses/fup/tutorials/start?rev=1682608834&amp;do=diff</link>
        <description>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.</description>
    </item>
</rdf:RDF>
