The University of Western Australia
CITS2002 Systems Programming

Department of Computer Science and Software Engineering

CITS2002 Systems Programming

Overview for 2019

Welcome to the CITS2002 website for 2019. This is a face-to-face unit, not an online unit. All teaching materials and resources for the unit will be published here. No teaching materials are published on UWA's LMS, though you'll need to navigate through the LMS to reach lecture 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 input and output, memory management, and file systems.

The C language is introduced through discussions on basic topics like data types, variables, expressions, control structures, scoping rules, functions and parameter passing. More advanced topics like C's run-time environment, system calls, dynamic memory allocation, and pointers are presented in the context of operating system services related to process execution, memory management and file systems. 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

Dr Chris McDonald, Rm 2.20 of the CSSE Building,

Weekly consultation time (Office Hours)

email for an appointment.

Weekly Timetable

Students are strongly encouraged to attend the two 1-hour lectures and the 1-hour workshop each week (starting week 1), and one 2-hour laboratory session each week (starting week 2). The lectures and the workshop are recorded, but be aware that recordings sometimes fail. Each week's workshop and each week's lab session will focus on and extend material from the previous and current weeks.

The weekly UWA Timetable for CITS2002 (the mid-semester test is, of course, only held in week-5 of semester).

Workshops reiterate the material introduced in the lectures and provide review exercises for students who need extra assistance. Workshops are held in a standard lecture venue, and no (or very little) new material is introduced. Students should use these sessions to ask questions about the lecture material and to seek assistance in solving the week's workshop problem. Students should attempt these exercises before attending the workshop. Attendance at workshop classes is not compulsory.

Weekly laboratory sessions, which reinforce lecture material, are a very important component of this unit; Each student will need to undertake 4-6 hours of practical/laboratory work each week.

Attendance at laboratory sessions is not compulsory (in fact we do not have enough laboratory times available for the whole class). Instead, there are a number of 2 hour laboratory periods each week at which students will be able to gain assistance from laboratory demonstrators. Students are encouraged to attend at least one of these sessions each week to informally assess their progress. All of our laboratory sessions will be held in CSSE Lab 2.03. Please keep in mind that other units also use Lab 2.03, (at Tuesday 9-11, Tuesday 2-6, and Wednesday 2-4) and may not welcome CITS2002 students at these times.

Laboratory assistance: Mon: 10-12, 12-2, 2-4.
Tue: 11-1.
Wed: 10-12, 12-2.
Thu: 10-12, 2-4, 4-6.

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


The assessment for CITS2002 comprises a mid-semester multi-choice test, two programming projects, and a final examination. Students may choose to undertake each project individually, or with one other student. 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 20% 9am, Fri 30th Aug (wk 5)
1st programming project 20% 11:59PM, Fri 13th Sept (wk 7)
2nd programming project 20% 11:59PM, Fri 18th Oct (wk 11)
Final examination 40% 2 hours in November 2019


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

Department of Computer Science and Software Engineering

This Page

Written by: [email protected]