CITS2002 Systems Programming  

Unit home

Lecture & Workshop
recordings on LMS



C textbooks

OS textbooks

Information resources

Extra reading

Past projects

Recent feedback

Working effectively

Schedule of topics in 2022

The order and content of lectures for 2022 is now finalised.

The materials presented here do not define the whole unit. Reviewing lecture material comprises about of the effort required for this unit. The remainder of your time should be spent reading the recommended reading, participating in workshops, and undertaking the laboratory tasks and projects.

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

Week Lectures (each Monday and Tuesday) and Workshops (Fridays) Laboratories and Projects
Week 1
Mon 25th July
Lecture-1 (single page)
Administrivia; The C programming language; Why C?; A brief history of C; Standardization.
Lecture-2 (single page)
The structure of a C program; Basic datatypes; Variables, naming, and scope.
Flow-control in C programs; Conditional tests, Boolean values, and conditional execution; Bounded and unbounded loops, and their equivalence.

Workshop-1 - getting started with practical work (recorded, but no slides).

No laboratories this week.

OS and C compiler software

Linux and C compiler basics

Frequently used commands

Week 2
Mon 1st Aug
Lecture-3 (single page)
An introduction to operating systems; A brief history of operating systems; The contemporary role of operating systems.
Lecture-4 (single page)
Functions in C; Passing parameters to functions; Returning values from functions; the static keyword; Functions receiving a variable number of parameters.

Workshop-2 - reviewing Conditions, Loops, and Standard Library Functions
and the heavily commented solution we developed - mycal.

and some sample solutions.
Week 3
Mon 8th Aug
Lecture-5 (single page)
An overview of computer hardware components; The processor and its registers; The memory hierarchy; Code execution.
Lecture-6 (single page)
Aggregate data structures in C - arrays and strings; Initializing arrays and strings; Formatting results into character arrays; Defining and accessing structures; Better representations of our data - enumerated types.

Workshop-3 - reviewing functions and parameter passing
and the solution we developed - haversine.

and some sample solutions.
Week 4
Mon 15th Aug
Lecture-7 (single page)
Operating system processes; The state of an operating system process; Timer interrupts; The scheduling of processes; Process suspension and swapping.
Lecture-8 (single page)
File input and output (I/O); Reading and writing text files; Reading and writing binary data.

Workshop-4 - File I/O and measuring execution time
and the solution we developed - readfile.

and some sample solutions.
Week 5
Mon 22nd Aug
Lecture-9 (single page)
Creating new processes; Parent and child processes; Waiting for process termination; Overlaying a new process image; The importance of the exit status.
Lecture-10 (single page)
Operating system services; The interface between operating systems and programming languages.

Workshop-5 - Project 1 discussion; come prepared with your questions.

1st programming project


Due 5:00pm,
Fri 16th Sept (wk 7)
Week 6
Mon 29th Aug
Lecture-11 (single page)
Addresses and pointers in C; The relationship between pointers and arrays; Pointer arithmetic; Passing pointers to functions.
Lecture-12 (single page)
Dynamic memory allocation; Allocating memory for arrays and strings; Reallocating and deallocating memory; Pointers to structures; Sorting an array of values.

Workshop-6 - creating and managing processes using system-calls
and the solution we almost finished - manychessmoves.

Non-teaching week
Mon 5th Sept
Non-teaching week (no lectures or scheduled laboratories)
Week 7
Mon 12th Sept
Lecture-13 (single page)
An introduction to memory management; Allocating physical memory to processes; Fixed and dynamic partitioning schemes; Simple memory paging.
Lecture-14 (single page)
The principle of referential locality; Memory paging in more detail; Virtual memory.

Friday - no workshop this week

Week 8
Mon 19th Sept
Lecture-15 (single page)
File-system basics; The file management system; Directory structures; File allocation methods.
Lecture-16 (single page)
System-calls and system-defined structures; Accessing structures using pointers; Defining our own datatypes; Finding the attributes of a file; Reading the contents of a directory; File and Directory Permissions.

Thursday 22nd September - public and UWA holiday, no laboratory sessions

Workshop-7 - building a hashtable data structure
and the solution we developed -

and some sample solutions.
Week 9
Mon 26th Sept
Monday 26th September - public and UWA holiday, no lecture or laboratory sessions
Lecture-17 (single page)
Developing C programs in multiple files; Linking; Simplifying program development with make;

Workshop-8 - building a system-utility similar to ls
and the solution we developed -

and some sample solutions.
Week 10
Mon 3rd Oct
Lecture-18 (single page)
Supporting command-line options with getopt. Interprocess-communication using pipes.
Lecture-19 (single page)
Operating system support for users and groups; Properties of the Unix superuser; Changing and setting user information.

Workshop-9 - Project 2 discussion; come prepared with your questions.

2nd programming project


Due 5:00pm,
Fri 21st Oct (wk 12)
Week 11
Mon 10th Oct
Lecture-20 (single page)
Multi-threaded programming; Thread support in standard-C; Benefits of threads; Threads versus processes; Thread creation, execution, and termination;
Lecture-21 (single page)
Waiting for threads; Synchronization using mutexes; Condition variables; When are threads faster, and when slower?

Friday - no workshop this week

Week 12
Mon 17th Oct
Lecture-22 (single page)
Portable systems programs; Using the preprocessor to isolate system-specific code; Preprocessor tokens for C language standards and operating system platforms; System-specific integer datatypes; Unicode support in C11.

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

Friday - no workshop this week

In 2021, a lecture presented an introduction to C++. This is included here, just for interest, and is not examinable in 2022.

A simplified comparison of the C and C++ programming languages (single page)
Header files, declarations, and definitions; Standard I/O streams and file streams; Parameter passing by reference; Structures .vs. classes; Constructors, destructors; Differences in dynamic memory allocation; Function overloading and templates. Mixing C and C++ in the same program;

The University of Western Australia

Computer Science and Software Engineering

CRICOS Code: 00126G
Presented by [email protected]