Recommended texts


There is no particular text you need for this course, however, the following texts are recommended if you feel you need more information. There are also some more advanced texts listed on specific subjects that might be of interest. Some of these books are available free online (at varying degrees of legitimacy) if you search; it's also always worth checking the publisher's websites for free sample chapters before deciding to buy.


General texts:

 

For a good book to learn from by just working through it, try...
Java: The Complete Reference, Herb Schildt (2011: 8th Edition), Osborne McGraw-Hill; ISBN: 0071606300 (~£30)
If you get confused by the basics of the language this is the book for you.
If you find you are struggling, and want a very simple text, then try the excellent...
Head First Java, Kathy Sierra and Bert Bates (2005: 2nd Edition), O'Reilly Media; ISBN: 978-0596009205 (~£20)
For an excellent guide of tips and samples of how to do lots of things...
Java Cookbook, Ian Darwin (2004), O'Reilly UK; ISBN: 0596007019 (~£40)
If you feel ok with the basics, but want a neat guide to "how to do x..." this is the book for you. It comes with a web address where you can find sample code you can use in your applications.
You might also like to know that there's a book aimed specifically at Geographers...
Java Programming for Spatial Sciences, Jo Wood (2002), Taylor & Francis; ISBN: 0415260981 (~£40)
This goes into some quite complex examples, building a small Raster and Vector GIS and a model of an ant colony.

 


 

Improving your coding:

 

A good style guide for tidying up your code is...
The Elements of Java Style, Allan Vermeulen and others (2000), Cambridge University Press; ISBN: 0521777682 (~£10)
The best guide to programming diagrams (UML) is...
UML Distilled, Martin Fowler and Kendall Scott (2003), Addison Wesley; ISBN: 0321193687 (~£24)
Although not specifically a Java book, this also contains a lot of good advice about object orientated programming.
For templates for solving particular programming problems (called "Patterns") the best book is...
Java Design Patterns, James W. Cooper (2000), Addison Wesley; ISBN: 0201485397 (~£25)
But, that said, a very easy read, clearly described, is...
Head First Design Patterns, Eric Freeman, Elisabeth Freeman, Bert Bates and Kathy Sierra (2004), O'Reilly; ISBN-10: 0596007124 (~£25)
which isn't as complete as the above, but is much more fun.
Good books on core Java that include some nice examples of the best way to do things are...
Core Java: Volume I - Fundamentals and Core Java: Volume II - Advanced Topics, Cay Horstmann and Gary Cornell (2012/13); ISBN-13: 978-0137081899/978-0137081608 (~£30 each)
A great book on reasonably advanced ideas for efficiency is...
Effective Java, Joshua Bloch (2008); ISBN-10: 0321356683 (~£35)
A good book improving code by understanding the fundamentals of how computers work is:
Write Great Code I: Understanding the Machine, Randall Hyde (2004); ISBN-13: 978-1593270032 (~£20)
(There are two other books in the series: II: Thinking Low-Level, Writing High-Level and a third volume which seems to be in suspension; the former is very advanced).
You can find all the traditional computer science stuff on search and ordering in...
Data Structures and Problem Solving Using Java (2008), Mark A. Weiss, Pearson Education; ISBN-13: 978-0321546227 (~£70, but see also the cheaper Student version)
Using Java over the network and to run websites...
Professional Java Server Programming J2EE Edition, Subrahmanyam Allamaraju and others (2000), Wrox Press Ltd; ISBN: 1861004656 (~£46.99 new)
An easy to read, but advanced guide covering just about everything.
Course study guide for the Sun Certification exam
Sun Certified Programmer for Java 6, Kathy Sierra and Bert Bates (2008), McGraw Hill; ISBN: 9780071591089 (PDF available free on the internet)
An easy to read but advanced programming guide for the Java language. A little out of date but much of what it contains is still relevant and it guides you through typical errors and how to avoid them.

 


 

Humans and Computers:

 

The classic text on User Interface Design...
Designing the User Interface: Strategies for Effective Human-Computer Interaction, Ben Shneiderman and Catherine Plaisant (2009); ISBN: 978-0321601483 (~£30 new)
Recent computer ethics...
The Cambridge Handbook of Information and Computer Ethics, Luciano Floridi and others (2010), Cambridge University Press; ISBN: 978-0521717724 (~£15 new)

 


 

Visualisation:

 

by Edward Tufte
A good book on Processing and programming things that look natural more generally...
Processing: A Programming Handbook for Visual Designers and Artists, Casey Reas and Ben Fry (2007), MIT Press; ISBN: 978-0262182621 (~£40)
The classic books on charts and graphs are...
The 'Visual' books by Edward R. Tufte (~£30)

 


 

Modelling and AI:

 

