<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="https://ocw.cs.pub.ro/ppcarte/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://ocw.cs.pub.ro/ppcarte/feed.php">
        <title>books fp2023</title>
        <description></description>
        <link>https://ocw.cs.pub.ro/ppcarte/</link>
        <image rdf:resource="https://ocw.cs.pub.ro/ppcarte/lib/tpl/bootstrap3/images/favicon.ico" />
       <dc:date>2026-05-21T14:26:10+03:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw1&amp;rev=1680001873&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw2&amp;rev=1713366931&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw3&amp;rev=1682422184&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw4&amp;rev=1683635657&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab01&amp;rev=1677509659&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab02&amp;rev=1710492488&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab03&amp;rev=1678878376&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab04&amp;rev=1679662384&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab05&amp;rev=1680256707&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab06&amp;rev=1681113203&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab07&amp;rev=1682069955&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab08&amp;rev=1682494704&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec02&amp;rev=1678884005&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec03&amp;rev=1678884052&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec04&amp;rev=1679413605&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec05&amp;rev=1680001419&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec06&amp;rev=1680605371&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec07&amp;rev=1681211264&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec08&amp;rev=1682508158&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec09&amp;rev=1683019200&amp;do=diff"/>
                <rdf:li rdf:resource="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:submission-guidelines&amp;rev=1680871789&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://ocw.cs.pub.ro/ppcarte/lib/tpl/bootstrap3/images/favicon.ico">
        <title>books</title>
        <link>https://ocw.cs.pub.ro/ppcarte/</link>
        <url>https://ocw.cs.pub.ro/ppcarte/lib/tpl/bootstrap3/images/favicon.ico</url>
    </image>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw1&amp;rev=1680001873&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-28T14:11:13+03:00</dc:date>
        <title>fp2023:hw1</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw1&amp;rev=1680001873&amp;do=diff</link>
        <description>Homework 1. Sets as functions

Problem statement

Sets are unordered collections of unique elements. There are several ways to store sets. One of them relies on characteristic functions. Such functional sets are especially useful if we expect many insert/retrieve$ A \subseteq U$$ f: U \rightarrow \{0,1\}$$ f(x) = 1$$ x \in A$$ f(x) = 0$$ x \not\in A$$ U$$ \{1,2,3\}$$ x$$ set$$ \{x\} \cup set$$ \{start, start+1, \ldots, stop\}$$ start \leq stop$$  \exists x. P(X) \iff \lnot \forall x.\lnot P(X)$</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw2&amp;rev=1713366931&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-17T18:15:31+03:00</dc:date>
        <title>fp2023:hw2</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw2&amp;rev=1713366931&amp;do=diff</link>
        <description>Homework 2. Sets as trees

In this homework, you will implement a binary search tree, that you will use to gather stats about words from a particular text. Generally, in a  binary search tree:

	*  each non-empty node contains exactly one value and two children
	*  all values from the</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw3&amp;rev=1682422184&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-25T14:29:44+03:00</dc:date>
        <title>fp2023:hw3</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw3&amp;rev=1682422184&amp;do=diff</link>
        <description>Homework 3: 5-in-a-row

In this homework, you will implement some functionality which will allow you to design a completely functional 5-in-a-row AI. The latter will be part of homework 4.

About 5-in-a-row

The game:

	*  an be played on a square board of any size larger or equal to 5.</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw4&amp;rev=1683635657&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-09T15:34:17+03:00</dc:date>
        <title>fp2023:hw4</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:hw4&amp;rev=1683635657&amp;do=diff</link>
        <description>Homework 4. Five in a row AI

Homework 4 consists in developing a complete five-in-a-row game, together with an AI and a very basic interface. 

	*  For this stage, you will decide on the structure of your project, as well as write tests to guide your implementation.</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab01&amp;rev=1677509659&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-27T16:54:19+03:00</dc:date>
        <title>fp2023:lab01</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab01&amp;rev=1677509659&amp;do=diff</link>
        <description>Introduction to Scala

