updated
authorChristian Urban <urbanc@in.tum.de>
Sat, 17 Nov 2012 13:56:30 +0000
changeset 164 d99c0026ebaf
parent 163 622c47857b69
child 165 89c9fcb211a8
updated
msc-projects-12.html
--- a/msc-projects-12.html	Sat Nov 17 11:33:35 2012 +0000
+++ b/msc-projects-12.html	Sat Nov 17 13:56:30 2012 +0000
@@ -47,7 +47,7 @@
   <p>
   <B>Description:</b>  
   <A HREF="http://en.wikipedia.org/wiki/Regular_expression">Regular expressions</A> 
-  are extremely useful for many text-processing tasks...finding patterns in texts,
+  are extremely useful for many text-processing tasks such as finding patterns in texts,
   lexing programs, syntax highlighting and so on. Given that regular expressions were
   introduced in 1950 by <A HREF="http://en.wikipedia.org/wiki/Stephen_Cole_Kleene">Stephen Kleene</A>, you might think 
   regular expressions have since been studied and implemented to death. But you would definitely be mistaken: in fact they are still
@@ -73,7 +73,7 @@
   <A HREF="http://www.scala-lang.org/">Scala</A> (and also Java) are almost immune from such
   attacks as they can deal with strings of up to 4,300 <code>a</code>s in less than a second. But if you scale
   the regular expression and string further to, say, 4,600 <code>a</code>s, then you get a <code>StackOverflowError</code> 
-  potentially chrashing your program.
+  potentially crashing your program.
   </p>
 
   <p>
@@ -82,9 +82,9 @@
   regular expression matcher in Scala. It is not as fast as the official one in Scala, but
   it can match up to 11,000 <code>a</code>s in less than 5 seconds  without raising any exception
   (remember Python and Ruby both need nearly 30 seconds to process 28(!) <code>a</code>s, and Scala's
-  offical matcher maxes out at 4,600 <code>a</code>s). My matcher is approximately
+  official matcher maxes out at 4,600 <code>a</code>s). My matcher is approximately
   85 lines of code and based on the concept of 
-  <A HREF="http://lambda-the-ultimate.org/node/2293">derivatives of regular experssions</A>.
+  <A HREF="http://lambda-the-ultimate.org/node/2293">derivatives of regular expressions</A>.
   These derivatives were introduced in 1964 by <A HREF="http://en.wikipedia.org/wiki/Janusz_Brzozowski_(computer_scientist)">
   Janusz Brzozowski</A>, but according to this 
   <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">paper</A> had been lost in the &quot;sands of time&quot;.
@@ -143,17 +143,36 @@
 <li> <H4>[CU2] Automata Theory in Your Web-Browser</H4>
 
 <p>
-There are a number of classic algorithms in automata theory (such as the transformation of regular
-expressions into NFAs and DFAs, automata minimisation, subset construction). All these algorithms involve a fair 
-amount of calculations, which cannot be easily done by hand. There are a few web applications that annimate these 
+This project is about web-programming (but not in Java):
+There are a number of classic algorithms in automata theory (such as the 
+<A HREF="http://hackingoff.com/compilers/regular-expression-to-nfa-dfa">transformation</A> of regular
+expressions into NFAs and DFAs, 
+<A HREF="http://en.wikipedia.org/wiki/DFA_minimization">automata minimisation</A>, 
+<A HREF="http://en.wikipedia.org/wiki/Powerset_construction">subset construction</A>). 
+All these algorithms involve a fair 
+amount of calculations, which cannot be easily done by hand. There are a few web applications, typically
+written in <A HREF="http://en.wikipedia.org/wiki/JavaScript">Javascript</A>,  that animate these 
 calculations, for example <A HREF="http://hackingoff.com/compilers/regular-expression-to-nfa-dfa">this one<A/>.
+But they all have their deficiencies and can be improved with more modern technology.
 </p>
 
 <p>
