diff -r 5fe9c359135f -r a6c077ba850a projects.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/projects.html Thu Dec 01 23:36:19 2011 +0000 @@ -0,0 +1,164 @@ + + + +Christian Urban + + + + + + + + + + + + + +
+ +

2011/12 MSc Individual Projects

+

Supervisor: Christian Urban

+

Email: @kcl Office: Strand Building S6.30

+ +
    +
  • [CU1] Implementing a SAT-Solver in a Functional Programming Language

    + +

    Description: + SAT-solver search for satisfying assignments of boolean formulas. Although this + is a computationally hard problem (NP-complete), + modern SAT-solvers routinely solve boolean formulas with 100,000 and more variables. + Application areas of SAT-solver are manifold: they range from hardware verification to + Sudoku solvers. Every 2 years there is a competition of the best SAT-solvers in the world.

    + +

    + Most SAT-solvers are written in C. The aim of this project is to design and implement + a SAT-solver in a functional programming language (preferably + ML, but + Haskell, + Scala, + OCaml, ... are also OK). Starting point is + the open source SAT-solver MiniSat (available here). + The long-term hope is that your implementation becomes part of the interactive theorem prover + Isabelle.

    + +

    + Tasks: Understand MiniSat, design and code a SAT-solver in ML, + empirical evaluation and tuning of your code.

    + +

    + Literature: A good starting point for reading about SAT-solving is the handbook + article in here. + MiniSat is explained here and + here. The standard reference for ML is + here (I can lend you my copy + of this book for the duration of the project). The best free implementation of ML is + PolyML. +

    + +
  • [CU2] A Compiler for System F

    + +

    Description: + System F is a mini programming language, + which is often used to study the theory behind programming languages, but is also used as + a core-language of functional programming languages (for example + Haskell). The language is small + enough to implement in a reasonable amount of time a compiler to an + idealised assembly language (preferably + TAL) or an abstract machine. + This has been explained in full detail in a PhD-thesis by Louis-Julien Guillemette + (available in English here). He used Haskell + as his implementation language. Other choices are of course possible. +

    + +

    + Tasks: + Read the relevant literature and implement the various components of a compiler + (parser, intermediate languages, simulator for the idealised assembly language). + This project is for a good student with an interest in programming languages, + who can also translate abstract ideas into code. If it is too difficult, the project can + easily be scaled back to the + simply-typed + lambda calculus (which is simpler than + System F) or only some components of the compiler are implemented. +

    + +

    + Literature: + The PhD-thesis by Louis-Julien Guillemette is required reading. A shorter + paper about this subject is available here. + A good starting point for TAL is here. + There is a lot of literature about compilers + (for example this book - + I can lend you my copy for the duration of the project). +

    + +
  • [CU3] Sorting Suffixes

    + +

    Description: Given a string, take all its suffixes, and sort them. + This is often also called suffix + array sorting. It sound simple, but there are some difficulties. + The naive algorithm would generate all (suffix) strings and sort them + using a standard sorting algorithm, for example quick-sort. Unfortunately, + this algorithm is not optimal (it does not take into account that you sort + suffixes) and it also takes an quadratic amount of space, which is a + problem if you have to sort strings of several Mega-Bytes or even Giga-Bytes + (happens often in biotech DNA information.

    + + Aim: the notion of index on a text is central in many methods for text + processing and for the management of textual databases. Suffix Arrays is one + of these methods based on the sorted list of suffixes of the input text. The + project consists in implementing a linear-time sorting algorithm and other + elements related to Suffix Array construction and to Burrows-Wheeler text + compression. Plan: study of the sorting problem in the literature starting + with the reference below. Implementation of the sorting algorithm and the + LCP computation to obtain a Suffix Array construction software. Then, using + this work, implementation of the algorithms described in the second + reference below. Deliverables: report, suffix sorting and associated + software and their documentation. + + References: + J. Kärkkäinen and P. Sanders, Simple linear work suffix array construction, in ICALP'03, LNCS 2719, Spinger, 2003, pp. 943--955. + M. Crochemore, J. Désarménien and D. Perrin, A note on the Burrows-Wheeler transformation, Theoret. Comput. Sci., 2005, to appear. + + There is a horrendously complicated algorithm for solving these problems. + Your task would be to understand it, and then implement it. + +

  • [CU 4] Simplification modulo Equivalences in Isabelle
    + In this project you have to extend the simplifier of the Isabelle theorem + prover. Currently, the simplifier only rewrites terms according to equalities + l = r. Provided ~ is an equivalence relation, the simplifier should also + be able to rewrite terms according to equivalences of the form l ~ r. + This project requires knowledge of the functional programming language ML. + +
  • [CU 5] Parsing with Derivatives
    + + Derivatives can be used to implement a regular expression matcher. In + this project you have to apply this technique to parsing. The starting + point for this project is the paper "Yacc is Dead" by Matthew Might. + +
  • [CU 6] Equivalence Checking of Regular Expression using Antimirov's Method
    + +
+
+ +

+ +Last modified: Thu Dec 1 18:10:37 GMT 2011 + +[Validate this page.] + +