I am looking for highly motivated students to undertake research in parallel programming models, resilience, and numerical computing. If you are interested in studying with me, please begin with the following steps (stolen shamelessly from Prof. Steve Blackburn):
- Make sure you understand the degree program you’re interested in.
- If you are interested in a PhD or MPhil, please start by reading our College’s student Web page.
- If you are an ANU student interested in Honours, please understand the requirements for Honours entry.
- Before you do anything more, please look at my publications to get a sense of my research directions. You may also consider the student projects described below. Note that these projects are only indicative and are not and never will be exhaustive—in practice, most projects emerge from a discussion with myself and the student involved…
- If you’re still interested:
- If you’re interested in a PhD or MPhil, please complete our College’s pre-application process including self-assessment for graduate study, and email me (with the words “PhD/MPhil Enquiry: ” at the start of the subject line), as well as mailing the address indicated on our College web page.
- If you’re an ANU student interested in Honours, please email me (with the words “Honours Enquiry: ” at the start of the subject line) and we’ll set up a time to talk.
Reliable Numerical Computing for Physical Simulation
Area: High Performance Computing
Eligible degree types: Advanced Undergraduate Degree, Honours, Graduate, Masters coursework & research, Higher degree by research
Numerical computing is a fundamental tool for scientific and engineering applications – but can we really trust the results? Typical numerical computations incorporate error from multiple sources: input uncertainty, sampling (discretization) and roundoff. In a floating point computation, failing to account for sampling and roundoff error may generate results that are apparently exact but are actually wrong. Trusting these results could lead to confusion, or catastrophe! 
Unum computing  promises to eliminate sampling and roundoff error by operating on variable precision intervals called uboxes, which are guaranteed to bound correct results. Unums also promise reduced cost compared to existing floating-point number formats as they require on average fewer bits to store each number, potentially saving both memory and bandwidth.
Despite these great promises, unum computing has yet to be proven for significant scientific applications. This may be due in part to a lack of programming model and library support, and also to limitations in current understanding of suitable numerical methods and their associated costs. Unum computing has also been criticized as impractical or even dangerous for incurring excessively greater costs for certain computations compared to floating-point, and for discounting the need for traditional error analysis. 
In this project, you will critically evaluate unum methods through practical applications in physical simulation. You will contribute to current understanding of unum computing (both benefits and limitations), and so help drive an exciting new area of numerical research.
- Evaluate the flexibility and performance of unum computing for physical simulation
- Enhance support for unum computing in a major numerical programming environment
- Sound programming skills
- Strong interest in numerical computing, applied mathematics and/or physics
High Performance Physical Simulation with the Julia Language
Area: High Performance Computing, Programming Languages, Design and Implementation
Eligible degree types: Undergraduate, Advanced Undergraduate Degree, Honours
Computer simulation is fundamental to many areas of science including chemistry, materials science and fluid dynamics. Computer experiments can be conducted over a wider range of conditions and at scales (both very small and very large) that would be impractical for a physical experiment. As the complexity of scientific applications increases, programming models must evolve to support productive development of codes that fully exploit the parallelism available on modern computer architectures.
Proxy applications are used by domain scientists to communicate requirements to hardware architects and system software developers . A proxy app provides a critical tool to evaluate parallel programming models for high performance scientific computing, by capturing the essence of a complete scientific code in a small specification that is flexible enough to permit varied and creative implementations.
Julia is a modern language designed for productive development of high performance numerical codes . As well as generating efficient, vectorized code, Julia supports both multithreaded and distributed multi-task parallelism. In this project, you will use one or more scientific proxy apps to evaluate and extend the parallel programming model in the Julia language.
- Evaluate the Julia parallel programming model using one or more scientific proxy applications
- Improve support for high-performance computing in Julia
- Strong programming skills
- Interest in numerical computing, applied mathematics and/or physics