Computer Laboratory

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.


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.


  • 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]


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.).