# HG changeset patch # User Christian Urban # Date 1353160590 0 # Node ID d99c0026ebafd2860cb61973aebecfb67507235e # Parent 622c47857b6906bda9692ce26db8f92d5291cd2e updated diff -r 622c47857b69 -r d99c0026ebaf 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 @@

Description: Regular expressions - 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 Stephen Kleene, 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 @@ Scala (and also Java) are almost immune from such attacks as they can deal with strings of up to 4,300 as in less than a second. But if you scale the regular expression and string further to, say, 4,600 as, then you get a StackOverflowError - potentially chrashing your program. + potentially crashing your program.

@@ -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 as in less than 5 seconds without raising any exception (remember Python and Ruby both need nearly 30 seconds to process 28(!) as, and Scala's - offical matcher maxes out at 4,600 as). My matcher is approximately + official matcher maxes out at 4,600 as). My matcher is approximately 85 lines of code and based on the concept of - derivatives of regular experssions. + derivatives of regular expressions. These derivatives were introduced in 1964 by Janusz Brzozowski, but according to this paper had been lost in the "sands of time". @@ -143,17 +143,36 @@

  • [CU2] Automata Theory in Your Web-Browser

    -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 +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, typically +written in Javascript, that animate these calculations, for example this one. +But they all have their deficiencies and can be improved with more modern technology.

    -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 +one for graphs or this +one for graphics. + +There are also +a number of new programming languages targeting JavaScript, for example +TypeScript, +CoffeeScript, +Dart, +Script#, +Clojure + 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.

    Literature: @@ -162,9 +181,10 @@

    Skills: - 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 hacking skills. + Some knowledge in JavaScript, HTML and CSS cannot hurt The algorithms from automata + theory are fairly standard material.

    @@ -364,14 +384,14 @@

    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.

    Literature: The project requires fluency in a web-programming language (for example - Javascript, + JavaScript, PHP, Java, Python, Go, @@ -383,7 +403,7 @@ to be aware of the issues involved. This course uses Python. To evaluate the answers from the student, Google's Chart Tools - might be useful, which ar also described in this + might be useful, which are also described in this youtube video.

    @@ -402,16 +422,16 @@ Description: There are many algorithms for synchronising clocks. This paper - 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 here. - 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.

    Literature: - 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 paper, which describes the algorithm to be implemented in this project. Pointers