<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://lara.epfl.ch/w/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://lara.epfl.ch/w/feed.php">
        <title>LARA: Laboratory for Automated Reasoning and Analysis cc16</title>
        <description></description>
        <link>https://lara.epfl.ch/w/</link>
        <image rdf:resource="https://lara.epfl.ch/w/lib/tpl/epflv2/images/favicon.ico" />
       <dc:date>2026-04-05T21:34:44+0200</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/labs_01?rev=1474557836&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/labs_02?rev=1474897259&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/labs_03?rev=1476264031&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/labs_04?rev=1477469149&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/labs_05?rev=1480462568&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/labs_06?rev=1480495013&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/labs_07?rev=1481104991&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/labs_setup?rev=1474384995&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/tool?rev=1477405550&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/tool_compiler_project?rev=1473770226&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/tool_reference_compiler?rev=1474363734&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/toolprog-binarysearch.tool?rev=1474394349&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/toolprog-factorial.tool?rev=1474394250&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/toolprog-maze.tool?rev=1474394292&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/toolprog-pi.tool?rev=1474394383&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/toolprog-quicksort.tool?rev=1474394418&amp;do=diff"/>
                <rdf:li rdf:resource="https://lara.epfl.ch/w/cc16/top?rev=1507559480&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://lara.epfl.ch/w/lib/tpl/epflv2/images/favicon.ico">
        <title>LARA: Laboratory for Automated Reasoning and Analysis</title>
        <link>https://lara.epfl.ch/w/</link>
        <url>https://lara.epfl.ch/w/lib/tpl/epflv2/images/favicon.ico</url>
    </image>
    <item rdf:about="https://lara.epfl.ch/w/cc16/labs_01?rev=1474557836&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-09-22T17:23:56+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:labs_01</title>
        <link>https://lara.epfl.ch/w/cc16/labs_01?rev=1474557836&amp;do=diff</link>
        <description>Part 0: Lab Setup

Start by setting up your environment as described. Familiarize yourself with the Tool Programming Language and the Tool Compiler Project.

Part 1: Your first Tool programs

Write two example Tool programs each and make sure you can compile them using the Tool Reference Compiler. Please be creative when writing your programs. We don't need 5 versions of a program computing the Fibonacci sequence. The examples at the end of the</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/labs_02?rev=1474897259&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-09-26T15:40:59+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:labs_02</title>
        <link>https://lara.epfl.ch/w/cc16/labs_02?rev=1474897259&amp;do=diff</link>
        <description>Labs 02: Lexer for Tool

This assignment is the first real part of the Tool compiler project. Make sure you have read the general project overview page first.

Code Stubs

Caution: We are no longer going to use the parser+trees given in lib/toolc-frontend_2.11-3.0.jar. This commit removes this file.</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/labs_03?rev=1476264031&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-10-12T11:20:31+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:labs_03</title>
        <link>https://lara.epfl.ch/w/cc16/labs_03?rev=1476264031&amp;do=diff</link>
        <description>Labs 03: Parser

Introduction

This week you will work on the second stage of the tool compiler, the parser. The task of the parser is to take a sequence of tokens produced by the lexer and transform them into an Abstract Syntax Tree (AST) of Tool.</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/labs_04?rev=1477469149&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-10-26T10:05:49+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:labs_04</title>
        <link>https://lara.epfl.ch/w/cc16/labs_04?rev=1477469149&amp;do=diff</link>
        <description>Labs 04: Name Analysis

This week you will add name analysis to your Tool compiler. This will considerably ease the task of type checking that you will start next week or the week after.

The description of this assignment is rather long. Don't panic :) Most of it is to help you avoid forgetting important points. Please read it carefully. The assignment itself is one of the longer ones, but you have three weeks to work on it, and we give you a substantial amount of code.</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/labs_05?rev=1480462568&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-11-30T00:36:08+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:labs_05</title>
        <link>https://lara.epfl.ch/w/cc16/labs_05?rev=1480462568&amp;do=diff</link>
        <description>Labs 05

