Department of Computer Science, Unit Catalogue 2009/10 |
CM50199: Systems programming |
Credits: | 6 |
Level: | Masters |
Period: | Semester 1 |
Assessment: | CW 75%, EX 25% |
Supplementary Assessment: | Like-for-like reassessment (where allowed by programme regulations) |
Requisites: | |
Description: | Aims: To provide knowledge and understanding of low-level programming; 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: 1. Appreciate the low-level aspects of computers and programming and how features of hardware affect systems programming; 2. Choose and implement a variety of data structures and algorithms appropriate for systems level programming; 3. Program in C at the systems level. 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, virtual memory, floating point, caching, etc.). Basic complexity theory. Dynamic memory management algorithms. Data structures (lists, trees, graphs, etc.), Algorithms for sorting, searching, hashing, compression, etc.. Input/output in C (buffered and unbuffered). Making and using libraries. Introduction to Posix threads. Debugging. |