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.
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.