1.9. Suggested reading

These notes are self-contained. Nevertheless, as outlined in the unit delivery plan you are expected to carry out independent reading as part of your studies. Moreover, you’ll need to do some wider reading for some parts of the Labs. They won’t give step-by-step instructions for everything.

More generally, there’s no need to restrict your learning to the contents of these notes! When debugging code, most people will find support by searching for topics online or via AI, so search and see works best for you. As programming is a very important skill to learn, there are many different sources of additional information you can make use of. The below are some starting suggestions.

1.9.1. Shell scripting

Windows:

  • Bruce Payette and R. Siddaway, “Windows PowerShell in Action,” 3rd edition, Manning, New York, 2017.

  • Microsoft online course.

macOS/Linux:

  • Arnold Robbins and N. H. F. Beebe, “Classic Shell Scripting,” O’Reilly, Springfield, 2005.

  • Google shell style guide.

1.9.2. Git

Online training materials:

Books:

  • Scott Chacon and B. Straub, “Pro Git,” 2nd edition, Apress, New York, 2014. Available online.

1.9.3. Python

Alternative online courses:

Books:

  • Al Sweigart, “Automate the Boring Stuff with Python,” 3rd edition, No Starch Press, San Francisco, 2025. A very gentle introduction to Python and using it for common computer based tasks.

  • David Beazley, “Python Distilled,” Pearson, London, 2021. A very good summary of Python. Possibly best used once you already have a little familiarity with Python, rather than as a first text.

  • Micha Gorelick and I. Ozsvald, “High Performance Python,” 3rd edition, O’Reilly, Springfield, 2025. For students wanting to go further and write higher performance code.

1.9.4. Rust

Alternative online courses:

Books

  • Steve Klabnik and C. Nichols, “The Rust Programming Language,” 3rd edition, No Starch Press, San Francisco, 2025. This is a printed version of the Rust Book.

  • Jon Gjengset, “Rust for Rustaceans,” No Starch Press, San Francisco, 2021. For students wanting to go further.

1.9.5. C/C++

Online training materials:

Books:

  • Robert C. Seacord, “Effective C: An introduction to professional C programming,” 2nd edition, No Starch Press, San Francisco, 2020.

  • Ivor Horton and P. Van Weert, “Beginning C++23: From Beginner to Pro,” seventh edition, Apress, New York, 2023.

1.9.6. Programming in general

Websites covering a wide number of different topics:

Books:

  • David Thomas and A. Hunt, “The pragmatic programmer,” 2nd edition, Addison-Wesley, Boston, 2019. This focuses more on the art of programming and software engineering. That is, how to write code that is correct, easy to debug, and easy to maintain. These are very important for any non-trivial software problem.

  • Erich Gamma, R. Helm, R. Johnson and J. Vlissides, “Design patterns: Elements of reusable object-oriented software,” Addison-Wesley, Boston, 1995. Covers design patterns, particularly for objects. These are common ways of structuring the code for good performance.