Course material 2010–11
Paper 1: Computer Fundamentals
Lecturer: Dr S.M. Hand
No. of lectures: 6
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
- History: from vacuum tubes to VLSI. The Von Neumann
  architecture.  Hardware/software layers and languages.  Operation of
  a simple computer (processors, memory, buses, devices).  Memory:
  concepts, structures, hierarchy. [1 lecture]
 - Processor: control and execution units.  ALU and computer
  arithmetic.  Logical and conditional operations. Branches. Memory
  access.  Data representation: (integers), text, reals, compound
  structures, instructions. Fetch-Execute cycle revisited. [1 lecture]
 - General I/O architecture. Example devices.  Buses: general operation,
  hierarchy, synchronous versus asynchronous.  Interrupts.
  Direct Memory Access. [1 lecture]
 - Programming in Assembly. MIPS instruction formats. Assembler
  directives and pseudo-instructions. Memory access and control 
  flow instructions. The SPIM simulator. Example
  programs. Procedures and the stack. Recursive procedures. [2 lectures]
 - Course Review. [1 lecture]
 
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
Tanenbaum, A.S. (1990). Structured computer organisation. Prentice Hall (3rd ed).
Patterson, D. & Hennessy, J. (1998). Computer organisation and design. Morgan Kaufmann (2nd ed.).