Assembly Language
Demonstrate ability to understand and program with assembly language.
Development Tools
Demonstrate ability to use a C compiler, an assembler, a disassembler, a debugger, and CPU emulators to develop, debug, test, analyze and optimize programs.
Program Architecture
Know how to write more reliable, secure, and efficient software with an understanding of how the software is executed on the underlying architecture.
CPU Architecture
Demonstrate ability to modify a CPU design to add instructions and to improve the overall efficiency of execution.
Abstraction
Demonstrate understanding of the various abstractions used to manage complexity in computer systems and support application concurrency. e.g. system calls and virtual memory.
Performance
Know how application performance can be affected in a target system by memory hierarchy design factors such as cache size, bus width, clock rate and memory speed.
Security
Demonstrate how vulnerabilities in software coding can be exploited in computer security attacks (eg. buffer overflow).
Input/Output
Demonstrate understanding of how peripherals are accessed in a computer system, e.g. polling or interrupt driven I/O.