Systems Programming
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.
Topics
- Providing and using Application Programming Interfaces (API's)
- Low level programming languages (C, Assembly, etc.)
- Outline and apply a layered approach to providing and accessing services using API's.
- Monitoring and logging systems software
- Hardware/software interfaces and interactions
- Monitoring and logging systems software
Outcomes
- 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.
- Providing and using Application Programming Interfaces (API's)
KSA-T
Below are the Knowledge, Skills, Abilities and Tasks (KSA-T) identified as being required to perform this work role.
Learn More about the KAS-T's.
ID |
DESCRIPTION |
K0070 |
Knowledge of system and application security threats and vulnerabilities (e.g., buffer overflow, mobile code, cross-site scripting, Procedural Language/Structured Query Language [PL/SQL] and injections, race conditions, covert channel, replay, return-oriented attacks, malicious code). |
K0624 |
Knowledge of Application Security Risks (e.g. Open Web Application Security Project Top 10 list) |
K0197 |
Knowledge of database access application programming interfaces (e.g., Java Database Connectivity [JDBC]). |
K0139 |
Knowledge of interpreted and compiled computer languages. |
K0229 |
Knowledge of applications that can log errors, exceptions, and application faults and logging. |
ID |
DESCRIPTION |
S0024 |
Skill in designing the integration of hardware and software solutions. |
S0135 |
Skill in secure test plan design (e. g. unit, integration, system, acceptance). |
ID |
DESCRIPTION |
A0046 |
Ability to monitor and assess the potential impact of emerging technologies on laws, regulations, and/or policies. |