The aims of the Systems Programming course are:
- To introduce low-level systems programming concepts and develop the students’ experience and understanding of programming in a systems language;
- To develop the ability to craft efficient and effective code in a pointer-rich language;
- To develop the ability to manage memory, and other resources, in a language/environment that lacks automatic storage management;
- To demonstrate the impact of data layout, caching, non-uniform memory access, virtual memory, and other machine specifics on the performance of systems code;
- To explore a variety of different concurrency control mechanisms, and develop practice programming concurrent code in a systems language; and
- To introduce students to the differences between hardware platforms and operating systems, and the impact these have on systems programming.