This week you will implement type checking in your Tool compiler. After this step, you will have completed the front-end of your compiler. This means that it will be able to reject all invalid programs, and accept all valid programs. You will then be able to turn these valid inputs into assembly code that runs on the JVM, just like</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/labs_06?rev=1480495013&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-11-30T09:36:53+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:labs_06</title>
        <link>https://lara.epfl.ch/w/cc16/labs_06?rev=1480495013&amp;do=diff</link>
        <description>Labs 06: Code Generation

Congratulations, your front-end is complete! You are now one step away from completing your compiler. The last step of the compiler is to generate binary code for the Java Virtual Machine. This week's lab description is short, but</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/labs_07?rev=1481104991&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-12-07T11:03:11+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:labs_07</title>
        <link>https://lara.epfl.ch/w/cc16/labs_07?rev=1481104991&amp;do=diff</link>
        <description>Labs 07: Mini Project

This project has several deadlines to ensure that the project extension you pick is reasonable. Please read below.

You have now written a compiler for a simple language. The final mini-project is to design an implement a new functionality of your own choice. Typically you will extend the compiler you built so far with a new feature. In preparation for this, you should aim to learn about the problem domain by searching the appropriate literature. The mini project includes:</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/labs_setup?rev=1474384995&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-09-20T17:23:15+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:labs_setup</title>
        <link>https://lara.epfl.ch/w/cc16/labs_setup?rev=1474384995&amp;do=diff</link>
        <description>Labs Setup

This page contains instructions on how to set up your computer such that you can:

	*  program your assignments,
	*  make sure you keep track of your work with a version control system,
	*  submit your labs for grading, and
	*  use our black-box testing system.</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/tool?rev=1477405550&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-10-25T16:25:50+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:tool</title>
        <link>https://lara.epfl.ch/w/cc16/tool?rev=1477405550&amp;do=diff</link>
        <description>Tool Resource Page

Tool stands for Toy Object-Oriented Language, and it is the programming language for which you will write a compiler in this course.

Some basic information for Tool:

	*  Tool is object oriented. It supports classes with inheritance and method overriding (but not overloading).</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/tool_compiler_project?rev=1473770226&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-09-13T14:37:06+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:tool_compiler_project</title>
        <link>https://lara.epfl.ch/w/cc16/tool_compiler_project?rev=1473770226&amp;do=diff</link>
        <description>The Tool Compiler Project

The main project in this course consists in implementing toolc, a compiler for a small, Java-like, object-oriented progamming language, which we call Tool. You will code all phases of a modern compiler, resulting in an implementation which will allow you to compile source files into Java Bytecode, in the same way</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/tool_reference_compiler?rev=1474363734&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-09-20T11:28:54+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:tool_reference_compiler</title>
        <link>https://lara.epfl.ch/w/cc16/tool_reference_compiler?rev=1474363734&amp;do=diff</link>
        <description>The Tool Reference Compiler

The latest version available is 3.0. You can obtain it from here: toolc-reference-3.0.jar.

You can run it as follows:
java -jar toolc-reference-3.0.jar program.tool
Available Options

By default, toolc just compiles a Tool program to bytecode like your implementation will. You can however also use the reference implementation for other things. Try to run</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/toolprog-binarysearch.tool?rev=1474394349&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-09-20T19:59:09+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:toolprog-binarysearch.tool</title>
        <link>https://lara.epfl.ch/w/cc16/toolprog-binarysearch.tool?rev=1474394349&amp;do=diff</link>
        <description>program BinarySearch {
    println(new BS().Start(20));
}

// This class contains an array of integers and
// methods to initialize, print and search the array
// using Binary Search
class BS {
    var number : Int[];
    var size : Int;

