Progressing from purely synchronous software through the use of asynchronous interrupts and on to multi-tasking software at various levels of complexity, this text will help engineers from all disciplines conceptualize, design, and prototype systems that depend on computers as operational components.