The University of Western Australia
CITS2002 Systems Programming

Department of Computer Science and Software Engineering

CITS2002 Systems Programming

Welcome to CITS2002 in 2020

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.

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.

Unit coordinator

Dr Chris McDonald, Rm 2.20 of the CSSE Building,

Weekly consultation time (Office Hours)

email for an appointment, either in CSSE Rm 2.20, or online. Not generally available on Fridays.
Include 'CITS2002' in your Subject: line.


The assessment for CITS2002 comprises a formative mid-semester multi-choice test, two programming projects, and a final examination. All programming work is submitted using cssubmit. As the semester proceeds, your marks will be updated and recorded in csmarks.

Assessment % of final mark Assessment Dates
Mid-semester test (formative assessment)
See: help2002 announcement
0% optional 'take home' test (wk 8)
See: help2002 announcement
1st programming project (individual work) 30% 5PM, Fri 11th Sept (wk 7)
See: help2002 announcement
2nd programming project (in teams of up to two) 30% 5PM, Fri 16th Oct (wk 11)
Final exam information 40% 2 hours in November 2020

Weekly Activities

  • From Week-1 two 45-minute lectures will be available via LMS each week. Lectures will be pre-recorded. You are strongly encouraged to keep up with the lecture material (the recordings and the prepared notes), and to never get more than a week behind.

  • From Week-1 each Friday we'll hold a 45-minute workshop session. Workshop sessions are online, live, and recorded. You're invited to participate online but note that the session will be recorded (if that's a concern for you). Each week's workshop will focus on, and extend material, from the previous and current week. 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 welcome to discuss why the design decisions have been chosen.

  • From Week-2 weekly laboratory sessions reinforce lecture material, and are a very important component of this unit. Laboratory sessions are not recorded. Each student will need to undertake 4-6 hours of practical/laboratory work each week, and are encouraged to participate in part (of any, or all) of the online laboratory sessions each week. We hold a number of 2 hour online laboratory periods each week at which students will be able to gain assistance from laboratory demonstrators. Students are encouraged to participate in part (of any, or all) of these sessions each week to informally assess their progress.

    Laboratory sessions held online, using Zoom, at
    Mon 2pm-4pm,   Tue 2.30pm-4.30pm,   Wed 2pm-4pm and 4pm-6pm,   and Thu 12-2pm and 2pm-4pm.

  • Participation is not compulsory in any of our weekly activities (even attendance at the final exam is optional).

Who'll be helping in laboratories

Chris McDonald

Ryan Bunney

Daniel Cowen

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

University policies

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

Department of Computer Science and Software Engineering

This Page

Written by: [email protected]