A good intro to lots of AI issues and ideas is...
The Computational Beauty of Nature (website), Gary William Flake (2000), MIT Press; ISBN: 0262561271 (~£20 new)
Very advanced artifical intelligence projects in Java (if you feel like stretching yourself)...
Intelligent Java Applications for the Internet, Mark Watson (1997), Morgan Kaufmann; ISBN: 1558604200 (~£34.50 new)
Good agent-based systems book...
An Introduction to MultiAgent Systems, Michael Wooldridge (2009), Wiley (2nd Edition); ISBN: 978-0470519462 (~£35 new)
Good AI / heuristics book...
Artificial Intelligence: A Modern Approach (website), Stuart Russell and Peter Norvig (2010), Prentice Hall (3rd Edition); ISBN: 978-0132071482 (~£105(!) new - you can find it ~30 if you look)
Book by two of the top NetLogo ABM modellers...
Agent-Based and Individual-Based Modeling: A Practical Introduction, Steven Railsback and Volker Grimm (2011), Princeton University Press; ISBN: 978-0691136745 (~£30 new)
Well regarded book on NetLogo...
An Introduction to Agent-Based Modeling: Modeling Natural, Social, and Engineered Complex Systems with NETLogo, Uri Wilensky and William Rand (2015), MIT Press; ISBN: 978-0262731898 (~£35 new)
Interesting, if retro, book on city modelling using SimCity...
SimCity Planning Commission Handbook, Johnny Wilson (1990), Osborne/McGraw-Hill; ISBN: 978-0078816604 (~£5 new)

 


 

Maths and modelling:

 

The classic texts for scientific computing are the Numerical Recipes books (homepage and online versions). There isn't one specifically for Java, but the C++ book should make sense: Numerical Recipes: The Art of Scientific Computing William Press and others (2007), Third Edition, Cambridge University Press; ISBN: 978-0521880688 (~£50). Ports to Java are being developed, notably these projects.
The other standard text covering scientific computing and broader computing algorithms is..
The Art of Computer Programming, Donald E. Knuth (2011), Addison Wesley; ISBN: 978-0321751041 (~£170)
A simpler Java book that will probably give you enough to be getting on with is...
Data Structures and Algorithms in Java, Michael T. Goodrich and Roberto Tamassia (2010), Fifth Edition, John Wiley & Sons; ISBN: 978-0470398807 (~£170 to £50)
A good numerical library book for Java is...
A Numerical Library in Java for Scientists and Engineers, Hang T. Lau (2003), Chapman and Hall; ISBN: 978-1584884309 (~£100)
A good book for those concerned with the details of floating-point accuracy and computer arithmetic etc. is...
Hacker's Delight, Henry S. Warren (2012), Second Edition, Addison Wesley; ISBN: 978-0321842688 (~£30)

 


 

Parallelisation:

 

C++ code
An Introduction to Parallel Programming, Peter Pacheco (2011), Morgan Kaufmann; ISBN: 978-0123742605 (~£50)
Due to be released in 2015...
Parallel Programming Patterns: Working with Concurrency in OpenMP, MPI, Java, and OpenCL, Timothy Mattson et al. (2015), Addison Wesley; ISBN: 978-0321685995 (~£35)
More general info on multi-thread processing since Java 1.5 (but note that some additions were made in Java 1.7)...
Java Concurrency in Practice, Brian Goetz et al. (2006), Addison Wesley; ISBN: 978-0321349606 (~£40)

 


 

Text and Language:

 

A good book on simple RegEx parsing and analysis is...
Java Regular Expressions, Mehran Habibi (2004), APRESS; ISBN: 978-1590591079 (~£30)

 


 

Python and Data Processing:

 

A good book on basic Python and its power...
Automate the Boring Stuff with Python: Practical Programming for Total Beginners, Al Sweigart (2015), No Starch Press; ISBN: 978-1593275990 (~£30)
A good book core data analysis libraries...
Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython, Wes McKinney (2012), O'Reilly Media; ISBN: 978-1449319793 (~£20)
The future for Big Data processing...
Python Machine Learning, Sebastian Raschka (2015), Packt Publishing; ISBN: 978-1783555130 (~£30)
Web scraping for data...
Web Scraping with Python: Collecting Data from the Modern Web, Ryan Mitchell (2015), O'Reilly Media; ISBN: 978-1491910290 (~£30)

 


 

Operating systems and other software:

 

A good general starting point on Linux...
Linux: The Complete Reference, Richard Petersen (2008), McGraw-Hill Osborne; ISBN: 978-0071492478 (~£35)
Includes LAN and security setup...
Linux All-in-One For Dummies, Emmett Dulaney (2010), Wiley; ISBN: 978-0470770191 (~£30)