Resources for Students
On this webpage I provide some resources which are hopefully helpful for some students. Well, and of course the idea is also to save me (and my co-supervisors) quite an amount of time since students often write a thesis report for the first time, so we end up explaining the same thing over and over again. So instead I provide some of this material here, I hope it's helpful!
Please let me know if some of it can be improved. :)
About Research Projects
There are several skills you need to master, e.g.,
- Finding related research (papers)
- Writing your report
- Presenting your work
In particular the writing part is quite challenging for a beginner as there are conventions that need to be learned. Please consider:
- Presentations on Research Projects. This zip contains two presentations: (1) on literature research and (2) on scientific writing.
- LaTeX templates. The product of approximately 5 years of development and constant improvements, you can find the following LaTeX templates in a public (read-only) repository:
- Presentations. For creating short presentations. Note that this design does formally not comply with the ANU style guides (cf. ANU templates) in the sense that it uses another corporate design (colors), but all other "hard constraints" are fulfilled (e.g., the required borders around the ANU logo).
- Lecture slides. Almost the same as the one above, but with more complex project structure so support large courses. If you give lectures with LaTeX, it's definitely worth checking out!
- Posters. At many conferences, in-person or even online, feature poster sessions. For this, this template might come handy.
- Theses and Project reports. This template, created by me late 2021, is now the official template at the School of Computing at the ANU. It's so much more than just a LaTeX template! It also contains a lot of advice that's particularly helpful for beginners in either LaTeX or scientific writing. So, even if you use another LaTeX template you are still very likely to benefit from just reading the document.
- Checklist for Theses. This short text file contains a list of simple checks you can perform before submitting your (Honours, PhD or whatever) thesis. It contains commonly made typos such as word repetitions (like "is is", "the the" etc.) or typos (like "their" vs. "there").
- Marking Guide for Honours theses. This marking guide was created by John Slaney a few years back. At least until 2020 it has still been in use, though it's not anymore. But even if it's technically not used anymore to be distributed to us faculty to mark, chances are high that parts of it are still in the newest version that's used today. Bottom-line: It's probably a good idea to check this early to find out whether there are any bigger misses, so you can still prevent them! Would be a shame to miss out on a few marks just because you didn't give the future work section adequately much weight (although you easily could have done that), right?
- Re;ated tp the last few points about writing a thesis I can strongly recommend to read the following short paper on thesis writing which contains high-level advice on writing a thesis (especially in Australia). It is a really easy read and not boring at all. Quite the opposite of a typical scientific paper: It mainly consist of a list of easy to digest advice on how to write a thesis. It's a great literature that's especially useful when starting to write a thesis.
Further Resources
-
(LaTeX) Tikz library for drawing AI plans, which has been used in several publications and presentations. Quite useful once you got used to it. :) Created by Mario Schmautz, a former student at Ulm University, Germany. I've put it into the same repository as all my LaTeX templates.
-
Beginner's Info on using git. Everybody uses github, and here at the ANU we also use our own git. We do this for pretty much everything, not just program code, but also research projects or for teaching in general. One info that I'd like to promote here is that temporary files should never be committed/pushed. That should be very obvious as they don't contain information that's worth keeping; they are just temporarily created for the specific use, like log files. This even includes (build) PDFs, although those are what we aim at! The reason why we don't push temporary files is (apart from the fact that it's just weird to force others receiving your trash when pulling) that this may very easily lead to conflicts, which wastes time. So in general just never add/commit just blindly everything, but carefully select each file to push by hand. On top of that, it will help to specify a global ignore file where you may list all these temporary files which just never have any right to be committed/pushed. You may use and extend my global git ignore. You will have to remove the file's prefix (without it, it becomes invisible on Linux, which is why I added this prefix so that it doesn't get lost :)). I assume you are able to find out (google it...) how to set a "global git ignore file". Also note that I would never put PDF files into a global ignore list since very often PDF files are used as source files, for example when creating plots for papers, so don't put "*.pdf" into this list. Instead, you should create a ".gitignore" for each new project that you create and put the name of your specific main file in there. That way, your compiled project PDF (paper, project report, thesis, or whatever) will not be pushed. This ignore file should of course be pushed to your respective repository. On top of that, the following scripts might be helpful to always keep your repositories up to date:
Basics to get started with Planning
If you don't have any knowledge about planning at all, then start here, i.e., with classical planning, the base-case of planning. This is a planning problem class that's as simple as it could be. I.e., it uses basically zero extensions (no time, no hierarchy, no uncertainty, etc. etc.) -- perfect to get started!
Here are some recommendations for self-studying, listed in order of recommended reading:
- The webpage https://planning.wiki basically serves the very same purpose as this very section you read right now! So it's yet another list of references to lecture slides, tools, and much more. It also contains explanations on planning itself.
- Some of the related material I produced:
- If you literally know nothing at all about AI planning, then my Hands-on Introduction to Classical Planning lecture should be a perfect start. I delivered it in 2022, but it's so basic that it should be timeless. It's a 60 minute lecture plus 20 to 25 minutes of modeling exercises that you are asked to do during this lecture in the last part (where you are asked to pause the video).
- ANU Guest Lecture: Introduction to Search and Classical planning. Slides. It conveys several important foundations, though no video recording is available.
- Complete Course at Ulm University, Germany on Hierarchical Planning. Note that you should only pick those lecture units which are on classical (i.e., non-hierarchical) planning. There's quite some overlap with the previous material. Only slides are available, no lecture recordings.
- Now that you should know about the most foundational definitions, you should be able to read a (semi-)scientific paper on that matter: A fun paper about the motivation and some of the research directions in classical planning including some of its most influential research results: Everything You Always Wanted to Know About Planning (But Were Afraid to Ask) by Jörg Hoffmann
- Still not enough?
- Check out http://education.planning.domains/, which provides a lot of material, such as lecture slides, tutorials, and video recordings! It also contains a convenient/easy to use online editor (with integrated planning system) for modeling PDDL. Worth more than just a quick look! (Note that this editor is used hands-on introduction to planning/PDDL that is linked above.)
- I can also recommend a list of tutorials (and summer schools) myself (some might also be linked from the above, I don't know!). A tutorial is essentially a lecture for either young researchers or for researchers working in a different field. (And summer schools are closed events with many tutorials plus lab sessions.) It's usually between 2 and 4 hours and provides an overview of some very specific subtopic. People giving a tutorial are usually very well known in their field, so most are definitely worth it!
Basics to get started with HTN Planning
You do understand the basics of planning already? Great! Then you can move on studying Hierarchical Task Network (HTN) planning. :)
Some recommendations, again listed in order of recommended reading:
- Start with our IJCAI survey paper from 2019 on HTN planning, since it is written for non-experts, i.e., without much technical content. Disregard all contents about HGN or GTN planning, i.e., read until (including) chapter 3.1.
- After that, for more technical definitions, read the paper which introduced the simplistic HTN formalism, but only until section 2 (inclusive) to get the full technical definitions. If you know the basics of complexity theory, also read section 3.
- By this point you should have understood the problem class of HTN planning, i.e., how is the problem defined, which includes which task networks are considered solutions and which are not. You should now be able to follow the following material:
- Tutorial on HTN planning, which explains all that in a bit more detail (though only slides are available) and also explains some search algorithms for solving such problems.
- My course at Ulm University, Germany on Hierarchical Planning. Website.
- You may now read until (including) page 10 (Def. 4) of our JAIR 2020 article, after which you will understand the standard (progression) algorithm for solving HTN problems.