[ preamble | concurrent graphics | concurrent OS | lightweight CSP ]
This page is a pool of various project suggestions, targetted largely at PhD level and very open-ended. These relate to my main research interests; you can get a better idea of all that on my university home-page. Some of these may or may not be the same as those on the research group's project page. If you're interested in postgraduate study (at UKC), further information (relating particularly to application/funding) can be found on the department's postgraduate study page. Home-pages for the software engineering research group and concurrency research sub-group may be of interest.
Of course, you're very welcome to suggest your own research project (or modify an existing one). These ideas/suggestions could also be MSc (research) projects, with some suitable scaling/pruning. Feel free to mail me if you have any questions. The department has a postgrad research FAQ that may answer some.
The mechanisms that application programs and graphical user-interfaces use to communicate are typically sequential, and often have relatively high overheads. Although a variety of approaches have been developed to remove some of these overheads (e.g. memory-mapped frame-buffer regions, direct-to-card GL support) a lot of the basic I/O mechanisms remain slow. Furthermore, with an application that has a multitude of windows on the screen, a lot of time both in the GUI and the application are spent mapping between on-screen 'visibles' and the corresponding program objects.
This project will survey the different mechanisms used to provide windowing systems (e.g. Microsoft Windows, the X Window System, Fresco (Berlin) and the Plan9 Windowing System) and the graphical 'toolkits' that typically sit between the application and the windowing interface (e.g. WX-windows, GDK/GTK/GTK+, Swing/AWT, and many more). The project will then investigate how concurrency can be leveraged to an advantage throughout -- from application processes or objects, through a common interface toolkit down to the driving of hardware (often through a framebuffer). Development is expected to take place in the context of the RMoX operating-system using the occam-pi programming language. The focus, however, is on the concurrent abstractions.
Work is currently underway building CSP-based operating-system components. Implementation aspects of this project range from concurrent components (device-drivers, file-systems) down to low-level hardware interaction (e.g. controlling memory protection). Our key aims for this system are safety (formal methods), security (guarding against programmer error), scalability and reliability.
There is ample research opportunity within this project, and much may be relevant to other research areas. For example: investigating concurrent user interfaces; concurrent file-system management; and the management of a distributed concurrent operating-system.
The majority of CSP-supporting environments are targeted for modest hardware, such as the PC and Sun workstations. Earlier research in this field produced CSP run-time environments for devices such as the PIC micro-controller and SHARC embedded DSP processor.
Modern small-scale hardware has changed dramatically, with many devices incorporating processors from the ARM family -- the Ipaq and Zaurus, for example. Still smaller devices exist, such as the `Lego brick', often with limited processing and very finite memories.
Research in this area would ideally produce run-time systems for these types of device, with significant consideration given to their size and performance.
Last modified: Thu Dec 8 01:19:00 2005 by Fred Barnes.