SCS2105 Systems Programming
Course Unit Title
Course Unit Description
The course includes a programming project in which students: (a) build rudimentary data structures in C, such as linked lists, chained hash tables, AVL trees; (b) use them to build an in-memory inverted index and file system crawler; (c) construct a C++-based access methods for writing indexes to disk and accessing disk-based indexes efficiently; and (d) construct a concurrent (threaded or event-driven) web server that exposes a search application. A substantial portion of the course focuses on giving students in-depth C and C++ skills and experience with practical engineering tools such as debuggers, unit testing frameworks, and profilers. The course stresses the discipline of producing well-structured and readable code, including techniques such as style guidelines and code reviews. Additionally, the course covers topics such as threaded vs. event-driven concurrency, the Linux system call API, memory management, and some security and defensive programming techniques.
Objectives
- The major goal of the course is to give students principles, skills, and experience in implementing complex, layered systems
- To study techniques for development of system related applications and services
- To appreciate the activity of programming system software
- To produce software which provides services to the user
Learning Outcomes
The students will be able to:
- Understand various design aspect of the system software
- Develop software tools like editors and debuggers
- Develop various system softwares
