Paul Barry's Annotated Book List

Here are a collection of books that I recommend to students. Those marked with a star are required reading for one of the courses that I teach. Others are books that I will refer to either in passing, or as a sub-component of a particular course. Not all of these books are available in the Institute's Learning Resource Centre (library). However, most are. All should be available in most good book stores or via the amazon.co.uk or amazon.com web-sites (or any of other on-line bookstores). I have read all of the books that appear on this list.

A great site (worth visiting) is O'Reilly's OpenBook Project. A growing number of technical books are being made available for free-download from this page. Check it out. The books available are all highly complementary to the courses I teach.

Books about GNU/Linux

"Linux in a Nutshell, 2nd Edition" by Siever, Ellen. Published by O'Reilly. Comment: A handy desktop reference to GNU/Linux for those of you already familiar with this popular operating system. A newer edition of this book is now available.

"The Linux Kernel Book" by Card, Remy, Eric Dumas, and Franck Mevel. Published by John Wiley and Sons. Comment: This book is like Tanenbaum's MINIX book (below) only it covers the GNU/Linux OS. It is not a book for the faint-hearted. But, if you must know how GNU/Linux does what it does, then this book will tell you. You will need to be a C guru to really get something out of it.

"A-Z of Linux, 1st Edition" by Cornes, Phil. Published by Prentice-Hall. Comment: A good treatment of various aspects of GNU/Linux. Sections on using/installing/configuring the system lead into more technical treatments of device driver development, inter-process communication and sockets programming. The book includes a number of smallish, working case studies that the intrepid C programmer can try out on a GNU/Linux machine.

"Running Linux, 3rd Edition", by Welsh, Matt, Matthias Kalle Dalheimer & Lar Kaufman. Published by O'Reilly. Comment: If you are serious about GNU/Linux, then this is a good overview of the entire OS and the GNU/Linux Environment. Covers installation, configuration, and use of GNU/Linux. Recommended.

"The Linux Textbook", by Sarwar, Koretsky and Sarwar. Published by Addison-Wesley. Comment: A good introduction to GNU/Linux for new users. Covers a lot of ground and will get you up-to-speed quickly with using GNU/Linux for everyday tasks.

Books about Operating Systems

"Operating Systems - Design and Implementation, 2nd Edition" by Tanenbaum, Andrew S., and Albert S. Woodhull. Published by Prentice-Hall. Comment: If you ever wanted to know all the gory details of how an operating system actually works, then this is the book for you. The complete source code to the MINIX operating systems is provided, together with the authors' commentary. MINIX was the precursor to the GNU/Linux operating system. This book assumes you are a strong C programmer.

"Modern Operating Systems" by Tanenbaum, Andrew S. Published by Prentice-Hall. Comment: Required text for CW084-4. This is a modern treatment of OS theory, design and practice. Includes 2 large case studies: UNIX/GNU/Linux and Windows 2000.

Books about Computer Networking

"Computer Networks and Internets, 3nd Edition" by Comer, Dr. Douglas E. Published by Prentice-Hall. Comment: This is the main course text for CW046-2. If you don't already own a copy, walk - no run - to your nearest bookseller and buy one! A web-site also exists for this text. Comer has also written a three volume series of texts on TCP/IP entitled "Internetworking with TCP/IP, Volume I, II and III". All are a great read, with Volume I the most recommended text.

"Data and Computer Communications, 6th Edition" by Stallings, William. Published by Prentice-Hall. Comment: A very detailed and mathematical coverage of the material. Certainly not an introductory text, but, if you want to know all the details, this is one of the better sources. Not recommended to newcomers (I prefer Comer, above).

"Computer Networks, 3rd Edition" by Tanenbaum, Andrew S. Published by Prentice-Hall. Comment: A more detailed look at the field than is provided by Comer's book above. This is a well written book, and is best read after first reading and understanding Comer's text. One of my preferred networking texts by a highly respected author.

"Network Security Essentials: Applications and Standards" by Stallings, William. Published by Prentice-Hall. Comment: This is a required text for CW084-4 and CW082-4. A very good treatment of Network and Systems security applications and standards. The initial material on Cryptography technologies is especially good (but, refer to "The Code Book", below).

"The Simple Book - An Introduction to Network Management, 2nd Edition" by Rose, Marshall. Published by Prentice-Hall. Comment: Although this is an introduction, this book is anything but simple. I would advise staying away from it until you know a little more about network management.

"Network Management: Principles and Practice" by Subramanian, Mani. Published by Addison-Wesley. Comment: A good review of network management standards and technology.

"Internet Core Protocols" by Hall, Eric A. Published by O'Reilly. Comment: Very good coverage of ARP, IP, ICMP, IGMP, UDP and TCP. This book's coverage of this material is easier to read than the Internet RFC's that it is based on. The author's use of a commercial network analyser to demonstrate the protocols in action works really well.

