One thing I’m never short of on my course is reading. I’m only halfway though, and already I’ve amassed a large collection of textbooks. At times I wish I had spent the money on more useful stuff, like food, but theres been other times when I probably couldn’t have survived so far without them.

Here are a few that I’ve really enjoyed reading, and that I’d recommend to any student starting a Software Engineering oriented course.

  1. The Mythical Man Month
    This book was on the reading list for a unit I took called ‘Software Engineering: An Introduction’. It is a collection of essays written by a guy called Fred Brooks, who was a project manager working on the IBM System/360 and OS/360. Despite the fact that it was first published in 1975, most of what Brooks talks about is still true today (a little bit is rather dated), and the book gives you a real insight in to issues that you will most likely stumble upon, either as a code monkey or manager. It is well worth reading at least once, even if it will most likely cause you to have second thoughts about your ‘dream job’ in the software industry.
  2. Computer Networks – Andrew Tanenbaum
    Tanenbaum seems to be one of the few non-fiction writers who actually has you on the edge of your seat, wanting to turn the page (if you are a hardcore nerd). It covers pretty much everything about networks, by working up the ISO network model. The physical layer chapters go over a lot of technology such as fiber, the public switch telephone network and RF transmission, and goes all the way up to the application layer and beyond, with a few chapters on network security, cryptography etc., without being too heavy to read.
  3. Head First Java – Kathy Sierra & Bert Bates
    A lot of computery-courses are using Java (and Python) to teach their first-year students the programming fundamentals. I’d already done quite a bit of Java programming before I started my course, but I found Head First Java to be pretty useful. It uses a lot of illustrations and goofy stock photographs to get ideas across, and its written very clearly. The book covers a lot of ground (Java basics and OO concepts, exceptions, Swing, network programming, deployment, distributed computing), but doesn’t skimp much on details, and makes it easier to understand than some of the more formal, “stuffy” books.
  4. Core Python Programming – Wesley Chun
    This is one that I’ve not actually had to buy for my course. We covered Python in one of my second year modules, and anyone who has come across Python would probably agree that it is pretty awesome and definitely worth getting familiar with. Core Python Programming has been written with programmers in mind and so it doesn’t spend an awful lot of time on basics such as program flow and control structures. Like Head First Java, it covers a lot of ground, including developing network applications with the twisted framework, multithreading, and talking to databases.
  5. Concepts of Programming Languages – Robert Sebasta
    This is a pretty cool book that takes you to the heart of programming itself – the language. It looks at the history of programming languages and various paradigms, as well as the theory behind languages, the linguistic side – including expressing formal languages and language design. It also covers the technology behind compilers and how they work. Personally I found this book very interesting, and although you probably won’t need to know everything it covers, it is very useful to know at least the basics of how compilers work, since it is a pretty pervasive topic if you write any kind of data parsing or processing algorithms.

And thats it. Let me know if you use any of these books and what you think of them.


Leave a Comment