28 WIDTH="75%" |
28 WIDTH="75%" |
29 VALIGN="TOP"> |
29 VALIGN="TOP"> |
30 |
30 |
31 <H2>2011/12 MSc Individual Projects</H2> |
31 <H2>2011/12 MSc Individual Projects</H2> |
32 <H4>Supervisor: Christian Urban</H4> |
32 <H4>Supervisor: Christian Urban</H4> |
33 <H4>Email: @kcl Office: Strand Building S6.30</H4> |
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 email and we can discuss details.</H4> |
34 <H4>If you are interested in a project, please send me an email and we can discuss details. Please include |
|
35 a short description about your programming and computer science background in your first email. Thanks.</H4> |
35 |
36 |
36 <ul class="striped"> |
37 <ul class="striped"> |
37 <li> <H4>[CU1] Implementing a SAT-Solver in a Functional Programming Language</H4> |
38 <li> <H4>[CU1] Implementing a SAT-Solver in a Functional Programming Language</H4> |
38 |
39 |
39 <p><B>Description:</b> |
40 <p><B>Description:</b> |
197 <p> |
198 <p> |
198 <B>Description:</B> |
199 <B>Description:</B> |
199 Lexing and parsing are usually done using automated tools, like |
200 Lexing and parsing are usually done using automated tools, like |
200 <A HREF="http://en.wikipedia.org/wiki/Lex_programming_tool">lex</A> and |
201 <A HREF="http://en.wikipedia.org/wiki/Lex_programming_tool">lex</A> and |
201 <A HREF="http://en.wikipedia.org/wiki/Yacc">yacc</A>. The problem |
202 <A HREF="http://en.wikipedia.org/wiki/Yacc">yacc</A>. The problem |
202 with them is that they "work when they work", but if not, they are |
203 with them is that they "work when they work", but if they do not, then they are |
203 <A HREF="http://en.wikipedia.org/wiki/Black_box">black boxes</A> |
204 <A HREF="http://en.wikipedia.org/wiki/Black_box">black boxes</A> |
204 which are difficult to debug and change. They are really quite |
205 which are difficult to debug and change. They are really quite |
205 clumsy, to the point that Might wrote a paper titled |
206 clumsy to the point that Might and Darais wrote a paper titled |
206 "<A HREF="http://arxiv.org/pdf/1010.5023v1">Yacc is dead</A>".</p> |
207 "<A HREF="http://arxiv.org/pdf/1010.5023v1">Yacc is dead</A>".</p> |
207 |
208 |
208 <p> |
209 <p> |
209 There is simple algorithm for regular expression matching (that is lexing). |
210 There is a simple algorithm for regular expression matching (that is lexing). |
210 This algorithm was introduced by |
211 This algorithm was introduced by |
211 <A HREF="http://en.wikipedia.org/wiki/Janusz_Brzozowski_(computer_scientist)">Brzozowski</A> |
212 <A HREF="http://en.wikipedia.org/wiki/Janusz_Brzozowski_(computer_scientist)">Brzozowski</A> |
212 in 1964. It is based on the notion of derivatives of regular expressions and |
213 in 1964. It is based on the notion of derivatives of regular expressions and |
213 has proved <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">useful</A> |
214 has proved <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">useful</A> |
214 for practical lexing. Last year the notion of derivatives was extended by |
215 for practical lexing. Last year the notion of derivatives was extended by |
237 |
238 |
238 <p> |
239 <p> |
239 <B>Description:</B> |
240 <B>Description:</B> |
240 Solving the problem of deciding equivalence of regular expressions can be used |
241 Solving the problem of deciding equivalence of regular expressions can be used |
241 to decide a number of problems in automated reasoning. Therefore one likes to |
242 to decide a number of problems in automated reasoning. Therefore one likes to |
242 have a method for equivalence checking that is as fast as possible. |
243 have a method for equivalence checking that is as fast as possible. There have |
|
244 been a number of algorithms proposed in the past, but one based on a method |
|
245 by Antimirov and Mosses seems relatively simple and easy to implement. |
243 </p> |
246 </p> |
244 |
247 |
245 <p> |
248 <p> |
246 <B>Tasks:</B> |
249 <B>Tasks:</B> |
247 The task is to implement the algorithm by Antimirov and Mosses and compare it to |
250 The task is to implement the algorithm by Antimirov and Mosses and compare it to |
248 other methods. Hopefully the algorithm can be tuned to be faster than other |
251 other methods. Hopefully the algorithm can be tuned to be faster than other |
249 methods. |
252 methods. The project can be carried out in almost all programming languages, but |
|
253 as usual functional programming languages such Scala, ML, Haskell have an edge |
|
254 for this kind of problems. |
250 </p> |
255 </p> |
251 |
256 |
252 <p> |
257 <p> |
253 <B>Literature:</B> |
258 <B>Literature:</B> |
254 Central to this project is the paper <A HREF="http://www.dcc.fc.up.pt/~nam/publica/ijcs08.pdf">here</A>. |
259 Central to this project is the paper <A HREF="http://www.dcc.fc.up.pt/~nam/publica/ijcs08.pdf">here</A>. |
255 Other methods have been described, for example, |
260 Other methods have been described, for example, |
256 <A HREF="http://www4.informatik.tu-muenchen.de/~krauss/papers/rexp.pdf">here</A>. |
261 <A HREF="http://www4.informatik.tu-muenchen.de/~krauss/papers/rexp.pdf">here</A>. |
|
262 A relatively complicated method, based on automata, is described |
|
263 <A HREF="http://sardes.inrialpes.fr/~braibant/atbr/">here</A>. |
257 </p> |
264 </p> |
258 |
265 |
259 </ul> |
266 </ul> |
260 </TD> |
267 </TD> |
261 </TR> |
268 </TR> |
262 </TABLE> |
269 </TABLE> |
263 |
270 |
264 <P><!-- Created: Tue Mar 4 00:23:25 GMT 1997 --> |
271 <P><!-- Created: Tue Mar 4 00:23:25 GMT 1997 --> |
265 <!-- hhmts start --> |
272 <!-- hhmts start --> |
266 Last modified: Fri Dec 2 03:26:32 GMT 2011 |
273 Last modified: Tue Dec 6 08:41:27 GMT 2011 |
267 <!-- hhmts end --> |
274 <!-- hhmts end --> |
268 <a href="http://validator.w3.org/check/referer">[Validate this page.]</a> |
275 <a href="http://validator.w3.org/check/referer">[Validate this page.]</a> |
269 </BODY> |
276 </BODY> |
270 </HTML> |
277 </HTML> |