The University of Western Australia
CITS2002 Systems Programming

Department of Computer Science and Software Engineering

CITS2002 Systems Programming

Unit schedule in 2019

The materials presented here do not define the whole unit. Attending lectures and reviewing their material comprises about of the effort required for this unit. The remainder of your time should be spent reading the recommended reading, attending workshops, and undertaking the laboratory tasks and projects.

Please note the order of lectures will very likely change throughout the semester. Please refer to this webpage, rather than a printed copy, for up-to-date information.

Week Lectures (Mon 9am, Tue 9am) and Workshops (Fri 9am) Laboratories and Projects
Week 1
Mon 29th July
Administrivia; The C programming language; A brief history of C; Standardization.

Workshop-1 - (recorded, but no handout)
Getting started with practical work.

The structure of a C program; Basic datatypes; Variables, naming, and scope.
No labtimes this week.

General information.


Frequently used Unix commands.

Week 2
Mon 5th Aug
Flow-control in C programs; Conditional tests, Boolean values, and conditional execution; Bounded and unbounded loops, and their equivalence.

An introduction to operating systems; A brief history of operating systems; The contemporary role of operating systems.

Workshop-2 - reviewing C's conditions and loops
Week 3
Mon 12th Aug
Functions in C; Passing parameters to functions; Returning values from functions; Functions receiving a variable number of parameters.

An overview of computer hardware components; The processor and its registers; The memory hierarchy; Code execution.

Workshop-3 - reviewing functions and parameter passing

Week 4
Mon 19th Aug
Aggregate data structures in C - arrays and strings; Initializing arrays and strings; Formatting results into character arrays; Pre- and post-, increment and decrement.

Operating system processes; The state of an operating system process; The scheduling of processes; Process suspension and swapping.

Workshop-4 - reviewing functions and 2-dimensional arrays

Project 1 handed out


Week 5
Mon 26th Aug
File input and output (I/O); Reading and writing text files; Reading and writing binary data structures.

Creating new processes; Parent and child processes; Waiting for process termination; Overlaying a new process image; The importance of the exit status.

Mid-semester test - 9am Friday 30th August (during the standard Workshop time)

Week 6
Mon 2nd Sept
Monday: Lecture-11
Operating system services; The interface between operating systems and programming languages.

Tuesday: Workshop-5 - Designing array-based data structures

Friday: Lecture-12
Developing C programs in multiple files; Linking; Simplifying program development with make; Using 3rd-party libraries.
Week 7
Mon 9th Sept
An introduction to memory management; Allocating physical memory to processes; Fixed and dynamic partitioning schemes; Simple memory paging.

The principle of referential locality; Memory paging in more detail; Virtual memory.

Friday - no workshop this week
Week 8
Mon 16th Sept
Addresses and pointers in C; The relationship between pointers and arrays; Pointer arithmetic; Passing pointers to functions.

Dynamic memory allocation; Allocating memory for arrays and strings; Reallocating and deallocating memory; Sorting an array of values.

Friday - no workshop this week
Week 9
Mon 23rd Sept
Defining and accessing structures; User-defined types; Accessing file attributes and directories in C.

File-system basics; The file management system; Directory structures; File allocation methods.

Workshop-6 - Project 2 discussion; come prepared with your questions.
Project 2 handed out


Mon 30th Sept
Non-teaching week (no lectures or scheduled laboratories)



Week 10
Mon 7th Oct
A program's standard I/O streams; Processing command-line arguments using getopt().

Self-referential data structures; stacks; linked lists; queues; binary trees.

Workshop-7 - Building a hashtable data structure
Week 11
Mon 14th Oct
Bitwise operations; Storing multiple items in a single integer; File and directory permissions.

Operating system support for users and groups; Properties of the Unix superuser; Changing and setting user information.

Friday - no workshop this week
Week 12
Mon 21st Oct
Review lecture.

Lecture-24 - (recorded, but no slides)
Discussion on questions from last year's final examination.

Friday - no workshop this week
No labtimes this week.

Department of Computer Science and Software Engineering

This Page

Written by: [email protected]