    // Invoke methods to initialize, print and search
    // for elements on the array
    def Start(sz : Int) : Int = {
        do(this.Init(sz));
        do(this.Print());

        if (this.Search(8))
            println(1);
        else
            println(0…</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/toolprog-factorial.tool?rev=1474394250&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-09-20T19:57:30+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:toolprog-factorial.tool</title>
        <link>https://lara.epfl.ch/w/cc16/toolprog-factorial.tool?rev=1474394250&amp;do=diff</link>
        <description>program Factorial {
    println(new Fact().computeFactorial(10));        
}

class Fact {
    def computeFactorial(num : Int) : Int = {
        var num_aux : Int;
        if (num &lt; 1)
            num_aux = 1;
        else
            num_aux = num * (this.computeFactorial(num - 1));
        return num_aux;
    }
}</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/toolprog-maze.tool?rev=1474394292&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-09-20T19:58:12+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:toolprog-maze.tool</title>
        <link>https://lara.epfl.ch/w/cc16/toolprog-maze.tool?rev=1474394292&amp;do=diff</link>
        <description>program Maze {
    /* prints a maze of size 20x20 */
    println(new MazeArray().init(20).printMaze());
}

class MazeArray {
  var size : Int;
  var prng : PseudoRandomNumberGenerator;
  var walls : Int[];
  var wallCount : Int;
  var vertOffset : Int;
  var wallIDs : Int[];
  var cells : Int[];
  var cellCount : Int;
  
  var pipeChar : String;
  var horzChar : String;
  var plusChar : String;
  var t1Char : String;
  var t2Char : String;
  var t3Char : String;
  var t4Char : String;
  var l1Ch…</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/toolprog-pi.tool?rev=1474394383&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-09-20T19:59:43+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:toolprog-pi.tool</title>
        <link>https://lara.epfl.ch/w/cc16/toolprog-pi.tool?rev=1474394383&amp;do=diff</link>
        <description>program Pi {
    if(new Computer().computePi()) {
        println(&quot;Ok&quot;);
    } else {
        println(&quot;error&quot;);
    }
}

class Computer {
    def computePi() : Bool = {
        var j : Int;
        var value : Frac;
        var inter : Real;

        println(&quot;First method&quot;);
        println(&quot;************&quot;);

        value = new Frac().init(0,1);
        j = 0;
        while(j &lt; 3) {
            println(value.toString() + &quot; ~= &quot; + new Real().init(0,10).evalFrac(value).toString());
            val…</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/toolprog-quicksort.tool?rev=1474394418&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-09-20T20:00:18+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:toolprog-quicksort.tool</title>
        <link>https://lara.epfl.ch/w/cc16/toolprog-quicksort.tool?rev=1474394418&amp;do=diff</link>
        <description>program QuickSort {
    println(new QS().Start(10));
}

// This class contains the array of integers and
// methods to initialize, print and sort the array
// using Quicksort
class QS {
    var number : Int[];
    var size : Int;

    // Invoke the Initialization, Sort and Printing
    // Methods
    def Start(sz : Int) : Int = {
        do(this.Init(sz));
        do(this.Print());
        println(9999);
        do(this.Sort(0,size - 1));
        do(this.Print());
        return 9999;
    }

   …</description>
    </item>
    <item rdf:about="https://lara.epfl.ch/w/cc16/top?rev=1507559480&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2017-10-09T16:31:20+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cc16:top</title>
        <link>https://lara.epfl.ch/w/cc16/top?rev=1507559480&amp;do=diff</link>
        <description>Computer Language Processing

CS-320, Edition 2016

Moodle Page

Staff
 Instructor              Viktor Kuncak   PhD Assistants     Manos Koukoutos and Ravi Kandhadai  MSc Assistants  Tristan Overney, Ogier Bouvier and Alfonso Peterssen  Infrastructure advice  Etienne Kneuss  Secretary               Sylvie Jankow  
Grading

	*  50% Projects
	*  50% Quiz

Stuff: Course Materials</description>
    </item>
</rdf:RDF>
