246 translator. <A HREF="https://bitbucket.org/ktg/parenjs/overview">Here</A> is another such project. |
246 translator. <A HREF="https://bitbucket.org/ktg/parenjs/overview">Here</A> is another such project. |
247 And <A HREF="https://github.com/viclib/liscript">another</A> in less than 100 lines of code. |
247 And <A HREF="https://github.com/viclib/liscript">another</A> in less than 100 lines of code. |
248 <A HREF="http://en.wikipedia.org/wiki/CoffeeScript">Coffeescript</A> is a similar project |
248 <A HREF="http://en.wikipedia.org/wiki/CoffeeScript">Coffeescript</A> is a similar project |
249 except that it is already quite <A HREF="http://coffeescript.org">mature</A>. And finally not to |
249 except that it is already quite <A HREF="http://coffeescript.org">mature</A>. And finally not to |
250 forget <A HREF="http://www.typescriptlang.org">TypeScript</A> developed by Microsoft. The main |
250 forget <A HREF="http://www.typescriptlang.org">TypeScript</A> developed by Microsoft. The main |
251 difference between these projects and this one is that they translate int relatively high-level |
251 difference between these projects and this one is that they translate into relatively high-level |
252 JavaScript code; none of them use the much lower levels <A HREF="http://asmjs.org">asm.js</A> and |
252 JavaScript code; none of them use the much lower levels <A HREF="http://asmjs.org">asm.js</A> and |
253 <A HREF="https://github.com/kripken/emscripten/wiki">emscripten</A>. |
253 <A HREF="https://github.com/kripken/emscripten/wiki">emscripten</A>. |
254 </p> |
254 </p> |
255 |
255 |
256 <li> <H4>[CU4] Slide-Making in the Web-Age</H4> |
256 <li> <H4>[CU4] Slide-Making in the Web-Age</H4> |
320 <li> <H4>[CU5] An Online Student Voting System</H4> |
320 <li> <H4>[CU5] An Online Student Voting System</H4> |
321 |
321 |
322 <p> |
322 <p> |
323 <B>Description:</B> |
323 <B>Description:</B> |
324 One of the more annoying aspects of giving a lecture is to ask a question |
324 One of the more annoying aspects of giving a lecture is to ask a question |
325 to the students and no matter how easy the questions is to not |
325 to the students and no matter how easy the question is to not |
326 receive an answer. Recently, the online course system |
326 receive any answer. Recently, the online course system |
327 <A HREF="http://www.udacity.com">Udacity</A> made an art out of |
327 <A HREF="http://www.udacity.com">Udacity</A> made an art out of |
328 asking questions during lectures (see for example the |
328 asking questions during lectures (see for example the |
329 <A HREF="http://www.udacity.com/overview/Course/cs253/CourseRev/apr2012">Web Application Engineering</A> |
329 <A HREF="http://www.udacity.com/overview/Course/cs253/CourseRev/apr2012">Web Application Engineering</A> |
330 course CS253). |
330 course CS253). |
331 The lecturer there gives multiple-choice questions as part of the lecture and the students need to |
331 The lecturer there gives multiple-choice questions as part of the lecture and the students need to |
332 click on the appropriate answer. This works very well in the online world. |
332 click on the appropriate answer. This works very well in the online world. |
333 For “real-world” lectures, the department has some |
333 For “real-world” lectures, the department has some |
334 <A HREF="http://en.wikipedia.org/wiki/Audience_response">clickers</A> |
334 <A HREF="http://en.wikipedia.org/wiki/Audience_response">clickers</A> |
335 (these are little devices part of an audience response systems). However, |
335 (these are little devices which form a part of an audience response systems). However, |
336 they are a logistic nightmare for the lecturer: they need to be distributed |
336 they are a logistic nightmare for the lecturer: they need to be distributed |
337 during the lecture and collected at the end. Nowadays, where students |
337 during the lecture and collected at the end. Nowadays, where students |
338 come with their own laptop or smartphone to lectures, this can |
338 come with their own laptop or smartphone to lectures, this can |
339 be improved. |
339 be improved. |
340 </p> |
340 </p> |
533 <p> |
533 <p> |
534 I am one of the main developers of the interactive theorem prover |
534 I am one of the main developers of the interactive theorem prover |
535 <A HREF="http://isabelle.in.tum.de">Isabelle</A>. This theorem prover |
535 <A HREF="http://isabelle.in.tum.de">Isabelle</A>. This theorem prover |
536 has been used to establish the correctness of some quite large |
536 has been used to establish the correctness of some quite large |
537 programs (for example an <A HREF="http://ertos.nicta.com.au/research/l4.verified/">operating system</A>). |
537 programs (for example an <A HREF="http://ertos.nicta.com.au/research/l4.verified/">operating system</A>). |
538 On a much smaller scale, there are a few programs and underlying algorithms where it |
538 Together with colleagues from Nanjing, I used this theorem prover to establish the correctness of a |
539 is not really understood whether they always compute a correct result. The aim of this |
539 scheduling algorithm, called |
|
540 <A HREF="http://en.wikipedia.org/wiki/Priority_inheritance">Priority Inheritance</A>, |
|
541 for real time operating systems. This scheduling algorithm is part of the operating |
|
542 system that drives, for example, the |
|
543 <A HREF="http://en.wikipedia.org/wiki/Mars_Exploration_Rover">Mars rovers</A>. |
|
544 Actually, the very first Mars rover mission in 1997 did not have this |
|
545 algorithm switched on and it almost caused a catastrophic mission failure (see |
|
546 this youtube video <A HREF="http://www.youtube.com/watch?v=lyx7kARrGeM">here</A> |
|
547 for an explanation what happened). |
|
548 We were able to prove the correctness of this algorithm, but were also able to |
|
549 establish the correctness of some optimisations in this |
|
550 <A HREF="http://www.inf.kcl.ac.uk/staff/urbanc/Publications/pip.pdf">paper</A>. |
|
551 </p> |
|
552 |
|
553 <p>On a much smaller scale, there are a few small programs and underlying algorithms where it |
|
554 is not really understood whether they always compute a correct result (for example the |
|
555 regular expression matcher by Sulzmann and Lu in project [CU1]). The aim of this |
540 project is to completely specify an algorithm in Isabelle and then prove it correct (that is, |
556 project is to completely specify an algorithm in Isabelle and then prove it correct (that is, |
541 it always computes the correct result). |
557 it always computes the correct result). |
542 </p> |
558 </p> |
|
559 |
|
560 <p> |
|
561 <B>Skills:</B> |
|
562 This project is for a very good student with a knack for theory and formal reasoning. |
|
563 </p> |
543 |
564 |
544 <li> <H4>Earlier Projects</H4> |
565 <li> <H4>Earlier Projects</H4> |
545 |
566 |
546 I am also open to project suggestions from you. You might find some inspiration from my earlier projects: |
567 I am also open to project suggestions from you. You might find some inspiration from my earlier projects: |
547 <A HREF="http://www.inf.kcl.ac.uk/staff/urbanc/bsc-projects-12.html">BSc 2012/13</A>, |
568 <A HREF="http://www.inf.kcl.ac.uk/staff/urbanc/bsc-projects-12.html">BSc 2012/13</A>, |