This page gives a broad overview of the COMP3431/9431 Robot Software Architectures course. This web site is an ikiwiki based wiki and most pages are editable by anyone enrolled in the course. Pages are all publicly readable. You'll need to use your normal CSE account name and password to log in to make changes. All changes are logged.

Course Introduction Page Contents


This course gives both a theoretical and a practical introduction to the control of robotic systems. The course is in two parts:

An overview of robot software architectures:

This part of the course gives students an introduction to the structure of robot software, including the theory of decision making: How can an agent build up knowledge of its world? Having done that, how can an agent choose its actions? A variety of different decision making and planning architectures are covered; including classical planning, reinforcement learning and cognitive architectures. In labs, students will get hands on experience with some of these planning systems.

Practical Robotics

This part of the course gives students a practical introduction to some specific robot architectures; the main system architecture will be the Robot Operating System, ROS. We will be using TurtleBot Robots, or other robots as available.

At the end of this course, students should have:

  • experience with the details of one robot architecture,
  • an overview of a range of other architectures and decision making systems,
  • an understanding of the practicalities of programming physical robots as opposed to purely software systems,
  • an understanding of a robot as a complete system, as well as its component parts.


This course is for postgraduate students (COMP9431) and advanced undergraduates (COMP3431). It is a 3rd year course because it has few pre-requisites.

Students in this course are expected to be able to program in C++, Java or Python.

While not a formal pre-requisite or co-requisite, it is recommended that students take a machine learning course if they are interested in artificial intelligence, eg COMP9417. That course does not need to be taken before this one. The artificial intelligence course, COMP3411, is also recommended but it does not give the depth of Machine Learning knowledge that is useful for this course. While it isn't a formal pre-requisite, students who have already taken COMP3411 or an equivalent course often find this course easier.

Because there are only a small number of robots, this class is limited in size. A minimum WAM is required for the course. For people who have a WAM below the required WAM, there is a waiting list. That waiting list is used to fill up any positions remaining just before the start of the semester.

Course Web Pages

You're reading them :).

As noted above, this is a wiki and many of these pages are editable by people enrolled in the course. The git repository for the wiki has read-only access here:


Lecturer-In-Charge: Claude Sammut. The labs will be handled by Tim Wiley

Teaching style and other fuzzy stuff

The class has traditionally been fairly small (20-30 students). There is no textbook that covers all the topics at the right level of detail for this course, so there is no set text, but there are recommended references below.

The assignments are all group-work. Furthermore, the assignments are graded is a style more like a design class than a computer science class: you demonstrate your robot doing what it does, and then the class discusses why it behaved that way and whether that is, on balance, a good thing. You will also write a final report to accompany your main project.


Course notes and rough syllabus are available on the class wiki. Assessment will be by project work and a report.

Reading Materials

There is no set text for this course. However, the following books are recommended:

Artificial Intelligence: A Modern Approach; S. Russell and P. Norvig
This is a good overview textbook for artificial intelligence in general. If you were going to get one book on AI, this would be the one I'd choose.
Probabilistic Robotics; S. Thrun, W. Burgard and D. Fox
This is a newer textbook covering "perception and control in the face of uncertainty". It covers those areas well, but doesn't have quite the breadth of this course.
Automated Planning: Theory and Practice; M. Ghallab, D. Nau and P. Traverso
This book focusses on the planning and decision making areas of artificial intelligence. It goes goes into more detail in that one area. It provides a readable introduction to this area of artificial intelligence.
Reinforcement Learning: An Introduction; R. Sutton and A. Barto
This is a good book on reinforcement learning and Markov Decision Processes, in the same way that "Automated Planning" is a good book on planning systems: it covers its section of AI well.
Machine Learning; T. Mitchell
While machine learning is only touched on in this course, I consider it a very important part of AI and robotics, so I'm putting this book here anyway.
Markov Decision Processes: Discrete Stochastic Dynamic Programming; M. Puterman
This book focuses in great detail on the theory of Markov Decision Processes. It is almost 10 years old now, and so lacks some of the newer contributions to the field, but it is an excellent reference on the mathematical theory of stochastic decision making.


There are two large assignments worth 20% and 35%, and a final report worth 35%.

You will also be given reading assignments in some weeks. to give you an incentive to actually read the papers, you will be asked to submit a one paragraph summary. Overall, these will be worth 10% of your marks.

Due dates are on the calendar section of the web page.


  • Assignments: 20%
  • Assignments: 35%
  • Final report: 35%
  • Reading reports: 10%

Lectures and Assignments are similar between COMP3431 and COMP9431 students.
Units of credit: This is a 6 UOC course


The course timetable is available online.


Like all CSE courses, plagiarism is not permitted. See the CSE Plagiarism guide for the School's policy.

You will have access to open-source code that solves many problems. You are encouraged to look at that code, understand it, and then write your own code based on that understanding. The assignment sheet will clearly state which code you are allowed to include directly in your submission. Apart from that explicitly allowed code, all code you submit should be written by you or your team. A member of each team must be able to clearly explain any of your code.