# HG changeset patch # User Christian Urban <urbanc@in.tum.de> # Date 1347493276 -3600 # Node ID e779f42c6fa88bfd5317f62f626a45feef1d2de2 # Parent cbe1b90ddc96cbc6d3c69053d2871c7c83097efe tuned diff -r cbe1b90ddc96 -r e779f42c6fa8 bsc-projects-12.html --- a/bsc-projects-12.html Wed Sep 12 16:49:06 2012 +0200 +++ b/bsc-projects-12.html Thu Sep 13 00:41:16 2012 +0100 @@ -35,7 +35,7 @@ a short description about your programming skills and Computer Science background in your first email. I will also need your King's username in order to book the project for you. Thanks.</H4> -<H4>Note that besides being a lecturer in the theory of Computer Science, I am also a passionate +<H4>Note that besides being a lecturer at the theoretical end of Computer Science, I am also a passionate <A HREF="http://en.wikipedia.org/wiki/Hacker_(programmer_subculture)">hacker</A> … 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 @@ <ul class="striped"> <li> <H4>[CU1] Automata Minimisation</H4> - <p><B>Description:</b> + <p> + <B>Description:</b> <A HREF="http://en.wikipedia.org/wiki/Deterministic_finite_automaton">Deterministic finite automata</A> 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 @@ <li> <H4>[CU2] Equivalence Checking of Regular Expressions</H4> - <p><B>Description:</b> + <p> + <B>Description:</b> Solving the problem of deciding the equivalence of regular expressions can be used to decide a number of problems in automated reasoning. Recently, <A HREF="http://www.cs.unibo.it/~asperti/">Andreas Asperti</A> @@ -139,7 +141,8 @@ <li> <H4>[CU3] Machine Code Generation for a Simple Compiler</H4> - <p><b>Description:</b> + <p> + <b>Description:</b> 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 <A HREF="http://llvm.org">LLVM</A> compiler (also described <A HREF="https://wiki.aalto.fi/display/t1065450/LLVM+IR">here</A> and - <A HREF="http://llvm.org/docs/LangRef.html">here</A>). + <A HREF="http://llvm.org/docs/LangRef.html">here</A>). If you want to see + what machine code looks like you can compile your C-program using gcc -S. </p> - <p><B>Skills:</B> + <p> + <B>Skills:</B> This is a project for a student with a deep interest in programming languages and compilers. Since my compiler is implemented in <A HREF="http://www.scala-lang.org/">Scala</A>, it would make sense to continue this project in this language. I can be @@ -194,7 +199,8 @@ <li> <H4>[CU4] Implementation of Register Spilling Algorithms</H4> - <p><b>Description:</b> + <p> + <b>Description:</b> 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. </p> - <p><B>Skills:</B> + <p> + <B>Skills:</B> Same skills as [CU3]. </p> <li> <H4>[CU5] A Student Polling System</H4> + <p> <B>Description:</B> 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 <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>, <A HREF="http://www.scala-lang.org/">Scala</A>, + Java, <A HREF="http://www.python.org">Python</A>, + <A HREF="http://en.wikipedia.org/wiki/Go_(programming_language)">Go</A>, + <A HREF="http://www.scala-lang.org/">Scala</A>, <A HREF="http://en.wikipedia.org/wiki/Ruby_(programming_language)">Ruby</A>) and possibly a cloud application platform (for example <A HREF="https://developers.google.com/appengine/">Google App Engine</a> or @@ -302,7 +312,8 @@ <A HREF="http://www.youtube.com/watch?v=NZtgT4jgnE8">youtube</A> video. </p> - <p><B>Skills:</B> + <p> + <B>Skills:</B> In order to provide convenience for the lecturer, this project needs very good web-programming skills. A <A HREF="http://en.wikipedia.org/wiki/Hacker_(programmer_subculture)">hacker mentality</A> (see above) is probably very beneficial: web-programming is an area that only emerged recently and @@ -311,12 +322,15 @@ </p> <li> <H4>[CU6] Implementation of a Distributed Clock-Synchronisation Algorithm developed at NASA</H4> + <p> <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 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. </p> @@ -328,7 +342,8 @@ are given also <A HREF="http://en.wikipedia.org/wiki/Clock_synchronization">here</A>. </p> - <p><B>Skills:</B> + <p> + <B>Skills:</B> 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 <A HREF="http://www.scala-lang.org/">Scala</A> with the help of the @@ -342,9 +357,10 @@ </TR> </TABLE> -<P><!-- Created: Tue Mar 4 00:23:25 GMT 1997 --> +<P> +<!-- Created: Tue Mar 4 00:23:25 GMT 1997 --> <!-- hhmts start --> -Last modified: Wed Jan 11 16:30:03 GMT 2012 +Last modified: Wed Sep 12 16:30:03 GMT 2012 <!-- hhmts end --> <a href="http://validator.w3.org/check/referer">[Validate this page.]</a> </BODY>