bsc-projects-17.html
changeset 511 55bc18956577
parent 510 d08c5a952d53
child 512 a2a2afc15796
equal deleted inserted replaced
510:d08c5a952d53 511:55bc18956577
   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 &ldquo;<A HREF="http://en.wikipedia.org/wiki/ReDoS#Examples">evil</A>&rdquo;
   156   Test cases for &ldquo;<A HREF="http://en.wikipedia.org/wiki/ReDoS#Examples">evil</A>&rdquo;
   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 &pound;26 (see picture on the left below). They were introduced
   350   are small Linux computers the size of a credit-card and only cost &pound;26, the simplest version even costs only &pound;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>