msc-projects-14.html
changeset 342 699d7815bf17
parent 341 c3ae73992b49
child 343 2bd33c5d434a
equal deleted inserted replaced
341:c3ae73992b49 342:699d7815bf17
    42     defined as “a person who enjoys exploring the details of programmable systems and 
    42     defined as “a person who enjoys exploring the details of programmable systems and 
    43     stretching their capabilities, as opposed to most users, who prefer to learn only the minimum 
    43     stretching their capabilities, as opposed to most users, who prefer to learn only the minimum 
    44     necessary.&rdquo; I am always happy to supervise like-minded students.</H4>  
    44     necessary.&rdquo; I am always happy to supervise like-minded students.</H4>  
    45 
    45 
    46 <ul class="striped">
    46 <ul class="striped">
    47 <li> <H4>[CU1] Regular Expression Matching and Derivatives</H4>
    47 <li> <H4>[CU1] Regular Expression Matching, Lexing and Derivatives</H4>
    48 
    48 
    49   <p>
    49   <p>
    50   <B>Description:</b>  
    50   <B>Description:</b>  
    51   <A HREF="http://en.wikipedia.org/wiki/Regular_expression">Regular expressions</A> 
    51   <A HREF="http://en.wikipedia.org/wiki/Regular_expression">Regular expressions</A> 
    52   are extremely useful for many text-processing tasks, such as finding patterns in texts,
    52   are extremely useful for many text-processing tasks, such as finding patterns in texts,
   468   <img style="-webkit-user-select: none; cursor: -webkit-zoom-in;
   468   <img style="-webkit-user-select: none; cursor: -webkit-zoom-in;
   469   "src="http://www.inf.kcl.ac.uk/staff/urbanc/rpi-watch.jpg" width="450" height="254">
   469   "src="http://www.inf.kcl.ac.uk/staff/urbanc/rpi-watch.jpg" width="450" height="254">
   470   </center>
   470   </center>
   471   </p>
   471   </p>
   472 
   472 
   473 <li> <H4>[CU6] Language Translator into JavaScript</H4>
   473 <li> <H4>[CU6] An Infrastructure for Displaying and Animating Code in a Web-Browser</H4>
   474 
       
   475   <p>
       
   476   <b>Description:</b> 
       
   477   <A HREF="http://www.w3schools.com/js/">JavaScript</A> is a language that is supported by most
       
   478   browsers and therefore is a favourite
       
   479   vehicle for Web-programming. Some call it <B>the</B> scripting language of the Web.
       
   480   Unfortunately, JavaScript is probably one of the worst
       
   481   languages to program in (being designed and released in a hurry). <B>But</B> it can be used as a convenient target
       
   482   for translating programs from other languages. In particular there are two
       
   483   very optimised subsets of JavaScript that can be used for this purpose:
       
   484   one is <A HREF="http://asmjs.org">asm.js</A> and the other is
       
   485   <A HREF="https://github.com/kripken/emscripten/wiki">emscripten</A>.
       
   486   There is a <A HREF="https://github.com/kripken/emscripten/wiki/Tutorial">tutorial</A> for emscripten
       
   487   and an impressive <A HREF="http://www.unrealengine.com/html5/">demo</A> which runs the
       
   488   <A HREF="http://en.wikipedia.org/wiki/Unreal_Engine">Unreal Engine 3</A>
       
   489   in a browser with spectacular speed. This was achieved by compiling the
       
   490   C-code of the Unreal Engine to the LLVM intermediate language and then translating the LLVM
       
   491   code to JavaScript.
       
   492   </p>
       
   493 
       
   494   <p>
       
   495   <B>Skills:</B> 
       
   496   This project is about exploring these two subsets of JavaScript and implement a translator
       
   497   of a small language into them.  This is similar to the project [CU2] above and requires
       
   498   similar skills. In addition it would be good to have already some familiarity with JavaScript.
       
   499   There are plenty of <A HREF="http://www.w3schools.com/js/">tutorials</A> on the Web.
       
   500   <A HREF="http://jsbooks.revolunet.com">Here</A> is a list of free books on JavaScript.
       
   501   This is a project for a student who wants to get more familiar with JavaScript and Web-programming.
       
   502   A project from which you can draw inspiration is this
       
   503   <A HREF="http://jlongster.com/2012/01/04/outlet-my-lisp-to-javascript-experiment.html">List-to-JavaScript</A>
       
   504   translator. <A HREF="https://bitbucket.org/ktg/parenjs/overview">Here</A> is another such project.
       
   505   And <A HREF="https://github.com/viclib/liscript">another</A> in less than 100 lines of code.
       
   506   <A HREF="http://en.wikipedia.org/wiki/CoffeeScript">Coffeescript</A> is a similar project
       
   507   except that it is already quite <A HREF="http://coffeescript.org">mature</A>. And finally not to
       
   508   forget <A HREF="http://www.typescriptlang.org">TypeScript</A> developed by Microsoft. The main
       
   509   difference between these projects and this one is that they translate into relatively high-level
       
   510   JavaScript code; none of them use the much lower levels <A HREF="http://asmjs.org">asm.js</A> and 
       
   511   <A HREF="https://github.com/kripken/emscripten/wiki">emscripten</A>.
       
   512 </p>
       
   513 
       
   514 
       
   515 
       
   516 <li> <H4>[CU7] An Infrastructure for Displaying and Animating Code in a Web-Browser</H4>
       
   517   
   474   
   518 <p>
   475 <p>
   519   <B>Description:</B>
   476   <B>Description:</B>
   520   The project aim is to implement an infrastructure for displaying and
   477   The project aim is to implement an infrastructure for displaying and
   521   animating code in a web-browser. The infrastructure should be agnostic
   478   animating code in a web-browser. The infrastructure should be agnostic
   539   Good skills in lexing and language parsing, as well as being fluent with web programming (for
   496   Good skills in lexing and language parsing, as well as being fluent with web programming (for
   540   example JavaScript).
   497   example JavaScript).
   541   </p>
   498   </p>
   542 
   499 
   543 
   500 
   544 <li> <H4>[CU8] Implementation of a Distributed Clock-Synchronisation Algorithm developed at NASA</H4>
   501 <li> <H4>[CU7] Implementation of a Distributed Clock-Synchronisation Algorithm developed at NASA</H4>
   545   
   502   
   546   <p>
   503   <p>
   547   <B>Description:</B>
   504   <B>Description:</B>
   548   There are many algorithms for synchronising clocks. This
   505   There are many algorithms for synchronising clocks. This
   549   <A HREF="http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20120000054_2011025573.pdf">paper</A> 
   506   <A HREF="http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20120000054_2011025573.pdf">paper</A> 
   571   <A HREF="http://akka.io">Akka</a> library. This library enables you to send messages
   528   <A HREF="http://akka.io">Akka</a> library. This library enables you to send messages
   572   between different <I>actors</I>. <A HREF="http://www.scala-lang.org/node/242">Here</A> 
   529   between different <I>actors</I>. <A HREF="http://www.scala-lang.org/node/242">Here</A> 
   573   are some examples that explain how to implement exchanging messages between actors. 
   530   are some examples that explain how to implement exchanging messages between actors. 
   574   </p>
   531   </p>
   575 
   532 
   576 <li> <H4>[CU9] Proving the Correctness of Programs</H4>
   533 <li> <H4>[CU8] Proving the Correctness of Programs</H4>
   577 
   534 
   578  <p>
   535  <p>
   579  I am one of the main developers of the interactive theorem prover
   536  I am one of the main developers of the interactive theorem prover
   580  <A HREF="http://isabelle.in.tum.de">Isabelle</A>. This theorem prover
   537  <A HREF="http://isabelle.in.tum.de">Isabelle</A>. This theorem prover
   581  has been used to establish the correctness of some quite large
   538  has been used to establish the correctness of some quite large
   621 </TD>
   578 </TD>
   622 </TR>
   579 </TR>
   623 </TABLE>
   580 </TABLE>
   624 
   581 
   625 <P>
   582 <P>
   626 <!-- hhmts start --> Last modified: Sun Nov  9 23:00:48 GMT 2014 <!-- hhmts end -->
   583 <!-- hhmts start --> Last modified: Mon Nov 10 08:58:53 GMT 2014 <!-- hhmts end -->
   627 <a href="http://validator.w3.org/check/referer">[Validate this page.]</a>
   584 <a href="http://validator.w3.org/check/referer">[Validate this page.]</a>
   628 </BODY>
   585 </BODY>
   629 </HTML>
   586 </HTML>