"Routing in the Internet, 2nd Edition" by Huitema, Christian. Published by Prentice-Hall. Comment: This book covers all there is to know about the routing technologies used on the Internet. RIP, OSPF, BGP, EGP, etc., etc., are all covered in sufficient detail. The author was (and is) involved in the work of the Internet Architecture Board.

"Computer Networking: A Top-Down Approach Featuring the Internet" by Kurose, James F. and Keith W. Ross. Published by Addison-Wesley. Comment: Looks at the field of computer networking by starting at the Application Layer and working down (i.e., the opposite to most other networking texts). This is a good text, and includes interviews with a number of key networking people at the end of each chapter.

Books about Distributed Systems

"Client/Server Survival Guide, 3rd Edition" by Orfail, Robert, Dan Harkey, and Jeri Edwards. Published by John Wiley and Sons. Comment: This is an excellent text that discusses in some detail the world of distributed, client/server development and what this will mean for future programmers. A great read.

"Distributed Systems: Principles and Paradigms" by Tanenbaum, Andrew S. and Maarten van Steen. Published by Prentice-Hall. Comment: This is a required text for CW046-4. A very thorough, modern and complete treatment to this subject area. Full of examples and case-studies. Highly recommended.

Books about Programming Computer Networks

"UNIX Network Programming, Volume 1: Networking API's: Sockets and XTI, 2nd Edition" by Stevens, W. Richard. Published by Prentice-Hall. Comment: A classic text. If you are forced to use C to program computer networks, then this is the book for you. I've seen this book referred to more than any other when it comes to programming computer networks.

"Network Programming with Perl" by Stein, Lincoln D. Published by Addison-Wesley. Comment: This book is essentially the Perl version of Stevens C book, above. That said, it is truly an excellent read. If you want to know all the ins and outs of working with Sockets and Internet Protocols while programming with Perl, you will not find a better treatment of the material than this book. Stein is very highly regarded in the Perl community (not least for his authorship of the CGI.pm module).

"Java 2 Networking" by Couch, Justin. Published by McGraw-Hill. Comment: Once you are comfortable with Java, this book presents the skills you need to develop Java programs that work over TCP/IP networked systems. It is based on Java 2, the latest version of the language.

"Mobile Agents" by Cockayne, William T. and Michael Zyda. Published by Manning. Comment: A good introduction to this interesting networking technology. Covers the basics of mobile agents before devoting a entire chapter to each of the following mobile agent systems: TeleScript, Agent TCL, ARA and Aglets.

Books about Programming Languages

"The C Programming Language, 2nd Edition" by Kernighan, Brian W., and Dennis M. Ritchie. Published by Prentice-Hall. Comment: This classic text presents C through the eyes of the inventors of the language. It's a small book, any assumes you already know how to program. Get the most recent edition of this book.

"Java in a Nutshell, 2nd Edition" by Flanagan, David. Published by O'Reilly. Comment: A good review of the features of Java 1.1 for programmers already familiar with the C or C++ programming languages. A well-written text. If buying this book, make sure you get the most recent edition.

"PERL by Example, 2nd Edition" by Quigley, Ellie. Published by Prentice-Hall. Comment: A good introduction to Perl programming, with an emphasis on the presentation of Perl code snippets that show you how Perl works and from which you can learn. If you learn best by example, then this is a book you may want to take a look at.

"PERL: The Programmer's Companion" by Chapman, Nigel. Published by John Wiley and Sons. Comment: This is a required text for CW046-2 and CW082-4. A great Perl text that presents the language through a series of programming idioms - i.e., it shows you how to do a whole series of things using Perl. My Perl tutorial is based on material from this book.

"Programming Perl, 3rd Edition" by Wall, Larry, Tom Christainsen, and Jon Orwant. Published by O'Reilly. Comment: The ultimate reference work on Perl written by three leading Perl programmers (including Perl's inventor - Larry Wall). Every serious Perl programmer should own a copy of this book. Note: it is a reference, and is not a book you can learn Perl from (easily).

"Perl Cookbook" by Christainsen, Tom and Nathan Torkington. Published by O'Reilly. Comment: An excellent companion to Chapman's book (and to "Programming Perl"), this text - which I recommend you buy if you intend doing anything at all in Perl - has loads of cool code examples, and it shows just what is possible with Perl. Highly recommended.

"Object Oriented Perl" by Conway, Damian. Published by Manning. Comment: This book is the absolute authority on using Perl's OO technology. Make sure you are very comfortable with Perl before attempting to read this book. There's an awful lot of good stuff here, including (at the start of the book) an excellent introduction to OO programming and an introduction to Perl programming.

"Learning Perl/Tk" by Walsh, Nancy. Published by O'Reilly. Comment: If you quickly tire of Perl's command-line interface, check out this book. It presents the Tk port of the portable Tcl/TK GUI building code. It is surprisingly easy to add a GUI to Perl code, and this book is the best at showing you how.

