PhD in PL
Looking for PhD Students
Are you thinking about getting a PhD in Computing, and specifically doing research in the field of Programming Languages?
Consider working with me!
I have a number of PhD scholarships available that can fund you for the full duration of a PhD in Australia (typically around 3.5 years). Most of these are attached to research in Gradual Typing under an ARC DECRA grant. However, I am in principle open to advising any thesis project that matches my expertise around programming language design and implementation, and there are various other options for scholarships, in particular for Australian Domestic students, but also some for international students. See more information below.
The short version is:
- Check that you satisfy the requirements:
- Research Qualifications - Bachelor's Degree with Second-Class Honours - Upper or higher (i.e. have done a research thesis), or equivalent. See Pre-Application Process
- Programming Language Background - knowledgeable in at least one of:
- Compiler Implementation (e.g. ANU COMP4712/8712)
- Programming Language Theory (e.g. ANU COMP3610/6361)
- Interactive Theorem-Proving (e.g. Software Foundations Vols 1 & 2)
- Research Interest in Programming Languages - ability to write a reasonable research proposal for your PhD
- Read up how to best contact me: further down
Topics
My main research project is to try to get Gradual Typing ready for adoption in a new generation of major industrial programming languages. See the Gradual Typing Research Project page for more information on the project and links to the relevant papers. Additionally, you can see the kind of work I am interested in more generally in my publications or project listing; you may also look at my ideas for future work in my Research Statement. A PhD is not a trivial endeavour, and the potential topic needs to match your own interests at least as much as mine in order to have realistic chances of success. That being said, you do not necessarily need to know all the details right now, and I am happy to chat! See the details on how to contact me further below, but please first check about your general eligibility for a PhD, detailed in the next section.
ANU's Foundations Cluster has a number of researchers in related areas that are looking for PhD students. The researchers at ANU with the closest interests to mine are Alex Potanin and Liam O'Connor, who might also be interested in working with you.
Requirements
A PhD is a serious undertaking in which you show that you can meaningfully contribute to humanity's collective body of knowledge. Different countries have slightly different academic systems that determine how various academic programs work. In Australia, a PhD program contains no coursework and has relatively strict bounds on the time you can take (at most four years). What this means is that you need to be prepared to start a PhD-level research project right from the start.
The following three points try to express this. If you satisfy these requirements, you are in a good situation to start a PhD. Conversely, it may not be obvious that you fulfill one or more of them. This may particularly true for people with non-traditional backgrounds. That should not necessarily discourage you. I am in principle still available to chat with you about your options. I encourage you to talk to any more local mentors - teachers, supervisors, and the like - you might have about what they think about your skills, experience, and interests. Also, consider SIGPLAN-M, the long-term mentoring program of the programming languages research community.
1. Research Qualifications
In order to start a PhD, the core formal requirement is that you have research experience equivalent to at least an Australian Bachelor's Degree with Second-Class Honours - Upper (First Class Honours are often required). Please complete the Pre-Application Process outlined on the School of Computing website to assess whether you satisfy this condition.
2. Programming Languages Background
You will need to have at least some experience with at least one of the key techiques used in programming language research, which can be roughly divided into the following:A. Compiler Construction
A sufficient level would be based on having taken a standard advanced undergraduate course in compiler construction, which would typically feature building a compiler in stages from lexing to code generation. At ANU, the relevant course code would be COMP4712/COMP8712. Similar knowledge could also be acquired in industry experience.B. Programming Language Theory
To self-assess your knowledge here, do you know how to formalize small-step operational semantics for a basic programming language (e.g. simply-typed lambda calculus), and prove progress and preservation? At ANU, this knowledge would be covered in COMP3610/COMP6361.C. Interactive Theorem-Proving
Do you have any experience with interactive theorem provers, such as Coq/Rocq, Isabelle, HOL4, or similar? At ANU, this is typically taught in a special topics course, such as COMP4011/COMP8011. Another possible source of such knowledge is having gone through Volumes 1 and 2 of Software Foundations.Other General Computer Science Knowledge
Ideally, you should also have working knowledge of topics covered in typical higher-level undergraduate algorithms and systems courses.3. Research Interest
It is important that your PhD research matches both your research interests and mine. Think about what it is that motivates you to do a PhD. What are the kinds of problems that you would like to solve? Look at my papers and others from major programming languages conferences: SPLASH/OOPSLA, ECOOP, PLDI, POPL, and ICFP. Are there any that appeal to you in particular?Contact Me!
IMPORTANT: Faculty get lots of e-mail, and a lot of it is spam. If you send me an e-mail regarding a potential PhD position, please include the word "Supercalifragilisticexpialidocious" at the top of your e-mail, so I can see you did at least a minimal level of due diligence. If you do this and do not hear back from me within a week, I am sorry - please follow up!
The next step is to contact me (admission requires naming a potential supervisor and securing their approval), which you do by sending me an e-mail to [firstname].[lastname][preposition]anu.edu.au. Depending on your situation, you should include some information about yourself:
- University-level transcripts (unofficial is fine)
- Your CV
- If you are currently a student at ANU:
- You can just ask for a meeting to discuss options for a PhD. If you want, include details about your research interests. I encourage you to do this early, and to consider taking courses
- If you have research experience with someone who published at OOPSLA, PLDI, ECOOP, POPL, or ICFP, or similar top conferences in related areas, and are applying to graduate schools elsewhere, too, you can simply send me your application materials without additional comment, including:
- Your personal research statement
- Contact data for 2-4 references, at least one of which concerns your programming languages research experience
- Otherwise:
- A brief description of your research interests and how you think they match with my research
- A brief explanation of how you satisfy the requirements listed above; if you are unsure about any of them, that is fine - just mention that
Other Details
Funding includes a tax-free stipend for up to four years (3 years plus a default 6 month extension plus up to 6 more months if you do an industry internship in the middle - which I highly recommend). Typically, you will also be eligible for a tuition waiver, though technically speaking, that is not up to me.
See the School of Computing's PhD website for more details about the relevant processes.
Admission is technically year-round: since there is no coursework, the sequence of semesters does typically not affect you. The main exception is that there are two rounds in which the University awards merit-based scholarships. Where I have grant-based funding for you, you technically do not need such a scholarship, but it would still be a nice thing to put on your CV if the timing works out. The relevant deadlines are typically in April (both domestic and international) for admission in Semester 2 of the same year, and in August (international) or October (domestic) for admission in Semester 1 of the following year, and any application that is completed by the relevant date is automatically considered.