COMP10031: Fundamentals of Computer Architecture (2009-2010)
COMP10031 aims to introduce computer instruction sets and the binary representation of information, by exploring the relationship between high-level language programs and the basic structure and operation of digital computers, including the process that implements this relationship. Java and the ARM processor are used as exemplars. Practical experience is gained in the laboratory through exercises which progressively expose features of the ARM instruction set. The course-unit aims to serve as an essential foundation for further studies in the single honours Computer Science degree programme.
On successful completion of this course, a student will:
Understand the basic Von Neumann/Imperative computational model. (A)
Understand the binary nature of digital computers, and how bit patterns can be used to represent such things as characters, numbers and instructions. (A)
Understand the essentials of the ARM instruction set and its registers. (A)
Be able to understand the basics of assembly language programs. (C)
Understand the correspondence between imperative code & data and assembly language. (A)
Be aware of the role of Compiler, Assembler, Library, Linker, Loader, Interpreter and Operating System, and of some of the interactions between these and the underlying computer hardware. (A)
Assessment of Learning outcomesLearning outcomes (1), (2) and (6) are assessed by examination. Learning outcome (4) is assessed in the laboratory. Learning outcomes (3) and (5) are assessed by examination and in the laboratory.
Contribution to Programme Learning OutcomesA3, C5, C6
Introduction: Processors, simple ARM programs, binary representations, fetch-execute cycle, registers 
ARM code for imperative constructs: Basic data types and expressions, data structures, control structures, functions, input/output, interrupts 
System software: Operating Systems, Assemblers, Compilers, Libraries, Loaders, Interpreters, JVM 
There are no books that cover the syllabus exactly. However, here are two books that give information about the ARM processor, that you may want to refer to.
Title: ARM system-on-chip architecture (2nd edition)
Author: Furber, Steve
Publisher: Addison Wesley
This book is a detailed look at the ARM and its variants with a lot of information on its use in embedded systems. A definitive guide written by the man responsible for much of the first design. The book covers the basic material and then examines the lat
Title: Principles of computer hardware (4th edition)
Author: Clements, Alan
Publisher: Oxford University Press
This book covers several 1st year courses and is a good introduction to Computer Architecture and peripherals. Note that the 2nd edition is not suitable as it does not cover the ARM processor.