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
3D print gcode manipulation — typically, gcode is generated from a 3d model with a program called "slicer" which instructs the printer to extrude material in patterns to make a durable and solid shape. It should be possible to design 3d models from gcode primitives, movement and extrusion, through higher-level concepts such as "wall" and "layer". The purpose of this project would be to do something unusual, maybe a thin spider web, or a model with hair, or very light-weight models without walls, which a normal slicer will not be able to create.
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: 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: 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.
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.
Marking app — this would be a mobile-friendly Web app in HTML5, with off-line capabilities, for setting up electronic forms to facilitate marking of student work by lecturers.
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.
Mode-based text editing for the 2020s – the vi and vim text editors have been a staple of text editors on server operating systems, accessed through remote terminal, and historically they were used heavily for editing program code. These editors used mode-based editing, mainly distinguishing between an insert mode where alphanumeric keys are input into the edited document, and a command mode where those keys are editing commands such as cursor movement and text manipulation. As computers have become more interactive, text editing has evolved, with few GUI editors offering mode-based editing. This project can look at designing a mode-based rich-text editor, or it can look at revisiting the vim set of commands in view of modern code editing tasks such as using multiple cursors, refactoring, and code completion. (Initial references: 1, 2, 3.)
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;
- 3D printing.