"Perl Debugged" by Scott, Peter and Ed Wright. Published by Addison-Wesley. Comment: Lots of hints and tips when working with Perl, with an emphasis on the techniques that can be used to produce correct Perl code. This book covers how to debug standalone as well as CGI programs written in Perl. The "proxylog" script is a very useful tool for working with HTTP clients and servers.

"Object Oriented Software Construction, 2nd Edition" by Meyer, Bertrand. Published by Prentice-Hall. Comment: A big book (over 1200 pages), but a truly great one. This guy is one of the fathers of OOP, and his texts are very widely regarded (especially this one). If you are really into OOP, and want to know everything there is to know about it - including how best to apply it - then this is the book for you. It is based on Eiffel, a top-class OOP language that Meyer also created. Personally, I would recommend this book to any and all OO programmers.

"A Little Book on Perl" by Robert W. Sebasta. Published by Prentice-Hall. Comment: A very gentle introduction to the Perl programming language. It's short, too (only 180 pages). If you want a quick intro, this is it. But, be warned, there's much more to Perl than is presented here.

Miscellaneous Books - All Other Computing Topics (incl. General Interest)

"The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography" by Singh, Simon. Published by Fourth Estate Limited. Comment: If you are looking for a very readable and entertaining treatment of the history, application and current state-of-the-art regarding Cryptography, then look no further than this book. Highly Recommended.

"A Guide To LaTeX, 3rd Edition" by Kopka, Helmut & Patrick Daly . Published by Addison-Wesley. Comment: If you are fed up with Microsoft Word, check out this typesetting technology. Rather than WYSIWYG, LaTeX allows you to "program your documents" using document markup. This book is a great introduction and reference to the technology. You will, more than likely, need a GNU/Linux box to get the most out of LaTeX.

"The Mythical Man Month: Essays on Software Engineering" by Brooks, Frederick P., Jr. Published by Addison-Wesley. Comment: If you are a programmer and you haven't already read this book, feel ashamed, very, very ashamed. Even though this book is over 25 years old, it is a classic book on the subject. It was updated in 1996 for the 25th Anniversary Edition which includes additional material. (I have an original copy). If you are a programmer - read this book!

"Tog on Interface" by Tognazinni, Bruce. Published by Addison-Wesley in association with Apple Computer. Comment: An entertaining look at the way we design our programs user interfaces. This book is full of tips, tricks, and traps, and is written by a leading expert in the field. The fact that he works for Apple Computer can only be seen as an added bonus. :-)

"Open Sources, Voices from the Open Source Revolution", edited by DiBona Chris, Sam Ockman & Mark Stone. Published by O'Reilly. Comment: If you want to understand all the ins and outs of the Open Source Revolution, then this series of essays is a good place to start. This book is available on-line at: http://www.oreilly.com/catalog/opensources/book/toc.html

"The Cathedral & the Bazaar", by Raymond, Eric S. Published by O'Reilly. Comment: A must for all modern software engineers. According to Linus Torvalds, this books tells how the GNU/Linux people created a high-quality, free OS that's taking the world by storm. A must-read for any programmer. Very interesting reading, especially for those of us that live by Brook's Law. If you are a programmer - read this book! This book may well describe the preferred future way of conducting software engineering projects.

"Under The Radar", by Young, Robert and Wendy Goldman Rohm. Published by The Coriolis Group. Comment: The story of how RedHat created a large, billion-dollar company out of selling "free" software. Very interesting indeed.

"Where Wizards Stay Up Late", by Hafner, Katie and Matthew Lyon. Published by Pocket Books. Comment: The story of how the Internet was created - a great read for anyone interested in the history of the Net.

"Dealers In Lightning", by Hiltzik, Michael. Published by Orion Business. Comment: The story of how Xerox created the technology that forms the basis of the what we now refer to as the "desktop" (and they did it in the 1970's!!). If you want to know who invented the Laser Printer, Ethernet, the GUI, and OOP, then this book will tell you. Also, if you ever wondered why "Cut" and "Paste" are called "Cut" and "Paste", read this book to find out. It is a very entertaining read. Highly recommended.

"Making the Cisco Connection", by Bunnell, David and Adam Brate. Published by John Wiley and Sons. Comment: They had an idea, started in their from living room, bought some equipment on their credit cards in order to finance the creation of their first product, then went on to create the biggest computer networking company of them all - Cisco. This book tells the story.

"The Decline and Fall of the American Programmer" by Yourdon, Edward. Published by Prentice-Hall (Yourdon Press). Comment: Written in 1992, this book is interesting from a historical perspective more than anything else. The author paints a rather dismal picture of the state of the North American programming community, then details the steps to be taken to fix things. With the advent of the WWW and some other technologies, some of the authors greatest fears have not occurred (a follow-up, called "The Rise and Resurrection of the American Programmer" by the same author, comments on this. I have not read the follow-up). Although a little out-of-date, this book is still worth the read.

Return to the Main Page