CITS2002 Systems Programming  

Unit home

Lecture & Workshop
recordings on LMS



C textbooks

OS textbooks

Information resources

Extra reading

Past projects

Recent feedback

Working effectively

Welcome to CITS2002 Systems Programming in 2022

Welcome to the website for CITS2002 in 2022.

Deferred and Supplementary examination information - 2022 (February 2023)

All teaching materials and resources for the unit, with the exception of lecture and workshop recordings, will be published here. You'll need to navigate through UWA's LMS to reach the recordings.

Understanding the relationship between a programming language and the contemporary operating systems on which it executes is central to developing many skills in Computer Science. This unit introduces the standard C programming language, on which many other programming languages are based and with which significant systems are built, through a study of core operating system services including process execution, input and output, memory management, and file systems.

The C language is introduced through discussions on topics like data types, variables, expressions, control structures, scoping rules, functions and parameter passing. More advanced topics - C's run-time environment, system calls, dynamic memory allocation, and pointers - are presented in the context of operating system services. The importance of process scheduling, memory management, and interprocess communication in modern operating systems is discussed in the context of operating system support for multiprogramming.

Laboratory and workshop exercises place a strong focus on the practical application of fundamental programming concepts, with examples designed to compare and contrast many key features of contemporary operating systems.

Unit coordinator:

Chris McDonald
Chris McDonald, Rm 2.20 of the CSSE building.

email [email protected]

Weekly teaching sessions

  • Two 45-minute lectures will be presented each week, in the Social Science Lecture Theatre. Lecture sessions are face-to-face, and recorded and their recordings will be available via LMS. You are strongly encouraged to keep up with the lecture material (by attending, viewing the recordings, and reading the prepared notes), and to never get more than a week behind.

  • Each Friday we'll hold a 45-minute workshop session, in the Social Science Lecture Theatre. Workshop sessions are face-to-face, and recorded. Note that the session will be recorded (if privacy is a concern for you). Each week's workshop will focus on, and extend material, from the previous and current week's lecture material. Each workshop will have an exercise sheet, available about a week before the workshop, providing a single programming task. The workshop tasks will not be too difficult, maybe requiring an hour of your time to plan, develop, and test your ideas. Some students view them as review exercises. During the workshop session, we'll complete the task 'from scratch' in the time available, and you're encouraged to discuss why the design decisions have been chosen.

  • Weekly laboratory sessions are a very important component of this unit, that reinforce lecture material, and prepare you for the assessed programming projects. All face-to-face laboratory sessions will be held in CSSE Lab 2.03. For the particular benefit of students stuck outside of Perth, there are two 2 hour online laboratory sessions each week, at which students will be able to gain assistance from laboratory demonstrators. Laboratory sessions are not recorded.

    The laboratory sessions are run as "drop-in-sessions" - times when there's guaranteed to be someone there to help - rather than "everyone gets a seat at their nominated lab session". Students should attend at least one laboratory session per week, and are welcome to attend more if requiring extra assistance. Each student will need to undertake 4-6 hours of practical/laboratory work each week.

  • Participation is not compulsory in any weekly CITS2002 activity (even attendance at the final exam is optional!).

Learning Outcomes

By undertaking this unit, students will be able to:
  1. identify and appreciate the fundamentals of the imperative programming paradigm, using the standard C programming language as an example.
  2. decide when to choose the C programming language and its standard library for their systems programming requirements.
  3. apply the most appropriate techniques to successfully develop robust systems programs in the C language.
  4. understand the role of an operating system in the wider computing context.
  5. understand the relationship and interactions between an operating system's critical components and their affect on performance.
  6. develop an understanding of the relationship between contemporary operating systems, programming languages and systems-level application programming interfaces


This year we will use two past mid-semester tests as items of formative assessment.
Answers will be released on Friday 9th September (and you can mark your own paper!).

The summative assessment for CITS2002 comprises two practical programming projects and a final written examination. Project work is submitted using cssubmit, and your marks and feedback will appear in csmarks.

Assessment % of final mark Assessment dates Outcomes assessed
1st programming project 25% due 5pm Friday 16th Sept (week 7) 1,2,3,5
2nd programming project 25% due 5pm Friday 21st Oct (week 12) 1,2,3,5
Final written exam 50% 2 hours in November All

University policies

Before undertaking this unit, students are strongly encouraged to read the relevant university policies:

The University of Western Australia

Computer Science and Software Engineering

CRICOS Code: 00126G
Presented by [email protected]