| author | Christian Urban <urbanc@in.tum.de> | 
| Thu, 15 Mar 2012 16:39:57 +0000 | |
| changeset 100 | ae93eceffa62 | 
| parent 78 | c046c3d2950b | 
| child 119 | 91145e24e83d | 
| permissions | -rw-r--r-- | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 1 | <?xml version="1.0" encoding="utf-8"?> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 2 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 3 | <HEAD> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 4 | <TITLE>Christian Urban</TITLE> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 5 | <BASE HREF="http://www.inf.kcl.ac.uk/staff/urbanc/"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 6 | <script type="text/javascript" src="striper.js"></script> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 7 | <link rel="stylesheet" href="nominal.css"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 8 | </HEAD> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 9 | <BODY TEXT="#000000" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 10 | BGCOLOR="#4169E1" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 11 | LINK="#0000EF" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 12 | VLINK="#51188E" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 13 | ALINK="#FF0000" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 14 |       ONLOAD="striper('ul','striped','li','first,second')">
 | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 15 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 16 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 17 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 18 | <TABLE WIDTH="100%" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 19 | BGCOLOR="#4169E1" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 20 | BORDER="0" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 21 | FRAME="border" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 22 | CELLPADDING="10" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 23 | CELLSPACING="2" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 24 | RULES="all"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 25 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 26 | <TR> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 27 | <TD BGCOLOR="#FFFFFF" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 28 | WIDTH="75%" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 29 | VALIGN="TOP"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 30 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 31 | <H2>2011/12 MSc Individual Projects</H2> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 32 | <H4>Supervisor: Christian Urban</H4> | 
