- Student Records
Programme & Unit Catalogues

Department of Computer Science, Unit Catalogue 2007/08


CM50199 Systems programming

Credits: 6
Level: Masters
Semester: 1
Assessment: CW100
Requisites:
Aims: To provide knowledge and understanding of low-level programming in C; To develop skills in systems level programming and a variety of widely-used algorithmic solutions to common problems.
Learning Outcomes:
After taking this unit a student should be able to:
* program in C at the systems level;
* choose and implement a variety of data structures and algorithms appropriate for systems level programming;
* appreciate the low-level aspects of computers and programming
* to understand the use of libraries, their limitations and the construction of new libraries.
Skills:
Ability to program at a professional level by understanding and using concepts and constructs that allow the software to interface with the operating system and computer hardware (T, F, A); knowledge of principles, algorithms and software that enables the user to program at any required level (T, F, A).
Content:
Introduction to C. Architecture of a computer (bits, bytes, addressing, files, etc.). Input/output in C (buffered and unbuffered). Data structures in C (lists, trees, graphs, etc.), dynamic memory management. Examples of algorithms: sorting, searching, hashing, FFT,
Dijkstra's shortest path. Bit manipulation (Boolean operations, shifts, rotates, etc.). Making libraries. Use of common libraries (e.g., libsndfile for sound, GMP for bignums). The problems of floating point. Introduction to Posix threads. Debugging.