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 > spc

Systems Programming in C

Course offerings

Why should I study Systems Programming?

What will I learn?

An introduction to C

  • Syntax of functions and basic structure, keywords, expressions;
  • Variables, scoping and lifetime, types and type conversion;
  • Arrays and pointers;
  • Run time stack, function invocation, parameter passing, passing arrays;
  • Memory: segments (automatic, static and dynamic);
  • Dynamic storage allocation;
  • Compilation process: preprocessor, compiling object code;
  • Static and dynamic linking;
  • File I/O: streams, reading and writing files.

System programming

  • Design philosophy;
  • Command line options, I/O redirection, pipes;
  • Profiling tools (gprof), binary tools (ld, ldd, nm);
  • Debugging (gdb, ddd);
  • Basic shell scripting;
  • Build tools (make);
  • Signals and handling;
  • I/O: synchronous and asynchronous
  • Threads: pthreads - simple intro
  • Timers and uses: real time and process time
  • Simple games/animation to illustrate the above and possible ways to multi-task, concurrently handle input and action.

What should I know before I enrol?

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 Systems Programming in C:

  • Operating Systems examines the additional hardware required to run a modern operating system (such as Windows, Linux, or OS-X), and shows a number of subtle 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.

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