projects.html
author Christian Urban <christian dot urban at kcl dot ac dot uk>
Sat, 18 May 2013 07:22:44 +0100
changeset 194 a4418038199a
parent 125 d399003a53ca
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
    33
<H4>Email: christian dot urban at kcl dot ac dot uk,  Office: Strand Building S6.30</H4>
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
    34
<H4>If you are interested in a project, please send me an email and we can discuss details. Please include
50
Christian Urban <urbanc@in.tum.de>
parents: 48
diff changeset
    35
a short description about your programming skills and computer science background in your first email. 
Christian Urban <urbanc@in.tum.de>
parents: 48
diff changeset
    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
c4b954e76f0b updated
Christian Urban <urbanc@in.tum.de>
parents: 119
diff changeset
    46
  Sudoku solvers (see <a href="http://anytime.cs.umass.edu/aimath06/proceedings/P34.pdf">here</a>). 
119
91145e24e83d added link to sudoku
Christian Urban <urbanc@in.tum.de>
parents: 78
diff changeset
    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
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
    58
  <A HREF="http://www.cl.cam.ac.uk/research/hvg/isabelle/">Isabelle</A>. For this
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
    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
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
    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
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
    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
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
    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
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
    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
Christian Urban <urbanc@in.tum.de>
parents: 54
diff changeset
   109
  I can lend you my copy for the duration of the project). A very good overview article
Christian Urban <urbanc@in.tum.de>
parents: 54
diff changeset
   110
  about implementing compilers by 
Christian Urban <urbanc@in.tum.de>
parents: 54
diff changeset
   111
  <A HREF="http://tratt.net/laurie/">Laurie Tratt</A> is 
Christian Urban <urbanc@in.tum.de>
parents: 54
diff changeset
   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
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   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
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   120
  The naive algorithm would generate all suffix strings and sort them
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   121
  using a standard sorting algorithm, for example 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   122
  <A HREF="http://en.wikipedia.org/wiki/Quicksort">quicksort</A>. 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   123
  The problem is that
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   124
  this algorithm is not optimal for suffix sorting: it does not take into account that you sort
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   125
  suffixes and it also takes a quadratic amount of space. This is a 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   126
  huge problem if you have to sort strings of several Megabytes or even Gigabytes,
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   127
  as happens often in biotech and DNA data mining. Suffix sorting is also a crucial operation for the 
51
Christian Urban <urbanc@in.tum.de>
parents: 50
diff changeset
   128
  <A HREF="http://en.wikipedia.org/wiki/Burrows-Wheeler_transform">Burrows-Wheeler transform</A>
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   129
  on which the data compression algorithm of the popular 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   130
  <A HREF="http://en.wikipedia.org/wiki/Bzip2">bzip2</A>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   131
  program is based.
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   132
  </p>
