author | Christian Urban <urbanc@in.tum.de> |
Tue, 12 Jun 2012 13:40:40 +0100 | |
changeset 119 | 91145e24e83d |
parent 78 | c046c3d2950b |
child 120 | c4b954e76f0b |
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 |
119 | 46 |
Sudoku solvers (see <a href="http://anytime.cs.umass.edu/aimath06/proceedings/P34.pdf">here</a>) |
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>. |
|
245 |
</p> |
|
246 |
||
247 |
<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
|
248 |
|
44 | 249 |
<p> |
250 |
<B>Description:</B> |
|
251 |
Solving the problem of deciding equivalence of regular expressions can be used |
|
252 |
to decide a number of problems in automated reasoning. Therefore one likes to |
|
47 | 253 |
have a method for equivalence checking that is as fast as possible. There have |
254 |
been a number of algorithms proposed in the past, but one based on a method |
|
255 |
by Antimirov and Mosses seems relatively simple and easy to implement. |
|
44 | 256 |
</p> |
257 |
||
258 |
<p> |
|
259 |
<B>Tasks:</B> |
|
260 |
The task is to implement the algorithm by Antimirov and Mosses and compare it to |
|
261 |
other methods. Hopefully the algorithm can be tuned to be faster than other |
|
47 | 262 |
methods. The project can be carried out in almost all programming languages, but |
263 |
as usual functional programming languages such Scala, ML, Haskell have an edge |
|
264 |
for this kind of problems. |
|
44 | 265 |
</p> |
43
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
266 |
|
44 | 267 |
<p> |
268 |
<B>Literature:</B> |
|
54 | 269 |
Central to this project are the papers <A HREF="http://www.dcc.fc.up.pt/~nam/publica/ijcs08.pdf">here</A> |
270 |
and <A HREF="http://www.dcc.fc.up.pt/~nam/publica/51480046.pdf">here</A>. |
|
44 | 271 |
Other methods have been described, for example, |
272 |
<A HREF="http://www4.informatik.tu-muenchen.de/~krauss/papers/rexp.pdf">here</A>. |
|
47 | 273 |
A relatively complicated method, based on automata, is described |
274 |
<A HREF="http://sardes.inrialpes.fr/~braibant/atbr/">here</A>. |
|
44 | 275 |
</p> |
43
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
276 |
|
58 | 277 |
<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:
55
diff
changeset
|
278 |
|
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
279 |
<p> |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
280 |
<B>Literature:</b> |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
281 |
There is a web-page with various pointers to computer players |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
282 |
<A HREF="http://webdocs.cs.ualberta.ca/~games/">here</A>. There are |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
283 |
also some good books about computer players, for example: |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
284 |
<table> |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
285 |
<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:
55
diff
changeset
|
286 |
(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:
55
diff
changeset
|
287 |
Othello, etc; includes theoretical issues such as game searching) |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
288 |
</td></tr> |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
289 |
<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:
55
diff
changeset
|
290 |
J. Schaeffer and H.J. van den Herik, North Holland, 2002. |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
291 |
</td></tr> |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
292 |
<tr><td> |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
293 |
<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:
55
diff
changeset
|
294 |
</td></tr> |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
295 |
<tr><td> |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
296 |
<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:
55
diff
changeset
|
297 |
by D.N.L. Levy, Simon and Schuster, 1983. |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
298 |
</td></tr> |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
299 |
</table> |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
300 |
</p> |
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
301 |
|
77 | 302 |
<li><h4>[CU8] Webserver for a Revision Control System</h4> |
303 |
||
78 | 304 |
<p> |
305 |
Modern revision control systems are |
|
306 |
<A HREF="http://mercurial.selenic.com/">mercurial</A> and |
|
307 |
<A HREF="http://git-scm.com/">git</A>. |
|
308 |
</p> |
|
77 | 309 |
|
78 | 310 |
<p> |
311 |
<b>Task:</b> Build a webserver for a revision control system |
|
312 |
that allows user management. |
|
313 |
</p> |
|
57
62e8e9ac4114
added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents:
55
diff
changeset
|
314 |
|
43
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
315 |
</ul> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
316 |
</TD> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
317 |
</TR> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
318 |
</TABLE> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
319 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
320 |
<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
|
321 |
<!-- hhmts start --> |
71 | 322 |
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
|
323 |
<!-- hhmts end --> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
324 |
<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
|
325 |
</BODY> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
326 |
</HTML> |