Skip to main content
Unit of study_

COMP9017: Systems Programming

2025 unit information

In this unit of study, elementary methods for developing robust, efficient, and re-usable software will be covered. The unit is taught in C, in a Unix environment. Specific coding topics include memory management, the pragmatic aspects of implementing data structures such as lists and hash tables and managing concurrent threads. Debugging tools and techniques are discussed and common programming errors are considered along with defensive programming techniques to avoid such errors. Emphasis is placed on using common Unix tools to manage aspects of the software construction process, such as version control and regression testing. The subject is taught from a practical viewpoint and it includes a considerable amount of programming practice.

Unit details and rules

Managing faculty or University school:

Engineering

Study level Postgraduate
Academic unit Computer Science
Credit points 6
Prerequisites:
? 
None
Corequisites:
? 
None
Prohibitions:
? 
COMP2129 or COMP2017 or COMP9129
Assumed knowledge:
? 
COMP9003; discrete mathematics and probability (e.g. MATH1064 or equivalent); linear algebra (e.g. MATH1061 or equivalent)

At the completion of this unit, you should be able to:

  • LO1. apply code quality strategies appropriate for C, including preprocessor techniques, and use of common idioms
  • LO2. use Unix commands and system calls (including usage of flags etc) from online manual system
  • LO3. demonstrate the approach and concepts of Unix, including its tools philosophy, processes (including pipes and redirection), the file system, and the shell
  • LO4. compose correct, clean code in C that allocates, deallocates and manages memory
  • LO5. construct correctly implement standard linked list data structures - higher performance could involve slightly more complicated structures such as binary search trees
  • LO6. assess code execution using debugging tools
  • LO7. apply a thorough automated testing regime using tools such as make, diff, scripts to present the outcomes, and a tool to manage regression testing - higher performance could involve ability to construct such a regime
  • LO8. read and write code that correctly uses the main standard library functions, especially for I/O, file handling, and string handling - higher performance could involve elegant use of these functions, particularly avoiding idioms which are extremely inefficient
  • LO9. evaluate common memory-related errors (such as memory leaks, dangling pointers) and how to avoid these - higher performance could involve detecting errors in example code, and fixing them using debuggers
  • LO10. construct, debug, and evaluate parallel or concurrent programs.
  • LO11. Understand and identify security vulnerabilities in memory usage patterns.

Unit availability

This section lists the session, attendance modes and locations the unit is available in. There is a unit outline for each of the unit availabilities, which gives you information about the unit including assessment details and a schedule of weekly activities.

The outline is published 2 weeks before the first day of teaching. You can look at previous outlines for a guide to the details of a unit.

Session MoA ?  Location Outline ? 
Semester 1 2024
Normal day Camperdown/Darlington, Sydney
Session MoA ?  Location Outline ? 
Semester 1 2025
Normal day Camperdown/Darlington, Sydney
Outline unavailable
Session MoA ?  Location Outline ? 
Semester 1 2020
Normal day Camperdown/Darlington, Sydney
Semester 1 2021
Normal day Remote
Semester 1 2022
Normal day Camperdown/Darlington, Sydney
Semester 1 2022
Normal day Remote
Semester 1 2023
Normal day Camperdown/Darlington, Sydney
Semester 1 2023
Normal day Remote

Find your current year census dates

Modes of attendance (MoA)

This refers to the Mode of attendance (MoA) for the unit as it appears when you’re selecting your units in Sydney Student. Find more information about modes of attendance on our website.