Course overview
This course introduces the elements of computer systems from the level of basic hardware gates, through to compilers, languages and applications. The aim is to give an overview of the layered nature of computer systems and how the use of simple interfaces can make the design of complex and powerful systems possible. Topics covered include: digital logic, memory, processors, assembly language, virtual machines, recursive descent parsing, code generation and operating systems.
Course learning outcomes
- Demonstrate an understanding of the layered and modular nature of computer systems
- Design the core components of a computer from basic components
- Understand and Apply knowledge of how computers represent programs and data
- Explain how a computer executes a program
- Write assembler and machine code
- Understand the translation process from higher level representations into machine language
- Explain how Input/output operations are implemented, and describe some basic I/O devices