School of Computer Science The University of Adelaide Australia
Computer Science Home
Staff Only
text zoom: S | M | L

School of Computer Science
Level 4
Ingkarni Wardli Building
SA 5005

Telephone: +61 8 8313 4729
Facsimile: +61 8 8313 4366

You are here: Computer Science > Courses > Level-3 > edc

Event Driven Computing

Course offerings

Why should I study this course?

Modern software is controlled through graphical user interfaces (GUIs), that allow users to "fill in a form" on the screen, and click buttons. This style of input is very convenient for users, but makes things more complex from the computer's viewpoint, because users can enterer data in any order, and at any time. For this reason, building GUI-based programs to accept user input is substantially more difficult than building old-style computer-prompted input. You may already know from your own experience that it is very easy for a GUI program to have bugs that remain undetected for a long time, then cause an unexpected (and probably unreproducible) crash.

GUI programs are just one example of event-driven systems, which must react to a number of events when they occur. Programs of this type exist in most electronic equipment that you own, such as your car, microwave oven, DVD player, iPod, and so on.

Writing bug-free event-driven programs requires that you think about the problem in new and unfamiliar ways. This course introduces appropriate techniques for building reliable event-driven programs.

Large software systems are hard to build. Experiance has shown, however, that many large systems are constructed in "similar" ways. By studying these similarities, called design patterns, you can learn how to construct future programs in the same way, thus ensuring that your program will work correctly, and will be easy to modify in future.

Building GUIs that are easy and intuitive to use, requires that you know how big to make buttons and fields, and where to locate them on the screen. This problem, known as man-machine interaction, has been studied by psychologists and others, and is important knowledge for a GUI designer.

What will I learn?

We introduce the concepts and techniques underlying finite-state-machines, including:

  • The definition of Alphabet
  • The definition of String
  • The specification of a deterministic Finite-State Automaton (FSA)
  • The specification of the state-transition function
  • The definition of a non-deteministic FSA (NFA)
  • A method for converting an NFA to a deterministic FSA
  • The concept of epsilon-transitions
  • Regular expressions, and their relationship to FSAs

We introduce a number of design patterns:

  • Adapter
  • Decorator
  • Singleton
  • Strategy
  • Iterator
  • Visitor

We cover material on GUI construction:

  • Overview of how GUIs work
  • Coordinate systems
  • Graphics drawing primitives
  • Event-handling mechanism
  • Model-view-controller paradigm

What should I know before I enrol?

The assignment work will assume you are a confident object-oriented programmer, and requires extensive programming in Java. If you are not a confident programmer, you will find this course very difficult.

The following courses provide the skills you will need:

What comes next?

If you are invited to enter the honours computer science program (see Honours Degrees) the following courses are of interest.

  • The course cds will greatly extend your knowledge of concurrent systems.
  • The course css will use finite state machine models to explain the operation of communications protocols.

What do students think of this course?

From time-to-time, we ask students to give their opinion of this course, and allow the lecturers to respond to the evaluation. The most recent results, labelled 'courseEvaluation', and 'courseResponse' are here:

Handy links


The information presented here should apply to most students. It is possible, however, that special conditions may apply to you. You can find out by reading the University Calendar program rules