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
Lecture-1 (single page)
Administrivia; The C programming language; A brief history of C; Standardization.

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

Lecture-2 (single page)
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
Lecture-3 (single page)
Flow-control in C programs; Conditional tests, Boolean values, and conditional execution; Bounded and unbounded loops, and their equivalence.

Lecture-4 (single page)
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
and the solution we developed: mycal.c,    first_day_of_month.c.
and some sample solutions.
Week 3
Mon 12th Aug
Lecture-5 (single page)
Functions in C; Passing parameters to functions; Returning values from functions; Functions receiving a variable number of parameters.

Lecture-6 (single page)
An overview of computer hardware components; The processor and its registers; The memory hierarchy; Code execution.

Workshop-3 - reviewing functions and parameter passing
and the solution we almost finished: haversine.c

and some sample solutions.
Week 4
Mon 19th Aug
Lecture-7 (single page)
Aggregate data structures in C - arrays and strings; Initializing arrays and strings; Formatting results into character arrays; Pre- and post-, increment and decrement.

Lecture-8 (single page)
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
and the solution we developed:

Project 1 handed out


and some sample solutions.




Project 1 - due 11:59PM Fri 13th September
and its sample solution.
Week 5
Mon 26th Aug
Lecture-9 (single page)
File input and output (I/O); Reading and writing text files; Reading and writing binary data structures.

Lecture-10 (single page)
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 (single page)
Operating system services; The interface between operating systems and programming languages.

Tuesday: Workshop-5 - Designing array-based data structures
and the solution we almost finished: logfs.c

Friday: Lecture-12 (single page)
Developing C programs in multiple files; Linking; Simplifying program development with make; Using 3rd-party libraries.
Week 7
Mon 9th 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 16th Sept
Lecture-15 (single page)
Addresses and pointers in C; The relationship between pointers and arrays; Pointer arithmetic; Passing pointers to functions.

Lecture-16 (single page)
Dynamic memory allocation; Allocating memory for arrays and strings; Reallocating and deallocating memory; Sorting an array of values.

Friday - no workshop this week
and some sample solutions.
Week 9
Mon 23rd Sept
Lecture-17 (single page)
Defining and accessing structures; User-defined types; Accessing file attributes and directories in C.

Lecture-18 (single page)
File-system basics; The file management system; Directory structures; File allocation methods.

Workshop-6 - Project 2 discussion; come prepared with your questions.
(recorded, but no slides)
Project 2 handed out


and some sample solutions.



Project 2 - due 11:59PM Fri 18th October
and its sample solution.
Mon 30th Sept
Non-teaching week (no lectures or scheduled laboratories)



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

Lecture-20 (single page)
Self-referential data structures; stacks; linked lists; queues; binary trees.

Workshop-7 - Building a hashtable data structure
and the solution we developed:
Week 11
Mon 14th Oct
Lecture-21 (single page)
Bitwise operations; Storing multiple items in a single integer; File and directory permissions.

Lecture-22 (single page)
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
Lecture-23 (single page)
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]