Course pages 2011–12
Subsections
Paper 1: Computer Fundamentals
Lecturer: Dr R.K. Harle
No. of lectures: 4
This course is a prerequisite for Operating Systems.
Aims
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.
Lectures
- 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.
Objectives
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.
Recommended reading
Patterson, D. & Hennessy, J. (2009). Computer organisation and design. Morgan Kaufmann (4th ed.).
Tanenbaum, A.S. (1990). Structured computer organisation. Prentice Hall (3rd ed).