This file is at http://www.cs.swan.ac.uk/~csharold/teaching/projects
Harold's projects are phrased in terms of specific devices and task domains. You are more than welcome to suggest alternative contexts to achieve the 'same sorts of things.'
Harold will be very happy to talk with people who want to do projects with him that are not (yet) in this list.
Or, go to my web site, read any paper of mine, and propose a project that takes the paper forwards, or does it better.
Statecharts are a good way to draw interactive systems, but they are not yet an easy way to program them. This project would have you design and implement an API for building statechart-based interactive systems, either in Java or in a statechart-based language you design. The system should include various property checking and analysis features.
Several on-screen mobile phone simulations are available. Evaluate these and develop their user interfaces. Some experiments have already been done, and they look promising. This project could involve collaboration with Gary Marsden from University of Cape Town, where some of the work was done. See Marsden, G., Gillary, P., Thimbleby, H. & Jones, M. (2002) "The Use of Algorithms in Interface Design," International Journal of Personal and Ubiquitous Technologies, 6(2) pp.132-140 for more information.
And note that two of the authors of this paper — Thimbleby and Jones — are now both at Swansea, and Marsden will visit us next year.
This project can evaluate, simulate, improve user interfaces to ticket machines. In particular it could look at alternatives, such as those based on mobile phone registering travellers. An article written by Blandford, Cairns and Thimbleby et al surveys some of the issues — and it was originally criticised by referees for lacking empirical evidence. Can you provide some? Can you do better?
The FITlab has some syringe pumps: an automatic devices for giving patients repeated injections (e.g., for a diabetics in intensive care, or for anaesthetics during operations). What are the HCI issues? This project could develop into grounded theory with the people who use syringe pumps (subject to ethical clearance), with the professionals who use them (some of whom work at the Singleton Hospital), or it could do laboratory usability work, or it could look at user training and manuals, or it could do some reverse engineering to uncover what the syringe pumps really do. There is a lot of scope to improve these things.
The FITLab has a touch sensitive rear-projection whiteboard, which very nicely runs this calculator. This project would develop the calculator in any of several directions to make it more successful.
A variation of this project would evaluate the calculator in school classrooms, and might (for suitable students) involve no programming. The calculator is written in Java, and it is envisaged that any work would continue in this language.
SMV is a model checking language, but its interactive features are pathetic. This project would start with the SMV system (which is written in yacc and C, though other versions of SMV are available) and would create a nicer interactive version.
Variations of this project could work with different systems, such as FDR/CSP, SPIN, etc, depending on the student's preferences or prior experience.
When you examine an interactive system (such as an ipod), exactly what is it? You could start to build a FSM simulation of it as you find out how it works, however as you build the FSM you have to keep track of many things — the bits of the system you have explored, the bits that you don't yet understand, the bits you've understood wrongly, and even the bits you want to remember you are surprised at (in case you want to write to Apple!).
A tool to help you manage reverse engineering might make use of the chinese postman algorithm and other algorithms to make reverse engineering systematic.
Knuth's famous Art of Computer Programming books use various programming notations. Develop a compiler for a language close to his pseudo-English notations; ideally you would compile into MMIX. An important part of the compiler is to achieve the same level of typographic finesse shown in Knuth's books.
MetaPost is a very powerful graphics language that generates PostScript, but it is a completely bizarre language and very difficult to use and learn. Revue requirements for drawing (e.g., from staff around the department, from PhD students), as well as proposed solutions (e.g., object oriented MetaPost, dot, etc), and design and build a system.
Personally, I'd prefer a language that can be used easily from Latex. I'd also like one that can do artistic things, like drawing with nibs or charcoal rather than just those technical constant width lines you get everywhere.
Model checking languages such as Spin (http://spinroot.com/spin/whatispin.html) and SMV can be used to specify and explore interactive devices. Using any such tool (and preferably on OSX), specify and explore the interaction properties of devices such as car radios, mobile phones, MP3 players — or syringe pumps (see related project).
We are building an analysis and simulation tool, MAUI, which can analyse and simulate simple interactive devices. MAUI is written in Java. But there is considerable scope for more work: there are all sorts of analyses that could be added; all sorts of features for designers; all sorts of features to make it more accessible (e.g., generating SVG); and so on.
See http://www.uclic.ucl.ac.uk/usr/jgow/maui
Will Thimbleby (a PhD student recently here) has implemented a new calculator, based on gesture recognition. He has some project ideas for students wishing to work in areas such as handwriting recognition, two-dimensional parsing, zooming/fisheyes for small (e.g., handheld) displays, and so on. (Currently everything is in Java.) He will happily give people demonstrations; email him at will@thimbleby.net
Eclipse is an excellent and flexible program development environment. Extend Eclipse to handle warp, or a warp-like idea. See http://www.cs.swan.ac.uk/~csharold/warp/index.html for details, and a Java program to start you off!
See stuff on regular expressions, as well as the very nice paper Regular-expression derivatives re-examined and web site on the end of yacc.
This project would implement a high-dependability user interface based on some or all of these ideas.