The course gives fundamental knowledge of computer organization, both from a hardware and software perspective. The course is organized in six modules that include, among other things, the following concepts and terms:
C and Assembly Programming: pointers, functions, stack, assembly language, machine language, instruction coding, and processor registers. Input/Output Systems: timers, interrupts, and memory mapped input/output. Digital Design: truth tables, gates, Boolean algebra, multiplexer, decoder, adder, combinational logic, sequential logic, and registers. Processor Design: arithmetic logic unit, datapath, control unit, and pipeline. Memory Hierarchy: instruction cache, data cache, and virtual memory. Parallel Processors and Programs: Amdahl’s law, various kinds of parallelism, and multicore. Note that module 3 is recommended prerequisites for the course and will not be covered in lectures or laboratory exercises. However, the course material for module 3 will be available on the course web page because the knowledge of this module is prerequisite for module 4.
After the course, the student will be able to:
Implement low-level programs in the C programing language and in an assembly language. Analyze processor microarchitectures, with and without a pipeline. Explain the principles of memory hierarchies, including cache structures. Implement low-level programs with input-output, timers, and interrupts. Explain the principles of multiprocessor computers and how they can be programmed. Explain and describe technical solutions, both orally and in writing.