It's UWAweek 47

unitinfo

This page provides helpful information about many coursework units offered by Computer Science and Software Engineering in 2023.

The information here is not official - for official information please see the current UWA Handbook. Instead, it will help students to prepare for their future units, before the beginning of each semester, and before they have access to UWA's Learning Management System (LMS).

About the unit CITS2002 Systems Programming (2nd semester 2023)

Unit description:

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 and systems are based, 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, pointers and recursion 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 practical class work 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 outcomes:

Students are 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) explain the role of an operating system in the wider computing context; (5) explain the relationship and interactions between an operating system's critical components and their affect on performance; and (6) demonstrate an understanding of the relationship between contemporary operating systems, programming languages and systems-level application programming interfaces.

Unit coordinator:

Dr Chris McDonald
[email protected]

Unit homepage:

Unit is offered in these majors and courses:

Indicative weekly topics:

week 1 The C programming language; standardisation; C program structure
week 2 An introduction to operating systems; more detailed C features
week 3 Computer hardware components; aggregate data structures in C
week 4 Processes and scheduling; file I/O
week 5 Process management; services
week 6 Memory management
week 7 Pointers in C; dynamic memory allocation
week 8 File systems; systems-calls and system strcutures
week 9 C programs in multiple files
week 10 Multi-threaded programming
week 11 Support for users and groups; portable systems programming
week 12 Comparison of the C and C++ programming languages; Review

Indicative assessment:

mid-semester test, programming projects, final exam

Useful prior programming and software experience:

Programming in a high-level language, such as Java or Python

Hardware required for this unit:

Students are able to undertake their laboratory exercises and projects in laboratories in the CSSE building, but most students also complete work on their own laptops.
The following hardware is required to successfully complete this unit:


Standard laptop

Software required for this unit:

Students are able to undertake their laboratory exercises and projects in laboratories in the CSSE building, but most students also complete work on their own laptops.
The following software is required to successfully complete this unit:


C and Linux developer tools

Operating system(s) used in this unit:

Different units will use different operating systems for their teaching - for in-class examples, laboratory exercises, and programming projects.
If an operating system is REQUIRED, it will be used when marking assessments.


Linux REQUIRED (ideally Ubuntu 22.04 or later)




This information last updated 7:11am Sat 15th Apr 2023

The University of Western Australia

Computer Science and Software Engineering

CRICOS Code: 00126G
Written by [email protected]
Powered by history
Feedback always welcome - it makes our software better!
Last modified  8:32AM Jul 16 2023
Privacy policy