--- 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 "sands of time".
@@ -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 "back-end" 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