| 47 | 33 | <H4>Email: christian dot urban at kcl dot ac dot uk, Office: Strand Building S6.30</H4> | 
| 34 | <H4>If you are interested in a project, please send me an email and we can discuss details. Please include | |
| 50 | 35 | a short description about your programming skills and computer science background in your first email. | 
| 36 | I will also need your King's username in order to book the project for you. Thanks.</H4> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 37 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 38 | <ul class="striped"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 39 | <li> <H4>[CU1] Implementing a SAT-Solver in a Functional Programming Language</H4> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 40 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 41 | <p><B>Description:</b> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 42 | SAT-solver search for satisfying assignments of boolean formulas. Although this | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 43 | is a computationally hard problem (<A HREF="http://en.wikipedia.org/wiki/NP-complete">NP-complete</A>), | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 44 | modern SAT-solvers routinely solve boolean formulas with 100,000 and more variables. | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 45 | Application areas of SAT-solver are manifold: they range from hardware verification to | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 46 | Sudoku solvers. Every 2 years there is a competition of the best SAT-solvers in the world.</p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 47 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 48 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 49 | Most SAT-solvers are written in C. The aim of this project is to design and implement | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 50 | a SAT-solver in a functional programming language (preferably | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 51 | <A HREF="http://en.wikipedia.org/wiki/Standard_ML">ML</A>, but | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 52 | <A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A>, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 53 | <A HREF="http://www.scala-lang.org/">Scala</A>, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 54 | <A HREF="http://caml.inria.fr/">OCaml</A>, ... are also OK). Starting point is | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 55 | the open source SAT-solver MiniSat (available <A HREF="http://minisat.se/Main.html">here</A>). | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 56 | The long-term hope is that your implementation becomes part of the interactive theorem prover | 
| 44 | 57 | <A HREF="http://www.cl.cam.ac.uk/research/hvg/isabelle/">Isabelle</A>. For this | 
| 58 | the SAT-solver needs to be implemented in ML.</p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 59 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 60 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 61 | <B>Tasks:</B> Understand MiniSat, design and code a SAT-solver in ML, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 62 | empirical evaluation and tuning of your code.</p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 63 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 64 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 65 | <B>Literature:</B> A good starting point for reading about SAT-solving is the handbook | 
| 44 | 66 | article <A HREF="http://www.cs.cornell.edu/gomes/papers/SATSolvers-KR-Handbook.pdf">here</A>. | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 67 | MiniSat is explained <A HREF="http://minisat.se/downloads/MiniSat.pdf">here</A> and | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 68 | <A HREF="http://minisat.se/Papers.html">here</A>. The standard reference for ML is | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 69 | <A HREF="http://www.cl.cam.ac.uk/~lp15/MLbook/">here</A> (I can lend you my copy | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 70 | of this book for the duration of the project). The best free implementation of ML is | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 71 | <A HREF="http://www.polyml.org/">PolyML</A>. | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 72 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 73 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 74 | <li> <H4>[CU2] A Compiler for System F</H4> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 75 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 76 | <p><b>Description:</b> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 77 | <A HREF="http://en.wikipedia.org/wiki/System_F">System F</A> is a mini programming language, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 78 | which is often used to study the theory behind programming languages, but is also used as | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 79 | a core-language of functional programming languages (for example | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 80 | <A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A>). The language is small | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 81 | enough to implement in a reasonable amount of time a compiler to an | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 82 | idealised assembly language (preferably | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 83 | <A HREF="http://en.wikipedia.org/wiki/Typed_assembly_language">TAL</A>) or an abstract machine. | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 84 | This has been explained in full detail in a PhD-thesis by Louis-Julien Guillemette | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 85 | (available in English <A HREF="https://papyrus.bib.umontreal.ca/jspui/bitstream/1866/3454/6/Guillemette_Louis-Julien_2009_these.pdf">here</A>). He used <A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A> | 
| 44 | 86 | as his implementation language. Other choices are possible. | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 87 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 88 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 89 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 90 | <b>Tasks:</b> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 91 | Read the relevant literature and implement the various components of a compiler | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 92 | (parser, intermediate languages, simulator for the idealised assembly language). | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 93 | This project is for a good student with an interest in programming languages, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 94 | who can also translate abstract ideas into code. If it is too difficult, the project can | 
| 44 | 95 | be easily scaled down to the | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 96 | <A HREF="http://en.wikipedia.org/wiki/Simply_typed_lambda_calculus">simply-typed | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 97 | lambda calculus</A> (which is simpler than | 
| 44 | 98 | System F) or to cover only some components of the compiler. | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 99 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 100 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 101 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 102 | <B>Literature:</B> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 103 | The <A HREF="https://papyrus.bib.umontreal.ca/jspui/bitstream/1866/3454/6/Guillemette_Louis-Julien_2009_these.pdf">PhD-thesis</A> by Louis-Julien Guillemette is required reading. A shorter | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 104 | paper about this subject is available <A HREF="http://www.iro.umontreal.ca/~monnier/icfp08.pdf">here</A>. | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 105 | A good starting point for TAL is <A HREF="http://www.cs.cornell.edu/talc/papers/tal-tr.pdf">here</A>. | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 106 | There is a lot of literature about compilers | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 107 | (for example <A HREF="http://www.cs.princeton.edu/~appel/papers/cwc.html">this book</A> - | 
| 55 | 108 | I can lend you my copy for the duration of the project). A very good overview article | 
| 109 | about implementing compilers by | |
| 110 | <A HREF="http://tratt.net/laurie/">Laurie Tratt</A> is | |
| 111 | <A HREF="http://tratt.net/laurie/tech_articles/articles/how_difficult_is_it_to_write_a_compiler">here</A>. | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 112 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 113 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 114 | <li> <H4>[CU3] Sorting Suffixes</H4> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 115 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 116 | <p><b>Description:</b> Given a string, take all its suffixes, and sort them. | 
| 44 | 117 | This is often called <A HREF="http://en.wikipedia.org/wiki/Suffix_array">suffix | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 118 | array sorting</A>. It sound simple, but there are some difficulties. | 
| 44 | 119 | The naive algorithm would generate all suffix strings and sort them | 
| 120 | using a standard sorting algorithm, for example | |
| 121 | <A HREF="http://en.wikipedia.org/wiki/Quicksort">quicksort</A>. | |
| 122 | The problem is that | |
| 123 | this algorithm is not optimal for suffix sorting: it does not take into account that you sort | |
| 124 | suffixes and it also takes a quadratic amount of space. This is a | |
| 125 | huge problem if you have to sort strings of several Megabytes or even Gigabytes, | |
| 126 | as happens often in biotech and DNA data mining. Suffix sorting is also a crucial operation for the | |
| 51 | 127 | <A HREF="http://en.wikipedia.org/wiki/Burrows-Wheeler_transform">Burrows-Wheeler transform</A> | 
| 44 | 128 | on which the data compression algorithm of the popular | 
| 129 | <A HREF="http://en.wikipedia.org/wiki/Bzip2">bzip2</A> | |
| 130 | program is based. | |
| 131 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 132 | |
| 44 | 133 | <p> | 
| 134 | There are more efficient algorithms for suffix sorting, for example | |
| 135 | <A HREF="http://books.google.co.uk/books?id=Pn1sHToYf9oC&printsec=frontcover&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false">here</A> and | |
| 136 | <A HREF="http://ls11-www.cs.uni-dortmund.de/people/rahmann/teaching/ss2008/AlgorithmenAufSequenzen/09-walk-bwt.pdf">here</A>. | |
| 137 | However the most space efficient algorithm for suffix sorting | |
| 138 | (<A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">here</A>) | |
| 139 | is horrendously complicated. Your task would be to understand it, and then implement it. | |
| 140 | </p> | |
| 141 | ||
| 142 | <p> | |
| 143 | <B>Tasks:</B> | |
| 144 | Start by reading the literature about suffix sorting. Then work through the | |
| 145 | 12-page <A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">paper</A> | |
| 146 | explaining the horrendously complicated algorithm and implement it. | |
| 147 | Time permitting the work can include an implementation of the Burrows-Wheeler | |
| 148 | data compression. This project is for a good student, who likes to study in-depth | |
| 149 | algorithms. The project can be carried out in almost all programming languages, | |
| 150 | including C, Java, Scala, ML, Haskell and so on. | |
| 151 | </p> | |
| 152 | ||
| 153 | <p> | |
| 154 | <B>Literature:</B> A good starting point for reading about suffix sorting is the | |
| 71 | 155 | <A HREF="http://books.google.co.uk/books?id=Pn1sHToYf9oC&printsec=frontcover&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false">book</A> by Crochemore. | 
| 156 | Another good introduction is | |
| 157 | <A HREF="http://people.unipmn.it/manzini/papers/esa02.pdf">here</A>, | |
| 158 | which gives also good pointers for why efficient suffix sorting | |
| 159 | is practically relevant. | |
| 160 | Two simple algorithms are described | |
| 44 | 161 | <A HREF="http://ls11-www.cs.uni-dortmund.de/people/rahmann/teaching/ss2008/AlgorithmenAufSequenzen/09-walk-bwt.pdf">here</A>. The main literature is the 12-page | 
| 162 | <A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">article</A> about in-place | |
| 163 | suffix sorting. The Burrows-Wheeler data compression is described | |
| 164 | <A HREF="http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-124.pdf">here</A>. | |
| 165 | </p> | |
| 166 | ||
| 167 | <li> <H4>[CU4] Simplification with Equivalence Relations in the Isabelle Theorem Prover</H4> | |
| 168 | <p> | |
| 169 | <B>Description:</B> | |
| 170 | In this project you have to extend the simplifier of the | |
| 171 | <A HREF="http://isabelle.in.tum.de/">Isabelle theorem prover</A>. | |
| 172 | The simplifier is an important reasoning tool of this theorem prover: it | |
| 173 | replaces a term by another term that can be proved to be equal to it. However, | |
| 174 | currently the simplifier only rewrites terms according to equalities. | |
| 175 | Assuming ≈ is an equivalence relation, the simplifier should also be able | |
| 176 | to rewrite terms according to ≈. Since equivalence relations occur | |
| 177 | frequently in automated reasoning, this extension would make the simplifier | |
| 178 | more powerful and useful. The hope is that your code can go into the | |
| 179 | code base of Isabelle. | |
| 180 | </p> | |
| 181 | ||
| 182 | <p> | |
| 183 | <B>Tasks:</B> | |
| 184 | Read the <A HREF="http://www.springerlink.com/content/x7041m1807738832/">paper</A> | |
| 185 | about rewriting with equivalence relations. Get familiar with parts of the | |
| 186 | implementation of Isabelle (I will be of much help as I can). Implement | |
| 187 | the extension. This project is suitable for a student with a bit of math background. | |
| 188 | It requires knowledge of the functional programming language ML, which | |
| 189 | however can be learned quickly provided you have already written code | |
| 190 | in another functional programming language. | |
| 191 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 192 | |
| 44 | 193 | <p> | 
| 194 | <B>Literature:</B> A good starting point for reading about rewriting modulo equivalences | |
| 195 | is the paper <A HREF="http://www.springerlink.com/content/x7041m1807738832/">here</A>, | |
| 196 | which uses the ACL2 theorem prover. The implementation of the Isabelle theorem | |
| 197 | prover is described in much detail in this | |
| 198 | <A HREF="http://www.inf.kcl.ac.uk/staff/urbanc/Cookbook/">programming tutorial</A>. | |
| 199 | The standard reference for ML is | |
| 200 | <A HREF="http://www.cl.cam.ac.uk/~lp15/MLbook/">here</A> (I can lend you my copy | |
| 201 | of this book for the duration of the project). | |
| 202 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 203 | |
| 44 | 204 | |
| 205 | <li><h4>[CU5] Lexing and Parsing with Derivatives</h4> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 206 | |
| 44 | 207 | <p> | 
| 208 | <B>Description:</B> | |
| 209 | Lexing and parsing are usually done using automated tools, like | |
| 210 | <A HREF="http://en.wikipedia.org/wiki/Lex_programming_tool">lex</A> and | |
| 211 | <A HREF="http://en.wikipedia.org/wiki/Yacc">yacc</A>. The problem | |
| 47 | 212 | with them is that they "work when they work", but if they do not, then they are | 
| 44 | 213 | <A HREF="http://en.wikipedia.org/wiki/Black_box">black boxes</A> | 
| 214 | which are difficult to debug and change. They are really quite | |
| 47 | 215 | clumsy to the point that Might and Darais wrote a paper titled | 
| 44 | 216 | "<A HREF="http://arxiv.org/pdf/1010.5023v1">Yacc is dead</A>".</p> | 
| 217 | ||
| 218 | <p> | |
| 47 | 219 | There is a simple algorithm for regular expression matching (that is lexing). | 
| 44 | 220 | This algorithm was introduced by | 
| 221 | <A HREF="http://en.wikipedia.org/wiki/Janusz_Brzozowski_(computer_scientist)">Brzozowski</A> | |
| 222 | in 1964. It is based on the notion of derivatives of regular expressions and | |
| 223 | has proved <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">useful</A> | |
| 224 | for practical lexing. Last year the notion of derivatives was extended by | |
| 225 | <A HREF="http://matt.might.net/papers/might2011derivatives.pdf">Might et al</A> | |
| 226 | to <A HREF="http://en.wikipedia.org/wiki/Context-free_grammar">context free grammars</A> | |
| 227 | and parsing. | |
| 228 | </p> | |
| 229 | ||
| 230 | <p> | |
| 231 | <B>Tasks:</B> Get familiar with the two algorithms and implement them. Regular | |
| 232 | expression matching is relatively simple; parsing with derivatives is the | |
| 233 | harder part. Therefore you should empirically evaluate this part and | |
| 234 | tune your implementation. The project can be carried out in almost all programming | |
| 235 | languages, including C, Java, Scala, ML, Haskell and so on. | |
| 236 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 237 | |
| 44 | 238 | <p> | 
| 239 | <B>Literature:</B> This | |
| 240 | <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">paper</A> | |
| 241 | gives a modern introduction to derivative based lexing. Derivative-based | |
| 242 | parsing is explained <A HREF="http://arxiv.org/pdf/1010.5023v1">here</A> | |
| 243 | and <A HREF="http://matt.might.net/papers/might2011derivatives.pdf">here</A>. | |
| 244 | </p> | |
| 245 | ||
| 246 | <li> <H4>[CU6] Equivalence Checking of Regular Expressions using the Method by Antimirov and Mosses</H4> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 247 | |
| 44 | 248 | <p> | 
| 249 | <B>Description:</B> | |
| 250 | Solving the problem of deciding equivalence of regular expressions can be used | |
| 251 | to decide a number of problems in automated reasoning. Therefore one likes to | |
| 47 | 252 | have a method for equivalence checking that is as fast as possible. There have | 
| 253 | been a number of algorithms proposed in the past, but one based on a method | |
| 254 | by Antimirov and Mosses seems relatively simple and easy to implement. | |
| 44 | 255 | </p> | 
| 256 | ||
| 257 | <p> | |
| 258 | <B>Tasks:</B> | |
| 259 | The task is to implement the algorithm by Antimirov and Mosses and compare it to | |
| 260 | other methods. Hopefully the algorithm can be tuned to be faster than other | |
| 47 | 261 | methods. The project can be carried out in almost all programming languages, but | 
| 262 | as usual functional programming languages such Scala, ML, Haskell have an edge | |
| 263 | for this kind of problems. | |
| 44 | 264 | </p> | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 265 | |
| 44 | 266 | <p> | 
| 267 | <B>Literature:</B> | |
| 54 | 268 | Central to this project are the papers <A HREF="http://www.dcc.fc.up.pt/~nam/publica/ijcs08.pdf">here</A> | 
| 269 | and <A HREF="http://www.dcc.fc.up.pt/~nam/publica/51480046.pdf">here</A>. | |
| 44 | 270 | Other methods have been described, for example, | 
| 271 | <A HREF="http://www4.informatik.tu-muenchen.de/~krauss/papers/rexp.pdf">here</A>. | |
| 47 | 272 | A relatively complicated method, based on automata, is described | 
| 273 | <A HREF="http://sardes.inrialpes.fr/~braibant/atbr/">here</A>. | |
| 44 | 274 | </p> | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 275 | |
| 58 | 276 | <li> <H4>[CU7] Game-Playing Engine for Five-In-A-Row on a Large Board</H4> | 
| 57 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 277 | |
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 278 | <p> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 279 | <B>Literature:</b> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 280 | There is a web-page with various pointers to computer players | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 281 | <A HREF="http://webdocs.cs.ualberta.ca/~games/">here</A>. There are | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 282 | also some good books about computer players, for example: | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 283 | <table> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 284 | <tr><td><i>Computer Game-Playing: Theory and Practice</i> by M. Bramer, Ellis Horwood Ltd, 1983. | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 285 | (Considers techniques used for programming a variety of games: Chess, Go, Scrabble, Billiards, | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 286 | Othello, etc; includes theoretical issues such as game searching) | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 287 | </td></tr> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 288 | <tr><td><i>Chips Challenging Champions: Games, Computers and Artificial Intelligence</i> by | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 289 | J. Schaeffer and H.J. van den Herik, North Holland, 2002. | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 290 | </td></tr> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 291 | <tr><td> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 292 | <i>Artificial Intelligence for Games</i> by I. Millington and J. Funge, Morgan Kaufmann, 2009. | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 293 | </td></tr> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 294 | <tr><td> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 295 | <i>Computer Gamesmanship: The Complete Guide to Creating and Structuring Intelligent Games Programs</i> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 296 | by D.N.L. Levy, Simon and Schuster, 1983. | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 297 | </td></tr> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 298 | </table> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 299 | </p> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 300 | |
| 77 | 301 | <li><h4>[CU8] Webserver for a Revision Control System</h4> | 
| 302 | ||
| 78 | 303 | <p> | 
| 304 | Modern revision control systems are | |
| 305 | <A HREF="http://mercurial.selenic.com/">mercurial</A> and | |
| 306 | <A HREF="http://git-scm.com/">git</A>. | |
| 307 | </p> | |
| 77 | 308 | |
| 78 | 309 | <p> | 
| 310 | <b>Task:</b> Build a webserver for a revision control system | |
| 311 | that allows user management. | |
| 312 | </p> | |
| 57 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 313 | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 314 | </ul> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 315 | </TD> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 316 | </TR> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 317 | </TABLE> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 318 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 319 | <P><!-- Created: Tue Mar 4 00:23:25 GMT 1997 --> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 320 | <!-- hhmts start --> | 
| 71 | 321 | Last modified: Wed Jan 11 16:30:03 GMT 2012 | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 322 | <!-- hhmts end --> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 323 | <a href="http://validator.w3.org/check/referer">[Validate this page.]</a> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 324 | </BODY> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 325 | </HTML> |