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-2 > cs

Computer Systems

Course offerings

Why should I study Computer Systems?

Up until now, your experience of computers has probably been obtained through a high-level language, such as Java, that cannot be directly executed by a computer.

Computer Systems takes you 'under the hood', and shows you what a computer is really like. Inside a computer, everything is stored as a binary number:

  • Integers are stored as binary numbers;
  • Characters are stored as numbers;
  • Pictures are stored as numbers;
  • Sounds are stored as numbers;
  • Even the program is stored as a binary number.

All the type-checking you are familiar with in high-level languages exists only within the compiler. After you compile your program into machine instructions, the type information is discarded, and the computer just processes binary numbers within your program, with no understanding of what they mean. One consequence of this is that the underlying machine is a lot more flexible than any programming language you have used before.

Just as a good knowledge of the engine and transmission of a racing car enables a racing driver to get the most from his car, so a knowledge of computer hardware will enable you to improve the performance of your programs.

What will I learn?

You will learn what the hardware of a typical computer system is really like, from the viewpoint of a programmer, including:

  • The important characteristics of memory systems;
  • The structure of a typical modern CPU;
  • How instructions are encoded as numbers, and how the machine executes them;
  • How to translate simple C or Java programs into a equivalent machine-code programs
  • How the typical software-development tools work;
  • How Input/output operations are accomplished, and the operation of a number of typical I/O devices.

In addition, we will revise and consolidatate your understanding of binary numbers, and the way data is stored in computer memory.

What should I know before I enrol?

The exercises in this course require you to write programs using the raw instructions of the DLX machine. This forces you to manage many details of a program that are normally handled by a language compiler. You will find the exercises much easier if you are already able to program confidently in a high-level language, such as C, C++, or Java. The required knowledge can be obtained from the course Object-oriented programming which teaches programming

Prior experience of binary and hexadecimal numbers and elementary machine-hardware concepts would be also be helpful, but is not essential.

Many students take the course Algorithm-design and Data-structures concurrently with this course, and achieve good results. However, you will likely perform better in Computer Systems if you are able to arrange your timetable so that you complete Algorithm-Design and Data-structures before enrolling in Computer systems.

How will my performance be assessed?

Your performance in the course will be assessed in three ways:

  • Practical exercise marks will contribute between 20% and 30% to your final score.
  • The final exam usually contributes the remainder of the marks.
  • Tutorials are not usually assessed. However, we do record your attendance.

The precise details of assessment vary from year to year, and will be explained at the first lecture.

What comes next?

There are a number of courses that follow on from Computer Systems:

  • Computer Architecture extends the material from Computer Systems and looks more closely at modern computer hardware, to see the numerous clever techniques that are used to improve the execution speed of all programs.
  • Operating Systems looks at the special hardware that is needed to run a modern operating system (such as Windows, Linux, or OS-X), and describes a number of subtle programming issues that arise inside operatings systems.
  • Distributed Systems examines the interesting problems that arise when computer programs are executed on a number of computers connected together in a network.
  • Computer Networks takes a close look at how computer-to-computer communications networks operate.

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