A Bibliography of Useful Books and Other Resources

You should find the following list of books and other resources useful, both for your course and for a broader understanding of computers and electronics. These books and resources are divided by category; you should find the ones listed towards the top of each category more helpful than ones listed later.

ARM Programming

Dave Jagger, David Seal (ed), ARM Architecture Reference Manual (Second Edition), Addison-Wesley: London, December 2000. ISBN 0-201-73719-1.
Also known as the “ARM ARM”, the ARM Architecture Reference is the book to consult when programming the ARM microprocessor architecture. A copy of this book is available on this CD-ROM as a [PDF] Portable Document Format file. More information on the printed book is available from the publisher’s Web site.
Steve Furber, ARM System-on-Chip Architecture (Second Edition), Addison-Wesley, August 2000. ISBN 0-201-67519-6.
A reasonable introduction to the ARM architecture from the perspective of both a programmer and a hardware designer. More information is available from the publisher’s Web site. This book is listed as the text book for ELEC2041 Microprocessors and Interfacing and for COMP3221/COMP9221 Microprocessors and Embedded Systems.

General Programming

Brian Kernighan, Dennis Ritchie, The C Programming Language (Second Edition), Prentice Hall: Englewood Cliffs, NJ, March 1988. ISBN 0-13-110362-8.
A rather terse introduction to the C programming language, written by the authors of C itself. As well as being for beginners (to C, that is, not to programming), this book serves as a reference to Standard C and to the Standard C Library. This book should be on every programmer’s bookshelf! More information is available from the publisher’s Web site.
John Lions, Lions’ Commentary on UNIX 6th Edition with Source Code, Peer-to-Peer Communications: San Jose, CA, August 1996. ISBN 1-57398-013-7.
This book is one of the great classics of computer literature, written by a brilliant lecturer who used to teach at this very University. Every programmer and computer engineer should read this book at some stage of his or her professional career, preferably early! More information is available from the publisher’s Web site.
John Waldron, Introduction to RISC Assembly Language Programming, Addison-Wesley, January 1999. ISBN 0-201-39828-1.
A gentle introduction to MIPS assembly language programming.

Hardware/Software Architecture

David Patterson, John Hennessy, Computer Organisation and Design: The Hardware/Software Interface (Second Edition), Morgan Kaufmann, August 1997. ISBN 1-55860-428-6.
An excellent introduction to how software and hardware interacts. One of that rare breed: a textbook that is actually worth reading right through. More information is available from the publisher’s Web site.

Linux and Unix

Matt Welsh, Lar Kaufman, Terry Dawson, Matthias Kalle Dalheimer, Running Linux (Fourth Edition), O’reilly and Associates: Sebastopol, December 2002. ISBN 0-596-00272-6.
Running Linux is a very readable introduction to Linux. It covers installation, basic Unix commands and concepts, managing and upgrading your Linux system, programming and much more. Highly recommended! More information is available from the publisher’s Web site.
Bill McCarty, Learning Red Hat Linux (Second Edition), O’reilly and Associates: Sebastopol, CA, January 2002. ISBN 0-596-00071-5.
Learning Red Hat Linux is similar in concept to Running Linux, mentioned above. However, it is much more focused on a specific Linux distribution (Red Hat Linux 7.2) and is aimed at a simpler level. More information is available from the publisher’s Web site.