150 <A HREF="https://www.coursera.org/course/automata">Coursera</A>, though IMHO not |
150 <A HREF="https://www.coursera.org/course/automata">Coursera</A>, though IMHO not |
151 done with love. |
151 done with love. |
152 There are millions of other pointers about regular expression |
152 There are millions of other pointers about regular expression |
153 matching on the Web. I found the chapter on Lexing in this |
153 matching on the Web. I found the chapter on Lexing in this |
154 <A HREF="http://www.diku.dk/~torbenm/Basics/">online book</A> very helpful. Finally, it will |
154 <A HREF="http://www.diku.dk/~torbenm/Basics/">online book</A> very helpful. Finally, it will |
155 be of great help for this project to take part in my Compiler and Formal Language module (). |
155 be of great help for this project to take part in my Compiler and Formal Language module (6CCS3CFL). |
156 Test cases for “<A HREF="http://en.wikipedia.org/wiki/ReDoS#Examples">evil</A>” |
156 Test cases for “<A HREF="http://en.wikipedia.org/wiki/ReDoS#Examples">evil</A>” |
157 regular expressions can be obtained from <A HREF="http://www.haskell.org/haskellwiki/Regex_Posix">here</A>. |
157 regular expressions can be obtained from <A HREF="http://www.haskell.org/haskellwiki/Regex_Posix">here</A>. |
158 </p> |
158 </p> |
159 |
159 |
160 <p> |
160 <p> |
232 <A HREF="http://flint.cs.yale.edu/cs422/doc/art-of-asm/pdf/">here</A>. |
232 <A HREF="http://flint.cs.yale.edu/cs422/doc/art-of-asm/pdf/">here</A>. |
233 An introduction into x86 machine code is <A HREF="http://ianseyler.github.com/easy_x86-64/">here</A>. |
233 An introduction into x86 machine code is <A HREF="http://ianseyler.github.com/easy_x86-64/">here</A>. |
234 Intel's official manual for the x86 instruction is |
234 Intel's official manual for the x86 instruction is |
235 <A HREF="http://download.intel.com/design/intarch/manuals/24319101.pdf">here</A>. |
235 <A HREF="http://download.intel.com/design/intarch/manuals/24319101.pdf">here</A>. |
236 Two assemblers for the JVM are described <A HREF="http://jasmin.sourceforge.net">here</A> |
236 Two assemblers for the JVM are described <A HREF="http://jasmin.sourceforge.net">here</A> |
237 <A HREF="https://github.com/Storyyeller/Krakatau">here</A>. |
237 and <A HREF="https://github.com/Storyyeller/Krakatau">here</A>. |
238 An interesting twist of this project is to not generate code for a CPU, but |
238 An interesting twist of this project is to not generate code for a CPU, but |
239 for the intermediate language of the <A HREF="http://llvm.org">LLVM</A> compiler |
239 for the intermediate language of the <A HREF="http://llvm.org">LLVM</A> compiler |
240 (also described <A HREF="http://llvm.org/docs/LangRef.html">here</A>). If you want to see |
240 (also described <A HREF="http://llvm.org/docs/LangRef.html">here</A>). If you want to see |
241 what machine code looks like you can compile your C-program using gcc -S. |
241 what machine code looks like you can compile your C-program using gcc -S. |
242 </p> |
242 </p> |
259 This is a project for a student with a deep interest in programming languages and |
259 This is a project for a student with a deep interest in programming languages and |
260 compilers. Since my compiler is implemented in <A HREF="http://www.scala-lang.org/">Scala</A>, |
260 compilers. Since my compiler is implemented in <A HREF="http://www.scala-lang.org/">Scala</A>, |
261 it would make sense to continue this project in this language. I can be |
261 it would make sense to continue this project in this language. I can be |
262 of help with questions and books about <A HREF="http://www.scala-lang.org/">Scala</A>. |
262 of help with questions and books about <A HREF="http://www.scala-lang.org/">Scala</A>. |
263 But if Scala is a problem, my code can also be translated quickly into any other functional |
263 But if Scala is a problem, my code can also be translated quickly into any other functional |
264 language. |
264 language. Again, it will be of great help for this project to take part in |
|
265 my Compiler and Formal Language module (6CCS3CFL). |
265 </p> |
266 </p> |
266 |
267 |
267 <p> |
268 <p> |
268 <B>PS:</B> Compiler projects consistently received high marks in the past. |
269 <B>PS:</B> Compiler projects consistently received high marks in the past. |
269 I have supervised eight so far and most of them received a mark above 70% - one even was awarded a prize. |
270 I have supervised eight so far and most of them received a mark above 70% - one even was awarded a prize. |
334 parse a language and translate it to a suitable part of JavaScript using |
335 parse a language and translate it to a suitable part of JavaScript using |
335 appropriate libraries. Tutorials for JavaScript are <A HREF="http://www.w3schools.com/js/">here</A>. |
336 appropriate libraries. Tutorials for JavaScript are <A HREF="http://www.w3schools.com/js/">here</A>. |
336 A parser generator for JavaScript is <A HREF="http://pegjs.majda.cz">here</A>. There are probably also |
337 A parser generator for JavaScript is <A HREF="http://pegjs.majda.cz">here</A>. There are probably also |
337 others. If you want to avoid JavaScript there are a number of alternatives: for example the |
338 others. If you want to avoid JavaScript there are a number of alternatives: for example the |
338 <A HREF="http://elm-lang.org">Elm</A> |
339 <A HREF="http://elm-lang.org">Elm</A> |
339 language has been especially designed for implementing with ease interactive animations, which would be |
340 language has been especially designed for implementing interactive animations, which would be |
340 very convenient for this project. A nice slide making project done by a previous student is |
341 very convenient for this project. A nice slide making project done by a previous student is |
341 <A HREF=" http://www.markslides.org/src/markslides.html">MarkSlides</A> by Oleksandr Cherednychenko. |
342 <A HREF=" http://www.markslides.org/src/markslides.html">MarkSlides</A> by Oleksandr Cherednychenko. |
342 </p> |
343 </p> |
343 |
344 |
344 <li> <H4>[CU4] Raspberry Pi's and Arduinos</H4> |
345 <li> <H4>[CU4] Raspberry Pi's and Arduinos</H4> |
345 |
346 |
346 <p> |
347 <p> |
347 <B>Description:</B> |
348 <B>Description:</B> |
348 This project is for true hackers! <A HREF="http://en.wikipedia.org/wiki/Raspberry_Pi">Raspberry Pi's</A> |
349 This project is for true hackers! <A HREF="http://en.wikipedia.org/wiki/Raspberry_Pi">Raspberry Pi's</A> |
349 are small Linux computers the size of a credit-card and only cost £26 (see picture on the left below). They were introduced |
350 are small Linux computers the size of a credit-card and only cost £26, the simplest version even costs only £5 (see pictures on the left below). They were introduced |
350 in 2012 and people went crazy...well some of them. There is a |
351 in 2012 and people went crazy...well some of them. There is a |
351 <A HREF="https://plus.google.com/communities/113390432655174294208?hl=en">Google+</A> community about Raspberry Pi's that has more |
352 <A HREF="https://plus.google.com/communities/113390432655174294208?hl=en">Google+</A> community about Raspberry Pi's that has more |
352 than 197k of followers. It is hard to keep up with what people do with these small computers. The possibilities |
353 than 197k of followers. It is hard to keep up with what people do with these small computers. The possibilities |
353 seem to be limitless. The main resource for Raspberry Pi's is <A HREF="http://www.raspberrypi.org">here</A>. |
354 seem to be limitless. The main resource for Raspberry Pi's is <A HREF="http://www.raspberrypi.org">here</A>. |
354 There are <A HREF="https://www.raspberrypi.org/magpi/">magazines</A> dedicated to them and tons of |
355 There are <A HREF="https://www.raspberrypi.org/magpi/">magazines</A> dedicated to them and tons of |
356 floods of <A HREF="https://www.google.co.uk/search?q=raspberry+pi">online</A> material, |
357 floods of <A HREF="https://www.google.co.uk/search?q=raspberry+pi">online</A> material, |
357 such as the <A HREF="https://www.raspberrypi.org/magpi-issues/Projects_Book_v1.pdf">RPi projects book</A>). |
358 such as the <A HREF="https://www.raspberrypi.org/magpi-issues/Projects_Book_v1.pdf">RPi projects book</A>). |
358 Google just released a |
359 Google just released a |
359 <A HREF="http://googlecreativelab.github.io/coder/">framework</A> |
360 <A HREF="http://googlecreativelab.github.io/coder/">framework</A> |
360 for web-programming on Raspberry Pi's turning them into webservers. |
361 for web-programming on Raspberry Pi's turning them into webservers. |
|
362 In my home one Raspberry Pi has the very important task of automatically filtering out |
|
363 nearly all advertisments using the |
|
364 <A HREF="https://github.com/pi-hole/pi-hole">Pi-Hole</A> software |
|
365 (you cannot imagine what difference this does to your web experience...you just sit back and read what |
|
366 is important). |
361 </p> |
367 </p> |
362 |
368 |
363 <p> |
369 <p> |
364 <A HREF="http://en.wikipedia.org/wiki/Arduino">Arduinos</A> are slightly older (from 2005) but still very cool (see picture on the right below). They |
370 <A HREF="http://en.wikipedia.org/wiki/Arduino">Arduinos</A> are slightly older (from 2005) but still very cool (see picture on the right below). They |
365 are small single-board micro-controllers that can talk to various external gadgets (sensors, motors, etc). Since Arduinos |
371 are small single-board micro-controllers that can talk to various external gadgets (sensors, motors, etc). Since Arduinos |
368 The main reference is <A HREF="http://www.arduino.cc">here</A>. Like the Raspberry Pi's, the good thing about |
374 The main reference is <A HREF="http://www.arduino.cc">here</A>. Like the Raspberry Pi's, the good thing about |
369 Arduinos is that they can be powered with simple AA-batteries. |
375 Arduinos is that they can be powered with simple AA-batteries. |
370 </p> |
376 </p> |
371 |
377 |
372 <p> |
378 <p> |
373 I have two such Raspberry Pi's including wifi-connectors and two <A HREF="http://www.raspberrypi.org/camera">cameras</A>. |
379 I have several Raspberry Pi's including wifi-connectors and two <A HREF="http://www.raspberrypi.org/camera">cameras</A>. |
374 I also have two <A HREF="http://www.freaklabs.org/index.php/Blog/Store/Introducing-the-Freakduino-Chibi-An-Arduino-based-Board-For-Wireless-Sensor-Networking.html">Freakduino Boards</A> that are Arduinos extended with wireless communication. I can lend them to responsible |
380 I also have two <A HREF="http://www.freaklabs.org/index.php/Blog/Store/Introducing-the-Freakduino-Chibi-An-Arduino-based-Board-For-Wireless-Sensor-Networking.html">Freakduino Boards</A> that are Arduinos extended with wireless communication. I can lend them to responsible |
375 students for one or two projects. However, the aim is to first come up with an idea for a project. Popular projects are |
381 students for one or two projects. However, the aim is to first come up with an idea for a project. Popular projects are |
376 automated temperature sensors, network servers, robots, web-cams (<A HREF="http://www.secretbatcave.co.uk/electronics/shard-rain-cam/">here</A> |
382 automated temperature sensors, network servers, robots, web-cams (<A HREF="http://www.secretbatcave.co.uk/electronics/shard-rain-cam/">here</A> |
377 is a <A HREF="http://www.raspberrypi.org/archives/3547">web-cam</A> directed at the Shard that can |
383 is a <A HREF="http://www.raspberrypi.org/archives/3547">web-cam</A> directed at the Shard that can |
378 <A HREF="http://www.secretbatcave.co.uk/software/shard-rain-cam-quantifying-cloudy/">tell</A> |
384 <A HREF="http://www.secretbatcave.co.uk/software/shard-rain-cam-quantifying-cloudy/">tell</A> |