CSI3107 System Programming

The aim of this course is to learn the practical aspects of UNIX systems programming. We will focus on the Linux kernel and its data structures, algorithms and associated programming techniques. We will investigate these concepts for PC-based systems and embedded systems. The course will cover the GNU programming tools, shell scripting, Linux threads and processes, interrupts, file systems, memory management, networking and device driver development.