If you would like me to supervise your project, please contact me to discuss your topic. You can choose any of the following, or any other topic that you think will be of interest to me.

Project and Research Ideas

LiMA Web Design — I'm working on a Web-based data repository and statistical analysis tool — called Living Meta-Analysis — to support scientists who analyze and synthesize existing scientific studies in order to find more generally applicable results. The tool needs a good design for aesthetics and usability; I would be the client of your project, and the expected users would be scientists — you could be in frequent contact with researchers in the Department of Psychology.

Impress.js extensions — the open-source presentation tool Impress.js is a good starting point, but needs further functionalities. This project would research and develop extensions that make Impress.js more effective in university lectures, such as remote control, speaker notes, student notes, multiple-screen presentations, interactive forms and charts. The project would include submitting the extensions for consideration to the Impress.js community, which raises the bar on expected code quality.

Impress.js authoring tool — I do most of my lectures using my extended version of Impress.js. This project would research and develop an authoring environment for this presentation tool, to make it easier to create presentations, complementary to editing the HTML/CSS/Javascript code of the presentations by hand.

SoC Museum of Interesting Things — if you're interested in computing history, our humble museum has many possible projects in it:

  • Identifying things: using automated image recognition, Web searches, or using crowd-sourcing, with cross-checking for verification of the finds, to efficiently build a database of the things we have. We'd be looking for a clever technological solution rather than spending hours cataloguing things.
  • Enhancing the database: grouping items by themes (where themes may overlap, e.g. "Storage" can be one theme, and "Before 1980" could be another), including information on processes (how things work and fit with other things), and timelines, and representing such rich information in a database.
  • Views on this database: generating labels, QR codes or other short links, a website, supporting discussions over items, linking to where one might still be able to buy similar items (e.g. eBay), materials for teaching (e.g. for Computer Architecture).

Database Normalization app — this Web app in HTML5 could be used for demonstrating, teaching, and performing database normalization. It would allow definition of tables, input of sample data; it would identify (and confirm with the user) potential functional dependencies; and it would perform the normalization steps to 3NF.

Mind-mapping tablet software — mind-mapping can be a useful tool for various purposes, and this project would involve the theory of mind maps and strong considerations for tablet user interfaces.

Touchscreen-optimized real programming environment — one of the major limitations of mobile devices (smartphones, tablets) compared to laptops and desktop computers is that it is not easy to create real programs on touchscreen-oriented devices. This project would research ways in which touch interactions (command palettes, menus, suggestions) could substitute typing when programming, as touchscreen typing in modern programming languages is painfully slow. The project would also demonstrate the above in a proof of concept prototype.

Mac OS Stickies in the cloud — on Mac OS X, the Stickies app allowed users to put sticky notes on their screen. The app, now discontinued, had several limitations: the notes are hard to access from outside the app, and the app does not remember the OS X desktop on which each sticky note is placed. This program would make an OS X app similar to Stickies, automatically synchronizing the notes with files (and possibly into the cloud), and possibly a Web interface that would mirror the OS X interface.

Browser extension for equalized text layout — a typical simple text layout engine takes a paragraph of text, puts as many words on the first line as it has space for, then breaks and continues on the next line. Smarter layout engines (e.g. LaTeX) will recognize if a line has too few words, and can shift words around, or even hyphenate them, to equalize space lengths in the paragraph. The image illustrates that:example of text layout on the left-hand side we have normal layout, on the right-hand side the words "for", "most", and "cross-" are moved around so the spaces are more even. Similarly, in case of short text, such as headings, one may want to equalize line lengths if a line needs to break. This is illustrated in the second image:example of heading layout at the top, the text breaks normally, at the bottom the computer breaks earlier so the two lines are now of similar lengths. This project would select an open-source Web browser and implement this type of functionality; the student would also be expected to document a new CSS property for controlling this behaviour, and potentially submit the work to browser implementors or to standardization bodies for consideration.

Slow light animations — what would animations look like if light was moving very slowly, rather than at light speed? This project would explore this question, programming well-known 3D rendering approaches and extending them to simulate slow propagation of light. This could include: i) radiosity or similar global illumination algorithms, animating light source intensities and colours; ii) global illumination with moving objects; and iii) ray tracing with moving objects. This might produce interesting effects, and it might enable visualizations of relativistic phenomena, or of the propagation of sound, including the Doppler Effect. The project will only be interesting if it isn't old news — if you are interested, you should show me that you've done an initial literature search.

My interests

I'll be happy to discuss your ideas especially within my research interests, which include the following:

  • Web architecture and technologies;
  • Web application interfaces and Web services;
  • Semantic Web and Linked Data;
  • Mobile applications, applying mobile devices in places where computing has previously had little impact;
  • Teaching support applications.