Six books every current or aspiring Education student should read
Dr Jonathan Padley’s suggested readings will help you navigate this flexible interdisciplinary programme.
Dr John Fawcett, Director of Studies in Computer Science at Lucy Cavendish College, provides an inspiring top five list.
Cambridge was a pioneer of computer science and continues to lead its development. It is a fascinating field that brings together disciplines including mathematics, engineering, the natural sciences, psychology, and linguistics.
Dr John Fawcett, Lucy Cavendish College’s Director of Studies in Computer Science has compiled a list of five books to help you get a great start on your computer science journey:
1. Introduction to Algorithms by Cormen et al
A comprehensive update of the leading algorithms text, with new material on matchings in bipartite graphs, online algorithms, machine learning, and other topics. Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigour. Introduction to Algorithms uniquely combines rigour and comprehensiveness. It covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers, with self-contained chapters and algorithms in pseudocode. Since the publication of the first edition, Introduction to Algorithms has become the leading algorithms text in universities worldwide as well as the standard reference for professionals.
2. Operating system concepts by Silberschatz, Galvin, and Gagne
An up-to-date book with contemporary examples of how operating systems function, as well as enhanced interactive elements to improve learning and the student’s experience with the material. It combines instruction on concepts with real-world applications so that students can understand the practical usage of the content. End-of-chapter problems, exercises, review questions, and programming exercises help to further reinforce important concepts. New interactive self-assessment problems are provided throughout the text to help students monitor their level of understanding and progress. A Linux virtual machine (including C and Java source code and development tools) allows students to complete programming exercises that help them engage further with the material.
3. Concepts in programming languages by John C Mitchell
For undergraduate and beginning graduate students, this textbook explains and examines the central concepts used in modern programming languages, such as functions, types, memory management, and control. The book is unique in its comprehensive presentation and comparison of major object-oriented programming languages. Separate chapters examine the history of objects, Simula and Smalltalk, and the prominent languages C++ and Java. The author presents foundational topics, such as lambda calculus and denotational semantics, in an easy-to-read, informal style, focusing on the main insights provided by these theories. Advanced topics include concurrency, concurrent object-oriented programming, program components, and inter-language interoperability. A chapter on logic programming illustrates the importance of specialised programming methods for certain kinds of problems. This book will give the reader a better understanding of the issues and tradeoffs that arise in programming language design, and a better appreciation of the advantages and pitfalls of the programming languages they use.
4. Computer organization and design: The Hardware/software interface RISC-V edition by David A Patterson
Computer Organization and Design RISC-V Edition: The Hardware Software Interface, Second Edition, the award-winning textbook from Patterson and Hennessy that is used by more than 40,000 students per year, continues to present the most comprehensive and readable introduction to this core computer science topic. This version of the book features the RISC-V open source instruction set architecture, the first open source architecture designed for use in modern computing environments such as cloud computing, mobile devices, and other embedded systems. Readers will enjoy an online companion website that provides advanced content for further study, appendices, glossary, references, links to software tools, and more.
5. The C programming language by Brian Kernighan and Dennis Ritchie
This edition describes C as defined by the ANSI standard. This book is meant to help the reader learn how to program in C. The book assumes some familiarity with basic programming concepts like variables, assignment statements, loops, and functions. A novice programmer should be able to read along and pick up the language.
Explore your subject further
Supracurricular exploration is an important way to expand your knowledge of your subject, explore your interests and develop your skills. Our new webpage contains guidance on supracurricular exploration and a comprehensive source of resources, grouped according to undergraduate degrees at Cambridge.