Skip to main content

We are aiming for an incremental return to campus in accordance with guidelines provided by NSW Health and the Australian Government. Until this time, learning activities and assessments will be planned and scheduled for online delivery where possible, and unit-specific details about face-to-face teaching will be provided on Canvas as the opportunities for face-to-face learning become clear.

We are currently working to resolve an issue where some unit outline links are unavailable. If the link to your unit outline does not appear below, please use the link in your Canvas site. If no link is available on your Canvas site, please contact your unit coordinator.

Unit of study_

COMP9017: Systems Programming

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.

Code COMP9017
Academic unit Computer Science
Credit points 6
Prerequisites:
? 
None
Corequisites:
? 
None
Prohibitions:
? 
COMP2129 OR COMP2017 OR COMP9129

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.

Unit outlines

Unit outlines will be available 2 weeks before the first day of teaching for 1000-level and 5000-level units, or one week before the first day of teaching for all other units.

There are no unit outlines available online for previous years.