Course pages 2011–12
Lecturer: Dr R.K. Harle
No. of lectures: 4
This course is a prerequisite for Operating Systems.
The overall aim of this course is to provide a general understanding of how a computer works. This includes aspects of the underlying hardware (CPU, memory, devices), as well as how to program a computer at a low level using assembly language.
- Computer components. Brief history. Main components: CPU, memory, peripherals (displays, graphics cards, hard drives, flash drives, simple input devices), motherboard, buses.
- Data representation and operations. Simple model of memory. Bits and bytes. Binary, hex, octal, decimal numbers. Character and numeric arrays. Data as instructions: von-Neumann architecture, fetch-execute cycle, program counter (PC).
- Low- and high-level computing. Pointers. The stack and heap. Box and Pointer Diagrams. Levels of abstraction: machine code, assembly, high-level languages. Compilers and interpreters. Read-eval-print loop model.
- Platforms and multitasking. The need for operating systems. Multicore systems, time-slicing. Virtual machines. The Java bytecode/VM approach to portability. ML as a high-level language emphasising mathematical expressivity over input-output.
At the end of the course students should be able to
- describe the fetch-execute cycle of a simple computer with reference to the control and execution units;
- understand the different types of information which may be stored within a computer memory;
- understand a simple assembly language program.
Patterson, D. & Hennessy, J. (2009). Computer organisation and design. Morgan Kaufmann (4th ed.).
Tanenbaum, A.S. (1990). Structured computer organisation. Prentice Hall (3rd ed).