# HG changeset patch
# User Christian Urban
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
@@ -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
-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.
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.
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.
a
s in less than a second. But if you scale
the regular expression and string further to, say, 4,600 a
s, then you get a StackOverflowError
- potentially chrashing your program.
+ potentially crashing your program.
a
s in less than 5 seconds without raising any exception
(remember Python and Ruby both need nearly 30 seconds to process 28(!) a
s, and Scala's
- offical matcher maxes out at 4,600 a
s). My matcher is approximately
+ official matcher maxes out at 4,600 a
s). 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
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