-There now many useful libraries for Javascript, for example, this one for graphs. There are also
-a number of new programming languages targetting Javascript. This project is for someone who
-want to get to know these languges by implementing and animating algorithms from automata
-theory or parsing.
+There now many useful libraries for JavaScript, for example, this 
+<A HREF="http://getspringy.com">one</A> for graphs or this 
+<A HREF="http://demos.bonsaijs.org/demos/star/index.html">one</A> for graphics. 
+
+There are also
+a number of new programming languages targeting JavaScript, for example
+<A HREF="http://www.typescriptlang.org">TypeScript</A>,
+<A HREF="http://coffeescript.org">CoffeeScript</A>, 
+<A HREF="http://www.dartlang.org">Dart</A>,
+<A HREF="http://scriptsharp.com">Script#</A>,
+<A HREF="http://clojure.org">Clojure</A>
+ and so on.
+The task in this project is to use a web-programming
+language and suitable library to animate algorithms from automata theory (and also parsing, if wanted).
+This project is for someone who
+want to get to know these new languages.
 </p>
 
   <B>Literature:</B> 
@@ -162,9 +181,10 @@
 
 <p>
   <B>Skills:</B> 
-  This is a project for a student with good programming skills. 
-  JavaScript or a similar web-programming language seems to be best suited 
-  for this project. Some knowledge in HTML and CSS cannot hurt either.
+  This is a project for a student with very good programming 
+  and <A HREF="http://en.wikipedia.org/wiki/Hacker_(programmer_subculture)">hacking</A> skills. 
+  Some knowledge in JavaScript, HTML and CSS cannot hurt The algorithms from automata
+  theory are fairly standard material.
   </p>
 
 
@@ -364,14 +384,14 @@
   <p>
   However, there is one restriction that makes this project harder than it seems
   as first sight. The department does not allow large server applications and databases
-  to be run on calcium. So the problem should be solved with as few resources needed
+  to be run on calcium - the central server in the department. So the problem should be solved with as few resources needed
   on the &quot;back-end&quot; which collects the votes. 
   </p>
 
   <p>
   <B>Literature:</B> 
   The project requires fluency in a web-programming language (for example 
-  <A HREF="http://en.wikipedia.org/wiki/JavaScript">Javascript</A>,
+  <A HREF="http://en.wikipedia.org/wiki/JavaScript">JavaScript</A>,
   <A HREF="http://en.wikipedia.org/wiki/PHP">PHP</A>, 
   Java, <A HREF="http://www.python.org">Python</A>, 
   <A HREF="http://en.wikipedia.org/wiki/Go_(programming_language)">Go</A>, 
@@ -383,7 +403,7 @@
   to be aware of the issues involved. This course uses <A HREF="http://www.python.org">Python</A>.
   To evaluate the answers from the student, Google's 
   <A HREF="https://developers.google.com/chart/image/docs/making_charts">Chart Tools</A>
-  might be useful, which ar also described in this 
+  might be useful, which are also described in this 
   <A HREF="http://www.youtube.com/watch?v=NZtgT4jgnE8">youtube</A> video.
   </p>
 
@@ -402,16 +422,16 @@
   <B>Description:</B>
   There are many algorithms for synchronising clocks. This
   <A HREF="http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20120000054_2011025573.pdf">paper</A> 
-  describes a new algorithm for clocks that communicate by exchanging
+  describes a new algorithm developed by NASA for clocks that communicate by exchanging
   messages and thereby reach a state in which (within some bound) all clocks are synchronised.
   A slightly longer and more detailed paper about the algorithm is 
   <A HREF="http://hdl.handle.net/2060/20110020812">here</A>.
-  The point of this project is to implement this algorithm and simulate networks of clocks.
+  The point of this project is to implement this algorithm and simulate a networks of clocks.
   </p>
 
   <p>
   <B>Literature:</B> 
-  There is a wide range of literature on clock syncronisation algorithms. 
+  There is a wide range of literature on clock synchronisation algorithms. 
   Some pointers are given in this
   <A HREF="http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20120000054_2011025573.pdf">paper</A>,
   which describes the algorithm to be implemented in this project. Pointers