Systems Programming (2020)
The intent of the Systems Programming Knowledge Unit is to ensure that students are proficient in the development of complex, low level software (e.g., software interacting directly with the hardware platform, performance constrained, or within the deepest level of an operating system), typically in the C or assembly programming language which is designed to provide services to other software.
To complete this KU, students should be able to:
- Develop programs which directly account for hardware and resource constraints of the specific systems on which they operate.
- Outline and apply a layered approach to providing and accessing services using API's.
- Implement new functions in an OS kernel or complex and sophisticated programs, such as a device driver, that can be embedded into an OS kernel.
- Write programs that implement systems functions such as a network communications stack, a telnet client, or a basic file manager without the use of external libraries.
- Hardware/software interfaces and interactions.
- Different types of systems programs
- Development environments
- Operating Systems
- Networking Functions
- Device Drivers
- Storage Frameworks
- Gaming engines
- Layered services design.
- Providing and using Application Programming Interfaces (API's).
- Programming to operating systems internal interfaces.
- Low level programming languages (C, Assembly, etc.)
- Resource optimization.
- Resource management
- Run time overhead minimization.
- Programming direct control of memory access and flow control.
- Managing memory in systems software.
- Security concerns in systems software.
- Monitoring and logging systems software.
- Secure Mobile Technology
- Secure Software Development
- Systems Security Engineering, Specialization Area
Related Knowledge Units
Suggested academic readings
Sample knowledge test
Sample skills test
Sample abilities test
Additional notes or materials