Welcome to CITS2002 in 2021
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.
Prof Amitava Datta
Rm 1.07 of the CSSE Building,
Consultation time: Fridays 11am - 12 pm.
Who'll be helping in CITS2002
Alvaro Monsalve Ballester
and our fantastic laboratory facilitators -
James Arcus - Wednesday 10-12, Wednesday 2-4, Thursday 10-12;
Laurent Jospin - Monday 10-12;
Ming Han Ong - Monday 2-4, Thursday 12-2;
Nicholas Pritchard - Tuesday 10-12, Tuesday 2-4, Tuesday 4-6.
The assessment for CITS2002 comprises
two programming projects,
and a final examination.
All programming work is submitted
As the semester proceeds, your marks will be updated and recorded in
||% of final mark
|1st programming project
||11:59pm, Fri 17th Sept (wk 7)
|2nd programming project
||11:59pm, Fri 22nd Oct (wk 12)
||2 hours in November 2021
Two 45-minute lectures will be presented each week.
Each workshop will be held in the Social Science Lecture Theatre.
Lecture sessions are face-to-face, and recorded
and their recordings will be available via LMS.
You are strongly encouraged to keep up with the lecture material
(by attending, viewing the recordings, and reading the prepared notes),
available from our Schedule page),
and to never get more than a week behind.
Each Friday we'll hold a 45-minute workshop session.
Each workshop will be held in the Ross Lecture Theatre (Physics building, ground floor).
Workshop sessions are face-to-face, and recorded.
Note that the session will be recorded (if privacy is a concern for you).
Each week's workshop will focus on, and extend material,
from the previous and current week's lecture material.
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 encouraged to discuss why the design decisions have been chosen.
Weekly laboratory sessions reinforce lecture material,
and are a very important component of this unit.
All face-to-face laboratory sessions will be held in CSSE Lab 2.03,
and two online-only laboratory sessions will be held on Fridays (12-2, 2-4).
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-only laboratory sessions each week.
For the particular benefit of students stuck outside of Perth,
there are two 2 hour online laboratory sessions each Friday (12-2, 2-4)
at which students will be able to gain assistance from laboratory demonstrators.
You may attend these online sessions
via MS Teams.
- Participation is not compulsory
in any weekly CITS2002 activity
(even attendance at the final exam is optional).
By undertaking this unit, students will be able to:
- identify and appreciate the fundamentals of the imperative
programming paradigm, using the standard C programming language as an
- decide when to choose the C programming language and
its standard library for their systems programming requirements.
- apply the most appropriate techniques to successfully develop
robust systems programs in the C language.
- understand the role of an operating system in
the wider computing context.
- understand the relationship and interactions between an
operating system's critical components and their affect on performance.
- develop an understanding of the relationship between
contemporary operating systems, programming languages and
systems-level application programming interfaces
Before undertaking this unit,
students are strongly encouraged to read the relevant university policies: