This course considers the issues raised when programming at a low-level, for example in embedded systems, OS system level, or network protocol stacks. It includes an introduction to C language programming and motivating examples related to a wide variety of applications of system programming.
Students who pass this course should be able to:
- Use appropriate tools compiling/debugging C/C++ programs.
- Write C programs using pointers and arrays, user-defined data types, input/output operations, bit-level operations, and user-defined and library routines.
- Understand the differences between C and C++, and write C++ programs using stream input/output, classes, vectors and templates.
- Use or understand the main techniques of dynamic memory management in C and C++.
- Structure larger programs in multiple files.
- Understand the differences between application software and system software.