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:
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