deleted
authorChristian Urban <christian dot urban at kcl dot ac dot uk>
Thu, 05 May 2016 09:40:48 +0100
changeset 431 a1e588fe2f38
parent 430 9dae6e101cde
child 432 87c1ad539fc9
deleted
projects.html
travelling.html
--- a/projects.html	Wed May 04 12:04:16 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,336 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HEAD>
-<TITLE>Christian Urban</TITLE>
-<BASE HREF="http://www.inf.kcl.ac.uk/staff/urbanc/">
-<script type="text/javascript" src="striper.js"></script>
-<link rel="stylesheet" href="nominal.css">
-</HEAD>
-<BODY TEXT="#000000" 
-      BGCOLOR="#4169E1" 
-      LINK="#0000EF" 
-      VLINK="#51188E" 
-      ALINK="#FF0000"
-      ONLOAD="striper('ul','striped','li','first,second')">
-
-
-
-<TABLE WIDTH="100%" 
-       BGCOLOR="#4169E1" 
-       BORDER="0"   
-       FRAME="border"  
-       CELLPADDING="10"     
-       CELLSPACING="2"
-       RULES="all">
-
-<TR>
-<TD BGCOLOR="#FFFFFF" 
-    WIDTH="75%" 
-    VALIGN="TOP">
-
-<H2>2011/12 MSc Individual Projects</H2>
-<H4>Supervisor: Christian Urban</H4> 
-<H4>Email: christian dot urban at kcl dot ac dot uk,  Office: Strand Building S6.30</H4>
-<H4>If you are interested in a project, please send me an email and we can discuss details. Please include
-a short description about your programming skills and computer science background in your first email. 
-I will also need your King's username in order to book the project for you. Thanks.</H4> 
-
-<ul class="striped">
-<li> <H4>[CU1] Implementing a SAT-Solver in a Functional Programming Language</H4>
-
-  <p><B>Description:</b>  
-  SAT-solver search for satisfying assignments of boolean formulas. Although this 
-  is a computationally hard problem (<A HREF="http://en.wikipedia.org/wiki/NP-complete">NP-complete</A>), 
-  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 (see <a href="http://anytime.cs.umass.edu/aimath06/proceedings/P34.pdf">here</a>). 
-  Every 2 years there is a competition of the best SAT-solvers in the world.</p> 
-
-  <p>
-  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 
-  <A HREF="http://en.wikipedia.org/wiki/Standard_ML">ML</A>, but 
-  <A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A>, 
-  <A HREF="http://www.scala-lang.org/">Scala</A>,
-  <A HREF="http://caml.inria.fr/">OCaml</A>, ... are also OK). Starting point is 
-  the open source SAT-solver MiniSat (available <A HREF="http://minisat.se/Main.html">here</A>). 
-  The long-term hope is that your implementation becomes part of the interactive theorem prover 
-  <A HREF="http://www.cl.cam.ac.uk/research/hvg/isabelle/">Isabelle</A>. For this
-  the SAT-solver needs to be implemented in ML.</p> 
-
-  <p>
-  <B>Tasks:</B> Understand MiniSat, design and code a SAT-solver in ML, 
-  empirical evaluation and tuning of your code.</p>
-
-  <p>
-  <B>Literature:</B> A good starting point for reading about SAT-solving is the handbook
-  article <A HREF="http://www.cs.cornell.edu/gomes/papers/SATSolvers-KR-Handbook.pdf">here</A>.
-  MiniSat is explained <A HREF="http://minisat.se/downloads/MiniSat.pdf">here</A> and
-  <A HREF="http://minisat.se/Papers.html">here</A>. The standard reference for ML is
-  <A HREF="http://www.cl.cam.ac.uk/~lp15/MLbook/">here</A> (I can lend you my copy 
-  of this book for the duration of the project). The best free implementation of ML is 
-  <A HREF="http://www.polyml.org/">PolyML</A>.
-  </p>
-
-<li> <H4>[CU2] A Compiler for System F</H4>
-
-  <p><b>Description:</b> 
-  <A HREF="http://en.wikipedia.org/wiki/System_F">System F</A> 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 
-  <A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A>). The language is small
-  enough to implement in a reasonable amount of time a compiler to an
-  idealised assembly language (preferably 
-  <A HREF="http://en.wikipedia.org/wiki/Typed_assembly_language">TAL</A>) or an abstract machine.
-  This has been explained in full detail in a PhD-thesis by  Louis-Julien Guillemette
-  (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>
-  as his implementation language. Other choices are possible.
-  </p>
-
-  <p>
-  <b>Tasks:</b>
-  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
-  be easily scaled down to the 
-  <A HREF="http://en.wikipedia.org/wiki/Simply_typed_lambda_calculus">simply-typed 
-  lambda calculus</A> (which is simpler than
-  System F) or to cover only some components of the compiler.
-  </p> 
-
-  <p>
-  <B>Literature:</B>
-  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
-  paper about this subject is available <A HREF="http://www.iro.umontreal.ca/~monnier/icfp08.pdf">here</A>.
-  A good starting point for TAL is <A HREF="http://www.cs.cornell.edu/talc/papers/tal-tr.pdf">here</A>.
-  There is a lot of literature about compilers 
-  (for example <A HREF="http://www.cs.princeton.edu/~appel/papers/cwc.html">this book</A> -
-  I can lend you my copy for the duration of the project). A very good overview article
-  about implementing compilers by 
-  <A HREF="http://tratt.net/laurie/">Laurie Tratt</A> is 
-  <A HREF="http://tratt.net/laurie/tech_articles/articles/how_difficult_is_it_to_write_a_compiler">here</A>.
-  </p>
-
-  <li> <H4>[CU3] Sorting Suffixes</H4>
-  
-  <p><b>Description:</b> Given a string, take all its suffixes, and sort them.
-  This is often called <A HREF="http://en.wikipedia.org/wiki/Suffix_array">suffix 
-  array sorting</A>. 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 
-  <A HREF="http://en.wikipedia.org/wiki/Quicksort">quicksort</A>. 
-  The problem is that
-  this algorithm is not optimal for suffix sorting: it does not take into account that you sort
-  suffixes and it also takes a quadratic amount of space. This is a 
-  huge problem if you have to sort strings of several Megabytes or even Gigabytes,
-  as happens often in biotech and DNA data mining. Suffix sorting is also a crucial operation for the 
-  <A HREF="http://en.wikipedia.org/wiki/Burrows-Wheeler_transform">Burrows-Wheeler transform</A>
-  on which the data compression algorithm of the popular 
-  <A HREF="http://en.wikipedia.org/wiki/Bzip2">bzip2</A>
-  program is based.
-  </p>
-
-  <p>
-  There are more efficient algorithms for suffix sorting, for example 
-  <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 
-  <A HREF="http://ls11-www.cs.uni-dortmund.de/people/rahmann/teaching/ss2008/AlgorithmenAufSequenzen/09-walk-bwt.pdf">here</A>. 
-  However the most space efficient algorithm for suffix sorting  
-  (<A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">here</A>) 
-  is horrendously complicated. Your task would be to understand it, and then implement it.
-  </p>
-  
-  <p>
-  <B>Tasks:</B>
-  Start by reading the literature about suffix sorting. Then work through the
-  12-page <A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">paper</A> 
-  explaining the horrendously complicated algorithm and implement it.
-  Time permitting the work can include an implementation of the Burrows-Wheeler 
-  data compression. This project is for a good student, who likes to study in-depth 
-  algorithms. The project can be carried out in almost all programming languages,
-  including C, Java, Scala, ML, Haskell and so on.
-  </p>
-
-  <p>
-  <B>Literature:</B> A good starting point for reading about suffix sorting is the 
-  <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. 
-  Another good introduction is 
-  <A HREF="http://people.unipmn.it/manzini/papers/esa02.pdf">here</A>, 
-  which gives also good pointers for why efficient suffix sorting
-  is practically relevant.
-  Two simple algorithms are described
-  <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
-  <A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">article</A> about in-place
-  suffix sorting. The Burrows-Wheeler data compression is described 
-  <A HREF="http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-124.pdf">here</A>.
-  </p>
-
-<li> <H4>[CU4] Simplification with Equivalence Relations in the Isabelle Theorem Prover</H4>
-  <p>
-  <B>Description:</B>
-  In this project you have to extend the simplifier of the 
-  <A HREF="http://isabelle.in.tum.de/">Isabelle theorem prover</A>.  
-  The simplifier is an important reasoning tool of this theorem prover: it 
-  replaces a term by another term that can be proved to be equal to it. However, 
-  currently the simplifier only rewrites terms according to equalities. 
-  Assuming &asymp; is an equivalence relation, the simplifier should also be able 
-  to rewrite terms according to &asymp;. Since equivalence relations occur 
-  frequently in automated reasoning, this extension would make the simplifier 
-  more powerful and useful. The hope is that your code can go into the
-  code base of Isabelle.
-  </p>
-
-  <p>
-  <B>Tasks:</B>	
-  Read the <A HREF="http://www.springerlink.com/content/x7041m1807738832/">paper</A>
-  about rewriting with equivalence relations. Get familiar with parts of the 
-  implementation of Isabelle (I will be of much help as I can). Implement
-  the extension. This project is suitable for a student with a bit of math background.
-  It requires knowledge of the functional programming language ML, which
-  however can be learned quickly provided you have already written code
-  in another functional programming language.
-  </p>
-
-  <p>
-  <B>Literature:</B> A good starting point for reading about rewriting modulo equivalences 
-  is the paper <A HREF="http://www.springerlink.com/content/x7041m1807738832/">here</A>, 
-  which uses the ACL2 theorem prover. The implementation of the Isabelle theorem
-  prover is described in much detail in this 
-  <A HREF="http://www.inf.kcl.ac.uk/staff/urbanc/Cookbook/">programming tutorial</A>.
-  The standard reference for ML is
-  <A HREF="http://www.cl.cam.ac.uk/~lp15/MLbook/">here</A> (I can lend you my copy 
-  of this book for the duration of the project).
-  </p>
-
-
-<li><h4>[CU5] Lexing and Parsing with Derivatives</h4>
-
-  <p>
-  <B>Description:</B>
-  Lexing and parsing are usually done using automated tools, like 
-  <A HREF="http://en.wikipedia.org/wiki/Lex_programming_tool">lex</A> and 
-  <A HREF="http://en.wikipedia.org/wiki/Yacc">yacc</A>. The problem 
-  with them is that they "work when they work", but if they do not, then they are
-  <A HREF="http://en.wikipedia.org/wiki/Black_box">black boxes</A>
-  which are difficult to debug and change. They are really quite 
-  clumsy to the point that Might and Darais wrote a paper titled 
-  "<A HREF="http://arxiv.org/pdf/1010.5023v1">Yacc is dead</A>".</p>
- 
-  <p>
-  There is a simple algorithm for regular expression matching (that is lexing).
-  This algorithm was introduced by 
-  <A HREF="http://en.wikipedia.org/wiki/Janusz_Brzozowski_(computer_scientist)">Brzozowski</A> 
-  in 1964. It is based on the notion of derivatives of regular expressions and 
-  has proved <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">useful</A> 
-  for practical lexing. Last year the notion of derivatives was extended by 
-  <A HREF="http://matt.might.net/papers/might2011derivatives.pdf">Might et al</A>
-  to <A HREF="http://en.wikipedia.org/wiki/Context-free_grammar">context free grammars</A> 
-  and parsing.
-  </p>		      
-  
-  <p>
-  <B>Tasks:</B> Get familiar with the two algorithms and implement them. Regular
-  expression matching is relatively simple; parsing with derivatives is the 
-  harder part. Therefore you should empirically evaluate this part and
-  tune your implementation. The project can be carried out in almost all programming 
-  languages, including C, Java, Scala, ML, Haskell and so on.
-  </p>
-
-  <p>
-  <B>Literature:</B> This 
-  <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">paper</A> 
-  gives a modern introduction to derivative based lexing. Derivative-based
-  parsing is explained <A HREF="http://arxiv.org/pdf/1010.5023v1">here</A>
-  and <A HREF="http://matt.might.net/papers/might2011derivatives.pdf">here</A>.
-  A proposal for derivative PEG-parsing is 
-  <A HREF="http://fmota.eu/2011/01/07/PEG-derivatives.html">here</a>. The mailing
-  list about PEGs is <A HREF="https://lists.csail.mit.edu/pipermail/peg/">here</A>.
-  </p>  
-
-<li> <H4>[CU6] Equivalence Checking of Regular Expressions using the Method by Antimirov and Mosses</H4>
-
-  <p>
-  <B>Description:</B> 
-  Solving the problem of deciding equivalence of regular expressions can be used
-  to decide a number of problems in automated reasoning. Therefore one likes to
-  have a method for equivalence checking that is as fast as possible. There have
-  been a number of algorithms proposed in the past, but one based on a method
-  by Antimirov and Mosses seems relatively simple and easy to implement.
-  </p>		      
-  
-  <p>
-  <B>Tasks:</B>
-  The task is to implement the algorithm by Antimirov and Mosses and compare it to
-  other methods. Hopefully the algorithm can be tuned to be faster than other
-  methods. The project can be carried out in almost all programming languages, but
-  as usual functional programming languages such Scala, ML, Haskell have an edge
-  for this kind of problems.
-  </p>
-
-  <p>
-  <B>Literature:</B>
-  Central to this project are the papers <A HREF="http://www.dcc.fc.up.pt/~nam/publica/ijcs08.pdf">here</A>
-  and <A HREF="http://www.dcc.fc.up.pt/~nam/publica/51480046.pdf">here</A>.
-  Other methods have been described, for example, 
-  <A HREF="http://www4.informatik.tu-muenchen.de/~krauss/papers/rexp.pdf">here</A>.
-  A relatively complicated method, based on automata, is described 
-  <A HREF="http://sardes.inrialpes.fr/~braibant/atbr/">here</A>.
-  </p>  
-
-<li> <H4>[CU7] Game-Playing Engine for Five-In-A-Row on a Large Board</H4>
-
-  <p>
-  <B>Literature:</b>
-  There is a web-page with various pointers to computer players
-  <A HREF="http://webdocs.cs.ualberta.ca/~games/">here</A>. There are
-  also some good books about computer players, for example:
-  <table cellspacing="10">
-  <tr><td><i>Artificial Intelligence: A Modern Approach</i> by S. Russel and P. Norvig, Prentice Hall, 2003 
-  (a standard textbook about search strategies).
-  </td></tr>
-  <tr><td><i>Principles of Artificial Intelligence</i> by N. J. Nilsson, Springer Verlag, 1980 
-  (a standard textbook about search strategies).
-  </td></tr>
-
-  <tr><td><i>Computer Game-Playing: Theory and Practice</i> by M. Bramer, Ellis Horwood Ltd, 1983
-  (considers techniques used for programming a variety of games: Chess, Go, Scrabble, Billiards, 
-   Othello, etc; includes theoretical issues about game searching).
-  </td></tr>
-  <tr><td><i>Chips Challenging Champions: Games, Computers and Artificial Intelligence</i> by
-  J. Schaeffer and H.J. van den Herik, North Holland, 2002.
-  </td></tr>
-  <tr><td>
-  <i>Artificial Intelligence for Games</i> by I. Millington and J. Funge, Morgan Kaufmann, 2009.
-  </td></tr>
-  <tr><td>
-  <i>Computer Gamesmanship: The Complete Guide to Creating and Structuring Intelligent Games Programs</i> 
-  by D.N.L. Levy, Simon and Schuster, 1983.
-  </td></tr>
-  </table>
-  </p>
-
-<li><h4>[CU8] Webserver for a Revision Control System</h4>
-
-  <p>
-    Modern revision control systems are
-    <A HREF="http://mercurial.selenic.com/">mercurial</A> and
-    <A HREF="http://git-scm.com/">git</A>.
-  </p>
-
-  <p>
-    <b>Task:</b> Build a webserver for a revision control system 
-    that allows user management. 
-  </p>
-
-</ul>
-</TD>
-</TR>
-</TABLE>
-
-<P><!-- Created: Tue Mar  4 00:23:25 GMT 1997 -->
-<!-- hhmts start -->
-Last modified: Wed Jan 11 16:30:03 GMT 2012
-<!-- hhmts end -->
-<a href="http://validator.w3.org/check/referer">[Validate this page.]</a>
-</BODY>
-</HTML>
--- a/travelling.html	Wed May 04 12:04:16 2016 +0100
+++ b/travelling.html	Thu May 05 09:40:48 2016 +0100
@@ -306,9 +306,7 @@
      (Krakow, 2 - 5 May) 
 <LI> Talk at the Natural Deduction meeting in Rio de Janeiro (30 June - 7 July,
      slides [<A HREF="http://www.inf.kcl.ac.uk/staff/urbanc/Slides/slides-rio.ps.gz">ps.gz</A>]) 
-<LI> Summer School 
-<A HREF="http://www4.informatik.tu-muenchen.de/div/summerschool/">Marktoberdorf</A> 
-(24 July - 5 August)
+<LI> Summer School Marktoberdorf (24 July - 5 August)
 </ul>
 
 <H5>2000</H5>
@@ -359,8 +357,7 @@
       <A HREF="http://orchid.inf.tu-dresden.de/gk-spezifikation/index.html">
       Graduate College</A> Meeting held by the University in Dresden
       (Reinhartsdorf/S&auml;chsische Schweiz, 17 - 21 February)
-<LI>  <A HREF="http://www4.informatik.tu-muenchen.de/div/summerschool/">Summer School 
-      Marktoberdorf on Computational Logic</A> (29 July - 10 August)  
+<LI>  Summer School Marktoberdorf on Computational Logic (29 July - 10 August)  
 <LI>  Problems and Advances in the Semantics of Linear Logic 
       (Utrecht, the Netherlands, 28 - 29 November)   
 </ul>