School of Computer Science

Module 06-22382 (2010)

Robot Programming

Level 1/C

Nicholas Hawes Semester 2 10 credits
Co-ordinator: Nicholas Hawes
Reviewer: Richard Dearden

The Module Description is a strict subset of this Syllabus Page.


The aims of this module are to:

  • present some of the core problems in building and programming intelligent robots (design trade-offs, choices of sensors etc.)
  • illustrate how problems can be decomposed
  • demonstrate how Java can be used to implement AI algorithms (e.g. informed search) and robot control paradigms (e.g. feeback controllers, the subsumption architecture)
  • present good programming and debugging practice in Java in an applied setting

Learning Outcomes

On successful completion of this module, the student should be able to:

  • implement and deploy Java programs on a robot using the tools provided
  • apply AI and Java knowledge to implement some classic AI/robotics representations and techniques
  • develop a modular robotic system over an extended period of time

Teaching methods

Lectures, labs, group work.


  • Sessional: 100% coursework via regular group exercises, assessed via demonstration and code submission.
  • Supplementary: By repeat only

Detailed Syllabus

  1. Basic knowledge
    • The NXT hardware.
    • The leJOS Java software.
    • Software Engineering for Robot Programming
  2. Dealing with sensors and motors
    • Motor control.
    • Event handling and polling.
    • The basic NXT sensors.
    • Colour-based vision and the NXTCam
  3. Sensor-based control
    • Feedback control
    • The Subsumption Architecture
  4. More advanced knowledge
    • Java collections: ArrayList, Stack and Queue
    • Sorting
    • Generic programming
  5. Search-based control
    • Uniformed search
    • Informed search
    • Adversarial search
  6. Navigation
    • Mapping and localisation
    • Probabilistic road maps