| author | Christian Urban <christian dot urban at kcl dot ac dot uk> | 
| Sun, 10 Apr 2016 20:57:33 +0100 | |
| changeset 429 | 882ff9b28510 | 
| parent 125 | d399003a53ca | 
| 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 | 
| 120 | 46 | Sudoku solvers (see <a href="http://anytime.cs.umass.edu/aimath06/proceedings/P34.pdf">here</a>). | 
| 119 | 47 | Every 2 years there is a competition of the best SAT-solvers in the world.</p> | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 48 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 49 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 50 | 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 | 51 | a SAT-solver in a functional programming language (preferably | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 52 | <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 | 53 | <A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A>, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 54 | <A HREF="http://www.scala-lang.org/">Scala</A>, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 55 | <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 | 56 | 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 | 57 | The long-term hope is that your implementation becomes part of the interactive theorem prover | 
| 44 | 58 | <A HREF="http://www.cl.cam.ac.uk/research/hvg/isabelle/">Isabelle</A>. For this | 
| 59 | 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 | 60 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 61 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 62 | <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 | 63 | empirical evaluation and tuning of your code.</p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 64 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 65 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 66 | <B>Literature:</B> A good starting point for reading about SAT-solving is the handbook | 
| 44 | 67 | 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 | 68 | 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 | 69 | <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 | 70 | <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 | 71 | 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 | 72 | <A HREF="http://www.polyml.org/">PolyML</A>. | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 73 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 74 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 75 | <li> <H4>[CU2] A Compiler for System F</H4> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 76 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 77 | <p><b>Description:</b> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 78 | <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 | 79 | 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 | 80 | a core-language of functional programming languages (for example | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 81 | <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 | 82 | 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 | 83 | idealised assembly language (preferably | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 84 | <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 | 85 | 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 | 86 | (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 | 87 | as his implementation language. Other choices are possible. | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 88 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 89 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 90 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 91 | <b>Tasks:</b> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 92 | 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 | 93 | (parser, intermediate languages, simulator for the idealised assembly language). | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 94 | 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 | 95 | who can also translate abstract ideas into code. If it is too difficult, the project can | 
| 44 | 96 | be easily scaled down to the | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 97 | <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 | 98 | lambda calculus</A> (which is simpler than | 
| 44 | 99 | 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 | 100 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 101 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 102 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 103 | <B>Literature:</B> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 104 | 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 | 105 | 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 | 106 | 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 | 107 | There is a lot of literature about compilers | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 108 | (for example <A HREF="http://www.cs.princeton.edu/~appel/papers/cwc.html">this book</A> - | 
| 55 | 109 | I can lend you my copy for the duration of the project). A very good overview article | 
| 110 | about implementing compilers by | |
| 111 | <A HREF="http://tratt.net/laurie/">Laurie Tratt</A> is | |
| 112 | <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 | 113 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 114 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 115 | <li> <H4>[CU3] Sorting Suffixes</H4> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 116 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 117 | <p><b>Description:</b> Given a string, take all its suffixes, and sort them. | 
| 44 | 118 | 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 | 119 | array sorting</A>. It sound simple, but there are some difficulties. | 
| 44 | 120 | The naive algorithm would generate all suffix strings and sort them | 
| 121 | using a standard sorting algorithm, for example | |
| 122 | <A HREF="http://en.wikipedia.org/wiki/Quicksort">quicksort</A>. | |
| 123 | The problem is that | |
| 124 | this algorithm is not optimal for suffix sorting: it does not take into account that you sort | |
| 125 | suffixes and it also takes a quadratic amount of space. This is a | |
| 126 | huge problem if you have to sort strings of several Megabytes or even Gigabytes, | |
| 127 | as happens often in biotech and DNA data mining. Suffix sorting is also a crucial operation for the | |
| 51 | 128 | <A HREF="http://en.wikipedia.org/wiki/Burrows-Wheeler_transform">Burrows-Wheeler transform</A> | 
| 44 | 129 | on which the data compression algorithm of the popular | 
| 130 | <A HREF="http://en.wikipedia.org/wiki/Bzip2">bzip2</A> | |
| 131 | program is based. | |
| 132 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 133 | |
| 44 | 134 | <p> | 
| 135 | There are more efficient algorithms for suffix sorting, for example | |
| 136 | <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 | |
| 137 | <A HREF="http://ls11-www.cs.uni-dortmund.de/people/rahmann/teaching/ss2008/AlgorithmenAufSequenzen/09-walk-bwt.pdf">here</A>. | |
| 138 | However the most space efficient algorithm for suffix sorting | |
| 139 | (<A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">here</A>) | |
| 140 | is horrendously complicated. Your task would be to understand it, and then implement it. | |
| 141 | </p> | |
| 142 | ||
| 143 | <p> | |
| 144 | <B>Tasks:</B> | |
| 145 | Start by reading the literature about suffix sorting. Then work through the | |
| 146 | 12-page <A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">paper</A> | |
| 147 | explaining the horrendously complicated algorithm and implement it. | |
| 148 | Time permitting the work can include an implementation of the Burrows-Wheeler | |
| 149 | data compression. This project is for a good student, who likes to study in-depth | |
| 150 | algorithms. The project can be carried out in almost all programming languages, | |
| 151 | including C, Java, Scala, ML, Haskell and so on. | |
| 152 | </p> | |
| 153 | ||
| 154 | <p> | |
| 155 | <B>Literature:</B> A good starting point for reading about suffix sorting is the | |
| 71 | 156 | <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. | 
| 157 | Another good introduction is | |
| 158 | <A HREF="http://people.unipmn.it/manzini/papers/esa02.pdf">here</A>, | |
| 159 | which gives also good pointers for why efficient suffix sorting | |
| 160 | is practically relevant. | |
| 161 | Two simple algorithms are described | |
| 44 | 162 | <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 | 
| 163 | <A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">article</A> about in-place | |
| 164 | suffix sorting. The Burrows-Wheeler data compression is described | |
| 165 | <A HREF="http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-124.pdf">here</A>. | |
| 166 | </p> | |
| 167 | ||
| 168 | <li> <H4>[CU4] Simplification with Equivalence Relations in the Isabelle Theorem Prover</H4> | |
| 169 | <p> | |
| 170 | <B>Description:</B> | |
| 171 | In this project you have to extend the simplifier of the | |
| 172 | <A HREF="http://isabelle.in.tum.de/">Isabelle theorem prover</A>. | |
| 173 | The simplifier is an important reasoning tool of this theorem prover: it | |
| 174 | replaces a term by another term that can be proved to be equal to it. However, | |
| 175 | currently the simplifier only rewrites terms according to equalities. | |
| 176 | Assuming ≈ is an equivalence relation, the simplifier should also be able | |
| 177 | to rewrite terms according to ≈. Since equivalence relations occur | |
| 178 | frequently in automated reasoning, this extension would make the simplifier | |
| 179 | more powerful and useful. The hope is that your code can go into the | |
| 180 | code base of Isabelle. | |
| 181 | </p> | |
| 182 | ||
| 183 | <p> | |
| 184 | <B>Tasks:</B> | |
| 185 | Read the <A HREF="http://www.springerlink.com/content/x7041m1807738832/">paper</A> | |
| 186 | about rewriting with equivalence relations. Get familiar with parts of the | |
| 187 | implementation of Isabelle (I will be of much help as I can). Implement | |
| 188 | the extension. This project is suitable for a student with a bit of math background. | |
| 189 | It requires knowledge of the functional programming language ML, which | |
| 190 | however can be learned quickly provided you have already written code | |
| 191 | in another functional programming language. | |
| 192 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 193 | |
| 44 | 194 | <p> | 
| 195 | <B>Literature:</B> A good starting point for reading about rewriting modulo equivalences | |
| 196 | is the paper <A HREF="http://www.springerlink.com/content/x7041m1807738832/">here</A>, | |
| 197 | which uses the ACL2 theorem prover. The implementation of the Isabelle theorem | |
| 198 | prover is described in much detail in this | |
| 199 | <A HREF="http://www.inf.kcl.ac.uk/staff/urbanc/Cookbook/">programming tutorial</A>. | |
| 200 | The standard reference for ML is | |
| 201 | <A HREF="http://www.cl.cam.ac.uk/~lp15/MLbook/">here</A> (I can lend you my copy | |
| 202 | of this book for the duration of the project). | |
| 203 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 204 | |
| 44 | 205 | |
| 206 | <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 | 207 | |
| 44 | 208 | <p> | 
| 209 | <B>Description:</B> | |
| 210 | Lexing and parsing are usually done using automated tools, like | |
| 211 | <A HREF="http://en.wikipedia.org/wiki/Lex_programming_tool">lex</A> and | |
| 212 | <A HREF="http://en.wikipedia.org/wiki/Yacc">yacc</A>. The problem | |
| 47 | 213 | with them is that they "work when they work", but if they do not, then they are | 
| 44 | 214 | <A HREF="http://en.wikipedia.org/wiki/Black_box">black boxes</A> | 
| 215 | which are difficult to debug and change. They are really quite | |
| 47 | 216 | clumsy to the point that Might and Darais wrote a paper titled | 
| 44 | 217 | "<A HREF="http://arxiv.org/pdf/1010.5023v1">Yacc is dead</A>".</p> | 
| 218 | ||
| 219 | <p> | |
| 47 | 220 | There is a simple algorithm for regular expression matching (that is lexing). | 
| 44 | 221 | This algorithm was introduced by | 
| 222 | <A HREF="http://en.wikipedia.org/wiki/Janusz_Brzozowski_(computer_scientist)">Brzozowski</A> | |
| 223 | in 1964. It is based on the notion of derivatives of regular expressions and | |
| 224 | has proved <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">useful</A> | |
| 225 | for practical lexing. Last year the notion of derivatives was extended by | |
| 226 | <A HREF="http://matt.might.net/papers/might2011derivatives.pdf">Might et al</A> | |
| 227 | to <A HREF="http://en.wikipedia.org/wiki/Context-free_grammar">context free grammars</A> | |
| 228 | and parsing. | |
| 229 | </p> | |
| 230 | ||
| 231 | <p> | |
| 232 | <B>Tasks:</B> Get familiar with the two algorithms and implement them. Regular | |
| 233 | expression matching is relatively simple; parsing with derivatives is the | |
| 234 | harder part. Therefore you should empirically evaluate this part and | |
| 235 | tune your implementation. The project can be carried out in almost all programming | |
| 236 | languages, including C, Java, Scala, ML, Haskell and so on. | |
| 237 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 238 | |
| 44 | 239 | <p> | 
| 240 | <B>Literature:</B> This | |
| 241 | <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">paper</A> | |
| 242 | gives a modern introduction to derivative based lexing. Derivative-based | |
| 243 | parsing is explained <A HREF="http://arxiv.org/pdf/1010.5023v1">here</A> | |
| 244 | and <A HREF="http://matt.might.net/papers/might2011derivatives.pdf">here</A>. | |
| 125 | 245 | A proposal for derivative PEG-parsing is | 
| 246 | <A HREF="http://fmota.eu/2011/01/07/PEG-derivatives.html">here</a>. The mailing | |
| 247 | list about PEGs is <A HREF="https://lists.csail.mit.edu/pipermail/peg/">here</A>. | |
| 44 | 248 | </p> | 
| 249 | ||
| 250 | <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 | 251 | |
| 44 | 252 | <p> | 
| 253 | <B>Description:</B> | |
| 254 | Solving the problem of deciding equivalence of regular expressions can be used | |
| 255 | to decide a number of problems in automated reasoning. Therefore one likes to | |
| 47 | 256 | have a method for equivalence checking that is as fast as possible. There have | 
| 257 | been a number of algorithms proposed in the past, but one based on a method | |
| 258 | by Antimirov and Mosses seems relatively simple and easy to implement. | |
| 44 | 259 | </p> | 
| 260 | ||
| 261 | <p> | |
| 262 | <B>Tasks:</B> | |
| 263 | The task is to implement the algorithm by Antimirov and Mosses and compare it to | |
| 264 | other methods. Hopefully the algorithm can be tuned to be faster than other | |
| 47 | 265 | methods. The project can be carried out in almost all programming languages, but | 
| 266 | as usual functional programming languages such Scala, ML, Haskell have an edge | |
| 267 | for this kind of problems. | |
| 44 | 268 | </p> | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 269 | |
| 44 | 270 | <p> | 
| 271 | <B>Literature:</B> | |
| 54 | 272 | Central to this project are the papers <A HREF="http://www.dcc.fc.up.pt/~nam/publica/ijcs08.pdf">here</A> | 
| 273 | and <A HREF="http://www.dcc.fc.up.pt/~nam/publica/51480046.pdf">here</A>. | |
| 44 | 274 | Other methods have been described, for example, | 
| 275 | <A HREF="http://www4.informatik.tu-muenchen.de/~krauss/papers/rexp.pdf">here</A>. | |
| 47 | 276 | A relatively complicated method, based on automata, is described | 
| 277 | <A HREF="http://sardes.inrialpes.fr/~braibant/atbr/">here</A>. | |
| 44 | 278 | </p> | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 279 | |
| 58 | 280 | <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 | 281 | |
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 282 | <p> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 283 | <B>Literature:</b> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 284 | 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 | 285 | <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 | 286 | also some good books about computer players, for example: | 
| 121 | 287 | <table cellspacing="10"> | 
| 122 | 288 | <tr><td><i>Artificial Intelligence: A Modern Approach</i> by S. Russel and P. Norvig, Prentice Hall, 2003 | 
| 289 | (a standard textbook about search strategies). | |
| 120 | 290 | </td></tr> | 
| 122 | 291 | <tr><td><i>Principles of Artificial Intelligence</i> by N. J. Nilsson, Springer Verlag, 1980 | 
| 292 | (a standard textbook about search strategies). | |
| 120 | 293 | </td></tr> | 
| 294 | ||
| 122 | 295 | <tr><td><i>Computer Game-Playing: Theory and Practice</i> by M. Bramer, Ellis Horwood Ltd, 1983 | 
| 296 | (considers techniques used for programming a variety of games: Chess, Go, Scrabble, Billiards, | |
| 297 | Othello, etc; includes theoretical issues about game searching). | |
| 57 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 298 | </td></tr> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 299 | <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 | 300 | 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 | 301 | </td></tr> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 302 | <tr><td> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 303 | <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 | 304 | </td></tr> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 305 | <tr><td> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 306 | <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 | 307 | by D.N.L. Levy, Simon and Schuster, 1983. | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 308 | </td></tr> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 309 | </table> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 310 | </p> | 
| 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 311 | |
| 77 | 312 | <li><h4>[CU8] Webserver for a Revision Control System</h4> | 
| 313 | ||
| 78 | 314 | <p> | 
| 315 | Modern revision control systems are | |
| 316 | <A HREF="http://mercurial.selenic.com/">mercurial</A> and | |
| 317 | <A HREF="http://git-scm.com/">git</A>. | |
| 318 | </p> | |
| 77 | 319 | |
| 78 | 320 | <p> | 
| 321 | <b>Task:</b> Build a webserver for a revision control system | |
| 322 | that allows user management. | |
| 323 | </p> | |
| 57 
62e8e9ac4114
added pointers to gameplayers
 Christian Urban <urbanc@in.tum.de> parents: 
55diff
changeset | 324 | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 325 | </ul> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 326 | </TD> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 327 | </TR> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 328 | </TABLE> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 329 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 330 | <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 | 331 | <!-- hhmts start --> | 
| 71 | 332 | 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 | 333 | <!-- hhmts end --> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 334 | <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 | 335 | </BODY> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 336 | </HTML> |