Scala setup

Installation

Scala can be downloaded and installed on either a Windows or NIX platform (e.g. Linux, OS-X) here. For this lecture you must install Scala 3, and we recommend installing it using Coursier (see the previous link)</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab02&amp;rev=1710492488&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-15T10:48:08+03:00</dc:date>
        <title>fp2023:lab02</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab02&amp;rev=1710492488&amp;do=diff</link>
        <description>Lab 2. Scala syntax and function definition

 Objectives: 

	*  get yourself familiar with Scala syntax basics
	*  practice writing tail-recursive functions as an alternative to imperative loops 
	*  keep your code clean and well-structured.

 Create a new Scala worksheet to write your solutions $ n$$ 1 + 2^2 + 3^2 + \ldots + (n-1)^2 + n^2$$ x$$ x_0, x_1, \ldots, x_n$$ ((x - x_0) - x_1) - \ldots x_n$$ x$$ x_0, x_1, \ldots, x_n$$ x_0 - (x_1 - (x_2 - (\ldots - (x_n - x)\ldots )$$ \sqrt{a}$$ x_0 = …</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab03&amp;rev=1678878376&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-15T13:06:16+03:00</dc:date>
        <title>fp2023:lab03</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab03&amp;rev=1678878376&amp;do=diff</link>
        <description>Lab 3. Higher-order functions

Objectives:

	*  implement and use higher-order functions. A higher-order function takes other functions as parameter or returns them
	*  implement curry and uncurry functions, and how they should be properly used (review lecture).$ a_1, a_2, \ldots, a_k$$ f(a_1)\;op\;f(a_2)\;op\;\ldots f(a_k)$$ 1 + 2^2 + 3^2 + \ldots + (n-1)^2 + n^2$$ (f(a) + f(b))(b-a)/2$</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab04&amp;rev=1679662384&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-24T14:53:04+03:00</dc:date>
        <title>fp2023:lab04</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab04&amp;rev=1679662384&amp;do=diff</link>
        <description>Lab 4. Algebraic Datatype definition

Consider the following type defined to represent lists of integers:


trait IList 
case object Void extends IList
case class Cons(x: Int, xs: IList) extends IList


4.1. Implement isEmpty which checks if a list is empty:</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab05&amp;rev=1680256707&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-31T12:58:27+03:00</dc:date>
        <title>fp2023:lab05</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab05&amp;rev=1680256707&amp;do=diff</link>
        <description>Lab 5. Functional vs Object-Oriented decomposition

4.1. The type Nat

Consider the following type defined to represent natural numbers:


trait Nat {
   def isZero: Boolean
   def add(other: Nat): Nat
   def subtract(other: Nat): Nat
   def greater(other: Nat): Boolean
   def toInt: Int
}
case object Zero extends Nat
case class Succ(n: Nat) extends Nat

$ n &gt; m$$ m - n = 0$</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab06&amp;rev=1681113203&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-10T10:53:23+03:00</dc:date>
        <title>fp2023:lab06</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab06&amp;rev=1681113203&amp;do=diff</link>
        <description>Lab 06. List applications

In this lab, we will use lists to implement a lot of string processing. The type String is not decomposable as a list, but strings can be converted to lists of Char as follows:


&quot;Some string&quot;.toList


For this reason, we will use the following aliases:</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab07&amp;rev=1682069955&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-21T12:39:15+03:00</dc:date>
        <title>fp2023:lab07</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab07&amp;rev=1682069955&amp;do=diff</link>
        <description>Lab 07: Matrices

7.1.

In the first part of this lab, we will work with matrices of integers:


type Matrix = List[List[Int]]


You can use higher-order functions of for expressions at your leisure.

7.1.1. Write a function which computes the sum of all elements from a matrix.</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab08&amp;rev=1682494704&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-26T10:38:24+03:00</dc:date>
        <title>fp2023:lab08</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lab08&amp;rev=1682494704&amp;do=diff</link>
        <description>Lab 08: Polymorphism

8.1. Companion objects and Option

Consider the following implementation of the type Nat, which you are well-familiar with:


trait Nat {
   def +(other: Nat): Nat
}
case object Zero extends Nat{
   override def +(other: Nat): Nat = other
}
case class Succ(n: Nat) extends Nat{
   override def +(other: Nat): Nat = Succ(n + other)
}</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec02&amp;rev=1678884005&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-15T14:40:05+03:00</dc:date>
        <title>fp2023:lec02</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec02&amp;rev=1678884005&amp;do=diff</link>
        <description>Lecture 2: Recursive functions


&quot;Hello world&quot;

// in Scala (FP in general)
// fiecare bucata de cod este
// O EXPRESIE si ea se evalueaza
// la ceva TOT TIMPUL.

var x = 0
if (x &gt; 0) 1 else 0

// efecte laterale (side effects)
// calculam suma tuturor numerelor de la 0 la 10
var sum = 0
for (i &lt;- 0 to 10)
  sum += i
sum
// functie recursiva
def sumTo(start: Int, stop: Int): Int =
  if (start &gt; stop) 0
  else start + sumTo(start+1,stop)
sumTo(0,10)

def tail_sumTo(start: Int, stop: Int): Int = {…</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec03&amp;rev=1678884052&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-15T14:40:52+03:00</dc:date>
        <title>fp2023:lec03</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec03&amp;rev=1678884052&amp;do=diff</link>
        <description>Lecture 03. Higher-order functions


/*
def sumAll(start: Int, stop: Int): Int = {
  def loop (i: Int, acc: Int): Int =
    if (i &gt; stop) acc
    else loop(i+1, i + acc)
  loop(start,0)
}

def sumSquares(start: Int, stop: Int): Int = {
  def loop (i: Int, acc: Int): Int =
    if (i &gt; stop) acc
    else loop(i+1, i*i + acc)
  loop(start,0)
}*/

def sumWithF(f: Int =&gt; Int, start:Int, stop:Int): Int = {
  def loop (i: Int, acc: Int): Int =
    if (i &gt; stop) acc
    else loop(i+1, f(i) + acc)
  loop…</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec04&amp;rev=1679413605&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-21T17:46:45+03:00</dc:date>
        <title>fp2023:lec04</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec04&amp;rev=1679413605&amp;do=diff</link>
        <description>Lecture 4. Algebraic datatypes in Scala


/*
Scala este orientat obiect - totul este un obiect
Stilul functional de a reprezenta date


Definitia TDA-ului:

Void : List
Cons : E x List -&gt; List

 */

trait IList //trait este ca interface (din Java)
case object Void extends IList
case class Cons(x: Int, xs: IList) extends IList

/*
  Diferentele intre &quot;case class&quot; si &quot;class&quot; in Scala:
   1. un case class, are un SINGUR constructor
   2. parametrii constructorului unui case class sunt IMUTABILI
   …</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec05&amp;rev=1680001419&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-28T14:03:39+03:00</dc:date>
        <title>fp2023:lec05</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec05&amp;rev=1680001419&amp;do=diff</link>
        <description>Lecture 5. Functional vs OO decomposition



/*
Functional implementation
Functional decomposition (patterns)
*/
/*
trait Nat

case object Zero extends Nat
case class Succ(n: Nat) extends Nat
case object Infty extends Nat

def isZero(n: Nat): Boolean =
  n match {
    case Zero =&gt; true
    case _ =&gt; false
  }

def add(n: Nat, m: Nat): Nat =
  n match {
    case Zero =&gt; m
    case Succ(np) =&gt; Succ(add(np,m))
    case Infty =&gt; n
  }

def equals(n: Nat, m: Nat): Boolean =
  (n,m) match {
    case (…</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec06&amp;rev=1680605371&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-04T13:49:31+03:00</dc:date>
        <title>fp2023:lec06</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec06&amp;rev=1680605371&amp;do=diff</link>
        <description>Lecture 6. List applications


/*
Topic 1. Liste (din Scala).
 */

val l = List(1,2,3)
//Cons(1,Cons(2,Cons(3,Void)))

1 :: 2 :: 3 :: Nil

List(1,2,3) match {
  case Nil =&gt; 0
  case x :: y :: Nil =&gt; 2
  case x :: y :: _ =&gt; 3
  case x :: xs =&gt; 1
}
// listele sunt orientate obiect
l.head // 1
l.tail //

l.map(_*2) // transformare per element
l.foldRight(0)(_ + _)
// 1 + (2 + (3 + acc)))

l.foldLeft(Nil:List[Int])((acc,x) =&gt; x :: acc)
// (acc op 1) op 2) op 3

val lp = List((1,2), (3,1), (4,4))

lp…</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec07&amp;rev=1681211264&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-11T14:07:44+03:00</dc:date>
        <title>fp2023:lec07</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec07&amp;rev=1681211264&amp;do=diff</link>
        <description>Lecture 07. For expressions and matrices


val m = List(List(1,2,3), List(4,5,6), List(7,8,9))

type Matrix = List[List[Int]]
type Str = List[Char]

val s: String = &quot;1,2,3\n4,5,6\n7,8,9\n&quot;

// &quot;111,2,0&quot;
// List( '1', '1', '1', ',', '2', ',', '0')

def split(delim: Char)(s: Str): List[Str] =
  s.foldRight(Nil:List[Str])((x,acc) =&gt;
    acc match {
      case l :: ls =&gt; if (delim != x) (x :: l) :: ls else Nil :: acc
      case Nil =&gt; if (delim != x) (x::Nil)::Nil else Nil
    }
  )

split('\n')(s.t…</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec08&amp;rev=1682508158&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-26T14:22:38+03:00</dc:date>
        <title>fp2023:lec08</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec08&amp;rev=1682508158&amp;do=diff</link>
        <description>Lecture 08: Polymorphism


/*
  Tipuri de polimorfism


 */
// Overloading (in limbaje OO si Imperative in general)
// supraincarcare

// (1) Mai general, polimorfism ad-hoc

def toString(x: Int): String = ??? // impl 1
def toString(c: Char): String = ??? // impl 2

// Avem &quot;un nume&quot;, &quot;mai multe tipuri&quot;, &quot;mai multe implementari&quot;


class Animal {
  def sing: String = &quot;La la la&quot;
}
class Cat extends Animal{
  override def sing: String = &quot;Miau&quot;
}

def toString(a: Animal): String = ??? // impl 3
def …</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec09&amp;rev=1683019200&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-02T12:20:00+03:00</dc:date>
        <title>fp2023:lec09</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:lec09&amp;rev=1683019200&amp;do=diff</link>
        <description>Lecture 09. Polymorphic expressions


trait Expr[A] {
  // reminiscent of factory methods
  def +(other: Expr[A]): Expr[A] = Plus(this, other)
  def *(other: Expr[A]): Expr[A] = Mult(this, other)
}

case class Plus[A](left: Expr[A], right: Expr[A]) extends Expr[A]
case class Mult[A](left: Expr[A], right: Expr[A]) extends Expr[A]
case class Atom[A](v: A) extends Expr[A]
case class Var[A](s: String) extends Expr[A]

/*
 we need to implement a new type objects, which tells us how we should
 interpr…</description>
    </item>
    <item rdf:about="https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:submission-guidelines&amp;rev=1680871789&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-07T15:49:49+03:00</dc:date>
        <title>fp2023:submission-guidelines</title>
        <link>https://ocw.cs.pub.ro/ppcarte/doku.php?id=fp2023:submission-guidelines&amp;rev=1680871789&amp;do=diff</link>
        <description>Submission guidelines

Project format

	*  You should not change any other files of the project, except for the template-file and the test-file. For the second homework, the template-file is Main.scala, and the test-file is WTreeTest.scala. 
	*  You may change</description>
    </item>
</rdf:RDF>
