Honours Projects 2002

This page contains outlines of some Honours/Masters projects that I would be willing to supervise over 2001. A complication is that I am also the Associate Dean(International) for the Faculty of Engineering, Computer and Mathematical Sciences and, as a result, need to make a number of short overseas trips over the year. As a result, any students that I take on must be self-motivated and able to work with minimal guidance.

If you want further information on the projects, then please contact me as follows:

Office:    Room 1053, Plaza Building (Computer Science Department)
Phone:    8303 4478
E-mail:    michael@cs.adelaide.edu.au

A Few Words About Me
I am interested in concurrent and distributed systems, software engineering and related areas.  The projects suggested here reflect my interests reasonably well.

I like to think that I am reasonably accessible and approachable.  I like to meet with my honours/masters students about once a week.  This gives us a chance to discuss progress, difficulties and possible solutions, as well as anyhing else that comes up.  Importantly, it provides us with a chance to plan the next weeks activities. Some students like to, or need to, meet more often than once a week - particularly if they come across a difficult patch in the work they are doing - then that is easily accomodated as well.

As far as acting as a supervisor goes, I like to gives students the opportunity to explore areas that are of interest to them.  As a result, I tend to allow students to drive the project direction to a reasonable degree  I see my role as one of providing guidence, someone to bouce ideas off, seek help from etc.  From my perspective, the project is yours and represents an opportunity for you to explore areas of interest, and demonstrate research ability.

Qualities I am Looking for in a Student
I am looking to take on students who are intelligent (which you are by definition of being an Honours/Masters student) and who have an interest in the project that they are about to undertake. Students should be self-motivated to a degree and be keen to explore the topic.  You should not be afraid to express your ideas and follow them. However, you need to be balanced in your approach and practice scientific practices in evaluating your own work.  If you have the basics, we can work together to put together a good solid project.

I like to see students take control of the project and run with their ideas and thoughts.  This means that I like to see students exercise a degree of independance - however, I don't expect this to translate to going off into a dark corner and never seeing me.  My role is to provide some guidence and sage advice.  There is clearly a conflict between these two expectations and so what we need to do is work together to stike a suitable balance between self-direction/independance and guidance/direction.

Your Own Project Ideas?
If you have any strong ideas of a project that fits within my interests, then feel free to come and discuss it with me.  The projects listed below are not the be all and end all of what I am prepared to supervise - they are merely an interesting list of projects that I thought of.  You are encouraged to discuss your ideas and maybe we can shape them into an honours/masters project.

The Projects

Compiler Construction
Most modern compilers are LR in nature.  Parsers are typically generated automatically from a grammer through the use of tools such as yacc which generates an LALR(1) parser.  These are a subset of LR(1) and it is known that LR(1) parsers are generally too expensive in terms of the table size and computational resources to be of practical use.  A new technique developed by Buckley and Oudshoorn handles a wide range of grammars which includes LR(1) grammars.  This project looks at the development of a parser generator for this class of grammars and compares it to tools such as yacc in tems of performance and the class of grammars handled.  There are several ways in which the project could proceed beyond building the parser generator.  The student could explore error recovery techniques, look for optimisations to improve performance and reduce the size of parser tables.

This project represents the opportunity to be at the leading edge of compiler technology and if done well could lead to a publication.

Implementation platform: wide as possible.
Implementation language: a mainstream language - C, C++, Ada, Java, ...

Fault Tolerance in Java
This project develops a Java package and associated support software to provide programmers with support for fault tolerance. The key issue is the checkpointing of the distributed application and the ability to restart the application from the last consistent checkpoint should a failure occur. There is scope within this project to examine alternative strategies such as replication to achieve the same result. It is also important to measure the cost of support for fault tolerance in applications. Therefore probes must be inserted into the code to measure the cost of supporting fault tolerance so that programmers can make informaed decisions with respect to using the package and support software produced or not.

Implementation platform: anything that supports the JVM.
Implementation language: Java.

Visualisation and Expert System to Support Distribution
Distributed systems are difficult to write and difficult to debug because of the fact that some activity takes place on computers other than the one being used of the programmer. Visualisation provides the programmer with a graphic display of what is taking place in the program. Aspects which can be visualised include the value of variables, communication patterns and load. this allows the programmer to identify bugs in the code and to identify performance bottlenecks thereby allowing the programmer to modify the code to achieve corrrect results and better performance. The difficulty with most visualisatino systems is that the data is presented to the user without any commentary and the user s left to decipher the information and make inferences as to what the problems might be. If the visualisation system is language specific, then knowledge of the language semantics is available to the visualisation system and this can be exploited to provide expert advice to the user as to the potential cause of the problem.

Implementaion platform: anything that supoprts the JVM.
Implementation language: Java.

More Projects
Details of further projects will be added over time. Check this page regularly for any updates.