Project topics for the MSc in Advanced Computer Science

This page provides some suggestions for mini-project and project topics for the MSc in Advanced Computer Science that I would be interested in supervising. If you are interested in one of them, please email me for discussing it further. It helps if you have already found out a little more about the topic. Searching for some of the keywords mentioned on Google Scholar may be a good starting point. One of the best features of the MSc in Advanced Computer Science is the freedom it gives you in pursuing interesting questions. There are different possibilities for what can be done about a given topic, for example, a literature survey, a case study implementation, experiments, or a dissertation-only project without coding.

See also the projects for the MSc in Computer Security, as they are also suitable for (mini)-projects in the MSc in Advanced Computer Science. (But not conversely). For the MSc in Advanced Computer Science, a mini-project based on one of the security topics could consist of a literature review and an initial feasibility study (with a full implementation as a possible summer project).

Some of the MSc projects could also be a first step towards a PhD; see also my list of possible PhD topics in Computer Science.

Eliminating left recursion and parsing actions

Some popular parser generators such as ANTLR will not work on grammars with left recursion. There is a standard technqiue for eliminating left recursion from grammars. However, a parser in ANTLR also contains semantic actions in the form of Java or C code. These actions also need to be transformed. Doing so is the aim of this project, by programming an appropriate pre-processor for ANTLR. It should be based on the L-calculus in my 2014 paper “On the Semantics of Parsing Actions” in Science of Computer Programming (see my publications page).

Latex to ibook translator

NB: while this would be a very useful tool to build, I have not looked into its feasibility, involving a propriety format. Academics often write lecture notes in latex, which produces great PDFs for printing or viewing on a desktop. But at the moment there is no good tool to translate whole Latex documents to an electronic book format suitable for handheld devices.

Software engineering and web design

Web pages have links between them. That is analogous to data structures with pointers. They tend to be updated by different people, often with disregard for incoming links or consistency. That is analogous to concurrent processes updating data structures with pointers, and the problem of maintaining data structure invariants. So the question here is: can concurrent programming shed some light on how to design a web site and how it evolves?

Recursive-ascent parsing

Top-down, or recursive descent, parsers can be written in a pleasantly direct style as a collection of mutually recursive methods in Java. By contrast, bottom-up parsers (like those generated by yacc/bison) are typically table-driven. Recursive ascent generates methods for a bottom-up parser. The project would explore writing such parsers in Java.

Visitor-oriented programming

The visitor pattern is an object-oriented design pattern for traversing data structures, such as the parse trees described in the parsing part of the SSC1 module.