This document consists of great books or articles on computer science, game design, and some miscellaneous books. Some are here because there is a course covering the same material; some are just great books that you should read at some point in your career.
Once you have made it through most of the curriculum, knowing whether a book is worth your time will become easier. Or, if you are struggling in one of the courses, perhaps reading a book on the subject will help.
Read | Name | Author(s) |
---|---|---|
⬜ | Introduction to Computation and Programming Using Python 2e | John V. Guttag |
⬜ | Think Python 2e | Allen B. Downey |
⬜ | How to Design Programs | Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi |
⬜ | Structure and Interpretation of Computer Programs | Hal Abelson, Jerry Sussman, Julie Sussman |
⬜ | Concepts, Techniques, and Models of Computer Programming | Peter Van Roy, Seif Haridi |
⬜ | Design Patterns: Elements of Reusable Object-Oriented Software | Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides |
⬜ | Refactoring | Martin Fowler |
✅ | Clean Code | Robert Martin |
⬜ | Code Complete 2e | Steve McConnell |
⬜ | The Pragmatic Programmer | Andrew Hunt, David Thomas |
⬜ | Programming Languages: Application and Interpretation | Shriram Krishnamurthi |
⬜ | Programming and Programming Languages | Shriram Krishnamurthi, Benjamin S. Lerner, Joe Gibbs Politz |
⬜ | Competitive Programming | Steven Halim, Felix Halim |
⬜ | The Elements of Programming Style | Brain W. Kernighan, P.J. Plauger |
⬜ | The Practice of Programming | Brain W. Kernighan,Rob Pike |
Read | Name | Author(s) |
---|---|---|
⬜ | Expert C Programming: Deep C Secrets | Peter Van Der Linden |
⬜ | Modern C | Jens Gustedt |
⬜ | The C Programming Language | Brian W. Kernighan, Dennis M. Ritchie |
Read | Name | Author(s) |
---|---|---|
⬜ | Accelerated C++: Practical Programming by Example | Mike Hendrickson, Andrew Koenig |
⬜ | A Tour of C++, Second Edition) | Bjarne Stroustrup |
⬜ | Effective Modern C++ | Scott Meyers |
⬜ | More Effective C++ | Scott Meyers |
⬜ | The C++ Programming Language, Fourth Edition | Bjarne Stroustrup |
Read | Name | Author(s) |
---|---|---|
⬜ | Calculus Made Easy | Silvanus P. Thompson |
⬜ | Ximera: Interactive Calculus Textbooks | Ximera team |
⬜ | Discrete Mathematics with Applications (4th Edition) | Susanna S. Epp |
⬜ | Discrete Mathematics: An Open Introduction | Oscar Levin |
⬜ | Applied Discrete Structures | Alan Doerr, Ken Levasseur |
⬜ | Grinstead and Snell’s Introduction to Probability | Charles M. Grinstead, J. Laurie Snell |
⬜ | Introduction to Linear Algebra | Gilbert Strang |
⬜ | Essential Mathematics for Games and Interactive Applications | James M. Van Verth & Lars M. Bishop |
Read | Name | Author(s) |
---|---|---|
✅ | But How Do It Know? | J. Clark Scott |
⬜ | Types and Programming Languages | Benjamin C. Pierce |
⬜ | The Hidden Language of Computer Hardware and Software | Charles Petzold |
⬜ | Computer Systems: A Programmer's Perspective (3rd Edition) | Randal E. Bryant, David R. O'Hallaron |
⬜ | Modern Operating Systems (4th Edition) | Andrew S. Tanenbaum, Herbert Bos |
⬜ | Computer Organization and Design: The Hardware/Software Interface | David Patternson, John Hennessy |
⬜ | Computer Networks (5th Edition) | Andrew S. Tanenbaum, David J. Wetherall |
⬜ | Computer Networking: A Top-Down Approach (6th Edition) | James F Kurose, Keith W Ross |
⬜ | Distributed Systems: Principles and Paradigms | Andrew Tanenbaum |
⬜ | Distributed Systems Reading Group | Various |
⬜ | System Design: Design large-scale systems | Various |
⬜ | Operating Systems Design and Implementation | Andrew S. Tanenbaum, Albert S. Woodhull |
⬜ | Principles of Compiler Design | Alfred Aho, Jeffrey Ullman |
Read | Name | Author(s) |
---|---|---|
⬜ | Introduction to Computing: Explorations in Language, Logic, and Machines | David Evans |
⬜ | Introduction to the Theory of Computation | Michael Sipser |
⬜ | Introduction to Algorithms (3rd Edition) | Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein |
⬜ | The Algorithm Design Manual | Steven Skiena |
⬜ | Category Theory: A Gentle Introduction | Peter Smith |
⬜ | Category Theory for Programmers: The Preface | Bartosz Milewski |
⬜ | An Introduction to Information Retrieval | Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze |
Read | Name | Author(s) |
---|---|---|
⬜ | Architecture of a Database System | Joseph M. Hellerstein, Michael Stonebraker, James Hamilton |
⬜ | Readings in Database Systems | Peter Bailis, Joseph M. Hellerstein, Michael Stonebraker, editors |
⬜ | Database Management Systems | Raghu Ramakrishnan, Johannes Gehrke |
⬜ | Transaction Processing: Concepts and Techniques | Jim Gray, Andreas Reuter |
⬜ | Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World | William Kent |
⬜ | The Architecture of Open Source Applications | Michael DiBernardo (editor) |
⬜ | An Introduction to Statistical Learning | Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani |
⬜ | Deep Learning | Ian Goodfellow, Yoshua Bengio and Aaron Courville |
⬜ | Bayesian Reasoning and Machine Learning | David Barber |
⬜ | Language Implementation Patterns | Terence Parr |
⬜ | Compilers: Principles, Techniques, and Tools (2nd Edition) | Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman |
⬜ | Compiler Construction | Niklaus Wirth |
⬜ | The Mythical Man-Month | Fred Brooks, Jr. |
⬜ | Physically Based Rendering: From Theory To Implementation | Matt Pharr, Wenzel Jakob, and Greg Humphreys |
Read | Name | Author(s) |
---|---|---|
✅ | A Theory of Fun for Game Design | Raph Koster |
✅ | Developer's Dilemma: The Secret World of Video Game Creators | Casey O'Donnell |
✅ | Understanding Comics | Scott McCloud |
✅ | Boss Fight Books: Earthbound | Ken Baumann |
✅ | Uncertainty in Games | Greg Costikyan |
⬜ | Game Engine Architecture, Third Edition | Jason Gregory |
✅ | The Art of Game Design | Jesse Schell |
⬜ | Level Up! | Scott Rogers |
⬜ | Framed Ink | Marcos Mateu-Mestre |
⬜ | Things We Think About Games | Will Hindmarch & Jeff Tidball |
⬜ | Thinking Like a Game Designer | Justin Gary |
⬜ | A Casual Revolution: Reinventing Video Games and their Players | Jesper Juul |
⬜ | Atari Age: The Emergence of Video Games in America | Michael Z. Newman |
⬜ | Communities of Play: Emergent Cultures in Multiplayer Games and Virtual Worlds | Celia Pearce |
⬜ | Critical Play: Radical Game Design | Mary Flanagan |
⬜ | Game Design Workshop: A Playcentric Approach to Creating Innovative Games | Tracy Fullerton |
⬜ | Game Feel: A Game Designer's Guide to Virtual Sensation | Steve Swink |
⬜ | Game Mechanics: Advanced Game Design | Ernest Adams & Joris Dormans |
⬜ | I am Error | Nathan Altice |
⬜ | Play Between Worlds: Exploring Online Game Culture | T.L. Taylor |
⬜ | Play Matters | Miguel Sicart |
⬜ | Super Power, Spoony Bards, and Silverware: The Super Nintendo Entertainment System | Dominic Arsenault |
⬜ | The Art of Failure: An Essay on the Pain of Playing Video Games | Jesper Juul |
⬜ | The Warcraft Civilization: Social Science in a Virtual World | William Sims Bainbridge |
⬜ | The Well-Played Game: A Player's Philosophy | Bernard De Koven |
⬜ | Values at Play in Digital Games | Mary Flanagan and Helen Nissenbaum |
⬜ | Works of Game: On the Aesthetics of Games and Art | John Sharp |
⬜ | Manga in Theory and Practice: The Craft of Creating Manga | Hirohiko Araki |
⬜ | Story | Roberty McKee |
⬜ | 101 Things I Learned in Architecture School | Matthew Frederick |
Read | Name | Author(s) |
---|---|---|
⬜ | The Imposter's Handbook | Rob Conery |