43
a6c077ba850a added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   133
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   134
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   135
  There are more efficient algorithms for suffix sorting, for example 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   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 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   137
  <A HREF="http://ls11-www.cs.uni-dortmund.de/people/rahmann/teaching/ss2008/AlgorithmenAufSequenzen/09-walk-bwt.pdf">here</A>. 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   138
  However the most space efficient algorithm for suffix sorting  
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   139
  (<A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">here</A>) 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   140
  is horrendously complicated. Your task would be to understand it, and then implement it.
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   141
  </p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   142
  
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   143
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   144
  <B>Tasks:</B>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   145
  Start by reading the literature about suffix sorting. Then work through the
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   146
  12-page <A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">paper</A> 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   147
  explaining the horrendously complicated algorithm and implement it.
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   148
  Time permitting the work can include an implementation of the Burrows-Wheeler 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   149
  data compression. This project is for a good student, who likes to study in-depth 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   150
  algorithms. The project can be carried out in almost all programming languages,
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   151
  including C, Java, Scala, ML, Haskell and so on.
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   152
  </p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   153
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   154
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   155
  <B>Literature:</B> A good starting point for reading about suffix sorting is the 
71
e978feb5651a updated
Christian Urban <urbanc@in.tum.de>
parents: 58
diff changeset
   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. 
e978feb5651a updated
Christian Urban <urbanc@in.tum.de>
parents: 58
diff changeset
   157
  Another good introduction is 
e978feb5651a updated
Christian Urban <urbanc@in.tum.de>
parents: 58
diff changeset
   158
  <A HREF="http://people.unipmn.it/manzini/papers/esa02.pdf">here</A>, 
e978feb5651a updated
Christian Urban <urbanc@in.tum.de>
parents: 58
diff changeset
   159
  which gives also good pointers for why efficient suffix sorting
e978feb5651a updated
Christian Urban <urbanc@in.tum.de>
parents: 58
diff changeset
   160
  is practically relevant.
e978feb5651a updated
Christian Urban <urbanc@in.tum.de>
parents: 58
diff changeset
   161
  Two simple algorithms are described
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   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
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   163
  <A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">article</A> about in-place
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   164
  suffix sorting. The Burrows-Wheeler data compression is described 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   165
  <A HREF="http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-124.pdf">here</A>.
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   166
  </p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   167
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   168
<li> <H4>[CU4] Simplification with Equivalence Relations in the Isabelle Theorem Prover</H4>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   169
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   170
  <B>Description:</B>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   171
  In this project you have to extend the simplifier of the 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   172
  <A HREF="http://isabelle.in.tum.de/">Isabelle theorem prover</A>.  
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   173
  The simplifier is an important reasoning tool of this theorem prover: it 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   174
  replaces a term by another term that can be proved to be equal to it. However, 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   175
  currently the simplifier only rewrites terms according to equalities. 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   176
  Assuming &asymp; is an equivalence relation, the simplifier should also be able 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   177
  to rewrite terms according to &asymp;. Since equivalence relations occur 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   178
  frequently in automated reasoning, this extension would make the simplifier 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   179
  more powerful and useful. The hope is that your code can go into the
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   180
  code base of Isabelle.
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   181
  </p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   182
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   183
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   184
  <B>Tasks:</B>	
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   185
  Read the <A HREF="http://www.springerlink.com/content/x7041m1807738832/">paper</A>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   186
  about rewriting with equivalence relations. Get familiar with parts of the 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   187
  implementation of Isabelle (I will be of much help as I can). Implement
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   188
  the extension. This project is suitable for a student with a bit of math background.
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   189
  It requires knowledge of the functional programming language ML, which
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   190
  however can be learned quickly provided you have already written code
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   191
  in another functional programming language.
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   192
  </p>
43
a6c077ba850a added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   193
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   194
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   195
  <B>Literature:</B> A good starting point for reading about rewriting modulo equivalences 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   196
  is the paper <A HREF="http://www.springerlink.com/content/x7041m1807738832/">here</A>, 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   197
  which uses the ACL2 theorem prover. The implementation of the Isabelle theorem
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   198
  prover is described in much detail in this 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   199
  <A HREF="http://www.inf.kcl.ac.uk/staff/urbanc/Cookbook/">programming tutorial</A>.
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   200
  The standard reference for ML is
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   201
  <A HREF="http://www.cl.cam.ac.uk/~lp15/MLbook/">here</A> (I can lend you my copy 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   202
  of this book for the duration of the project).
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   203
  </p>
43
a6c077ba850a added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   204
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   205
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   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
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   208
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   209
  <B>Description:</B>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   210
  Lexing and parsing are usually done using automated tools, like 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   211
  <A HREF="http://en.wikipedia.org/wiki/Lex_programming_tool">lex</A> and 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   212
  <A HREF="http://en.wikipedia.org/wiki/Yacc">yacc</A>. The problem 
47
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
   213
  with them is that they "work when they work", but if they do not, then they are
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   214
  <A HREF="http://en.wikipedia.org/wiki/Black_box">black boxes</A>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   215
  which are difficult to debug and change. They are really quite 
47
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
   216
  clumsy to the point that Might and Darais wrote a paper titled 
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   217
  "<A HREF="http://arxiv.org/pdf/1010.5023v1">Yacc is dead</A>".</p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   218
 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   219
  <p>
47
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
   220
  There is a simple algorithm for regular expression matching (that is lexing).
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   221
  This algorithm was introduced by 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   222
  <A HREF="http://en.wikipedia.org/wiki/Janusz_Brzozowski_(computer_scientist)">Brzozowski</A> 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   223
  in 1964. It is based on the notion of derivatives of regular expressions and 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   224
  has proved <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">useful</A> 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   225
  for practical lexing. Last year the notion of derivatives was extended by 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   226
  <A HREF="http://matt.might.net/papers/might2011derivatives.pdf">Might et al</A>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   227
  to <A HREF="http://en.wikipedia.org/wiki/Context-free_grammar">context free grammars</A> 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   228
  and parsing.
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   229
  </p>		      
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   230
  
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   231
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   232
  <B>Tasks:</B> Get familiar with the two algorithms and implement them. Regular
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   233
  expression matching is relatively simple; parsing with derivatives is the 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   234
  harder part. Therefore you should empirically evaluate this part and
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   235
  tune your implementation. The project can be carried out in almost all programming 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   236
  languages, including C, Java, Scala, ML, Haskell and so on.
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   237
  </p>
43
a6c077ba850a added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   238
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   239
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   240
  <B>Literature:</B> This 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   241
  <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">paper</A> 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   242
  gives a modern introduction to derivative based lexing. Derivative-based
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   243
  parsing is explained <A HREF="http://arxiv.org/pdf/1010.5023v1">here</A>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   244
  and <A HREF="http://matt.might.net/papers/might2011derivatives.pdf">here</A>.
125
d399003a53ca added links
Christian Urban <urbanc@in.tum.de>
parents: 122
diff changeset
   245
  A proposal for derivative PEG-parsing is 
d399003a53ca added links
Christian Urban <urbanc@in.tum.de>
parents: 122
diff changeset
   246
  <A HREF="http://fmota.eu/2011/01/07/PEG-derivatives.html">here</a>. The mailing
d399003a53ca added links
Christian Urban <urbanc@in.tum.de>
parents: 122
diff changeset
   247
  list about PEGs is <A HREF="https://lists.csail.mit.edu/pipermail/peg/">here</A>.
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   248
  </p>  
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   249
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   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
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   252
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   253
  <B>Description:</B> 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   254
  Solving the problem of deciding equivalence of regular expressions can be used
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   255
  to decide a number of problems in automated reasoning. Therefore one likes to
47
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
   256
  have a method for equivalence checking that is as fast as possible. There have
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
   257
  been a number of algorithms proposed in the past, but one based on a method
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
   258
  by Antimirov and Mosses seems relatively simple and easy to implement.
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   259
  </p>		      
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   260
  
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   261
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   262
  <B>Tasks:</B>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   263
  The task is to implement the algorithm by Antimirov and Mosses and compare it to
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   264
  other methods. Hopefully the algorithm can be tuned to be faster than other
47
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
   265
  methods. The project can be carried out in almost all programming languages, but
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
   266
  as usual functional programming languages such Scala, ML, Haskell have an edge
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
   267
  for this kind of problems.
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   268
  </p>
43
a6c077ba850a added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   269
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   270
  <p>
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   271
  <B>Literature:</B>
54
7386f513c412 updated
Christian Urban <urbanc@in.tum.de>
parents: 51
diff changeset
   272
  Central to this project are the papers <A HREF="http://www.dcc.fc.up.pt/~nam/publica/ijcs08.pdf">here</A>
7386f513c412 updated
Christian Urban <urbanc@in.tum.de>
parents: 51
diff changeset
   273
  and <A HREF="http://www.dcc.fc.up.pt/~nam/publica/51480046.pdf">here</A>.
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   274
  Other methods have been described, for example, 
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   275
  <A HREF="http://www4.informatik.tu-muenchen.de/~krauss/papers/rexp.pdf">here</A>.
47
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
   276
  A relatively complicated method, based on automata, is described 
Christian Urban <urbanc@in.tum.de>
parents: 44
diff changeset
   277
  <A HREF="http://sardes.inrialpes.fr/~braibant/atbr/">here</A>.
44
790a40046dc8 improved
Christian Urban <urbanc@in.tum.de>
parents: 43
diff changeset
   278
  </p>  
43
a6c077ba850a added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   279
58
Christian Urban <urbanc@in.tum.de>
parents: 57
diff changeset
   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: 55
diff changeset
   281
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff changeset
   282
  <p>
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff changeset
   283
  <B>Literature:</b>
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff 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: 55
diff 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: 55
diff changeset
   286
  also some good books about computer players, for example:
121
a101c4cccc4b updated
Christian Urban <urbanc@in.tum.de>
parents: 120
diff changeset
   287
  <table cellspacing="10">
122
7ff668fb65e8 updated
Christian Urban <urbanc@in.tum.de>
parents: 121
diff changeset
   288
  <tr><td><i>Artificial Intelligence: A Modern Approach</i> by S. Russel and P. Norvig, Prentice Hall, 2003 
7ff668fb65e8 updated
Christian Urban <urbanc@in.tum.de>
parents: 121
diff changeset
   289
  (a standard textbook about search strategies).
120
c4b954e76f0b updated
Christian Urban <urbanc@in.tum.de>
parents: 119
diff changeset
   290
  </td></tr>
122
7ff668fb65e8 updated
Christian Urban <urbanc@in.tum.de>
parents: 121
diff changeset
   291
  <tr><td><i>Principles of Artificial Intelligence</i> by N. J. Nilsson, Springer Verlag, 1980 
7ff668fb65e8 updated
Christian Urban <urbanc@in.tum.de>
parents: 121
diff changeset
   292
  (a standard textbook about search strategies).
120
c4b954e76f0b updated
Christian Urban <urbanc@in.tum.de>
parents: 119
diff changeset
   293
  </td></tr>
c4b954e76f0b updated
Christian Urban <urbanc@in.tum.de>
parents: 119
diff changeset
   294
122
7ff668fb65e8 updated
Christian Urban <urbanc@in.tum.de>
parents: 121
diff changeset
   295
  <tr><td><i>Computer Game-Playing: Theory and Practice</i> by M. Bramer, Ellis Horwood Ltd, 1983
7ff668fb65e8 updated
Christian Urban <urbanc@in.tum.de>
parents: 121
diff changeset
   296
  (considers techniques used for programming a variety of games: Chess, Go, Scrabble, Billiards, 
7ff668fb65e8 updated
Christian Urban <urbanc@in.tum.de>
parents: 121
diff changeset
   297
   Othello, etc; includes theoretical issues about game searching).
57
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
  <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
   300
  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
   301
  </td></tr>
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff changeset
   302
  <tr><td>
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff 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: 55
diff changeset
   304
  </td></tr>
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff changeset
   305
  <tr><td>
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff 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: 55
diff changeset
   307
  by D.N.L. Levy, Simon and Schuster, 1983.
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff changeset
   308
  </td></tr>
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff changeset
   309
  </table>
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff changeset
   310
  </p>
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff changeset
   311
77
40871e621ff9 added CU8
Christian Urban <urbanc@in.tum.de>
parents: 71
diff changeset
   312
<li><h4>[CU8] Webserver for a Revision Control System</h4>
40871e621ff9 added CU8
Christian Urban <urbanc@in.tum.de>
parents: 71
diff changeset
   313
78
Christian Urban <urbanc@in.tum.de>
parents: 77
diff changeset
   314
  <p>
Christian Urban <urbanc@in.tum.de>
parents: 77
diff changeset
   315
    Modern revision control systems are
Christian Urban <urbanc@in.tum.de>
parents: 77
diff changeset
   316
    <A HREF="http://mercurial.selenic.com/">mercurial</A> and
Christian Urban <urbanc@in.tum.de>
parents: 77
diff changeset
   317
    <A HREF="http://git-scm.com/">git</A>.
Christian Urban <urbanc@in.tum.de>
parents: 77
diff changeset
   318
  </p>
77
40871e621ff9 added CU8
Christian Urban <urbanc@in.tum.de>
parents: 71
diff changeset
   319
78
Christian Urban <urbanc@in.tum.de>
parents: 77
diff changeset
   320
  <p>
Christian Urban <urbanc@in.tum.de>
parents: 77
diff changeset
   321
    <b>Task:</b> Build a webserver for a revision control system 
Christian Urban <urbanc@in.tum.de>
parents: 77
diff changeset
   322
    that allows user management. 
Christian Urban <urbanc@in.tum.de>
parents: 77
diff changeset
   323
  </p>
57
62e8e9ac4114 added pointers to gameplayers
Christian Urban <urbanc@in.tum.de>
parents: 55
diff 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
e978feb5651a updated
Christian Urban <urbanc@in.tum.de>
parents: 58
diff changeset
   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>