# HG changeset patch
# User Christian Urban Description:
+
+ Description:
Deterministic finite automata
have many uses in Computer Science, for example for lexing
program code. In order to improve their run-time, automata need to be minimised, that
@@ -102,7 +103,8 @@
Description:
+
+ Description:
Solving the problem of deciding the equivalence of regular expressions can be used
to decide a number of problems in automated reasoning. Recently,
Andreas Asperti
@@ -139,7 +141,8 @@
Description:
+
+ Description:
Compilers translate high-level programs that humans can read and write into
efficient machine code that can be run on a CPU or virtual machine.
I recently implemented a very simple compiler for a very simple functional
@@ -180,10 +183,12 @@
An interesting twist of this project is to not generate code for a CPU, but
for the intermediate language of the LLVM compiler
(also described here and
- here).
+ here). If you want to see
+ what machine code looks like you can compile your C-program using gcc -S.
Skills:
+
+ Skills:
This is a project for a student with a deep interest in programming languages and
compilers. Since my compiler is implemented in Scala,
it would make sense to continue this project in this language. I can be
@@ -194,7 +199,8 @@
Description:
+
+ Description:
This project is similar to [CU3]. The emphasis here, however, is on the
implementation and comparison of register spilling algorithms, also often called register allocation
algorithms. They are part of any respectable compiler. As said
@@ -231,11 +237,13 @@
about register allocation algorithms with further pointers.
Skills:
+
+ Skills:
Same skills as [CU3].
Description:
One of the more annoying aspects of giving a lecture is to ask a question
@@ -287,7 +295,9 @@
The project requires fluency in a web-programming language (for example
Javascript,
PHP,
- Java, Python, Go, Scala,
+ Java, Python,
+ Go,
+ Scala,
Ruby)
and possibly a cloud application platform (for example
Google App Engine or
@@ -302,7 +312,8 @@
youtube video.
Skills:
+
+ Skills:
In order to provide convenience for the lecturer, this project needs very good web-programming skills. A
hacker mentality
(see above) is probably very beneficial: web-programming is an area that only emerged recently and
@@ -311,12 +322,15 @@
Description:
There are many algorithms for synchronising clocks. This
paper
describes a new algorithm 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.
Note that besides being a lecturer in the theory of Computer Science, I am also a passionate
+
Note that besides being a lecturer at the theoretical end of Computer Science, I am also a passionate
hacker …
defined as “a person who enjoys exploring the details of programmable systems and
stretching their capabilities, as opposed to most users, who prefer to learn only the minimum
@@ -44,7 +44,8 @@
[CU1] Automata Minimisation
- [CU2] Equivalence Checking of Regular Expressions
- [CU3] Machine Code Generation for a Simple Compiler
- [CU4] Implementation of Register Spilling Algorithms
- [CU5] A Student Polling System
+
[CU6] Implementation of a Distributed Clock-Synchronisation Algorithm developed at NASA
+
Skills: +
+ Skills: In order to implement a simulation of a network of clocks, you need to tackle concurrency. You can do this for example in the programming language Scala with the help of the @@ -342,9 +357,10 @@ -
+
+ -Last modified: Wed Jan 11 16:30:03 GMT 2012 +Last modified: Wed Sep 12 16:30:03 GMT 2012 [Validate this page.]