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.

  • I devoted a page on thesis writing advice, including LaTeX templates. I strongly encourage everybody writing a research project (PhD, Honours/Bachelor thesis, small research project) to check it out, in particular the LaTeX template, since it also contains writing advice and commonly made errors.

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.

    • Keeping your Repo "clean": 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.
    • Cleaning up your repo: Assuming you or somebody else has unfortunately already pushed data that should not be pushed to a repo, you might want to identify this so that it can be deleted again. For this, I also wrote a script that identifies undesired files under version control. More specifically, it uses your global ignore list and lists out all files from all your repositories that match them.
    • Keeping your repositories up to date: The following scripts assist in recursively identifying all repositories (and files in it) with uncommitted and unpushed files, as well as with pulling all repositories. Using both scripts, one never has to deal with conflicts again! :) They can be found here:

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, i.e., my IJCAI 2011 paper, 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.