🐻 Cornell Computer Science unofficial reading list, fall 2026
I compiled this unofficial Cornell computer science reading list using publicly available information from the online bookstore, library reserves, and course webpages.
To track my own explorations, I marked books and papers I’ve previously read with a bold ✔️
Freshman level
Intro. to Computing: A Design & Development Perspective CS 1110
- ✔️ How to Use the Terminal Command Line in macOS by Igor Degtiarenko
- ✔️ How to Write Doc Comments for the Javadoc Tool
- ✔️ PEP 257: Docstring Conventions by Goodger & van Rossum
- The Python Standard Library
Python CS 1133
- ✔️ Think Python: How to Think Like a Computer Scientist by Allen B. Downey
Sophomore level
C++ Programming CS 2024
Object-Oriented Programming & Data Structures CS 2110
- 📕 Books
- ✔️ Object-Oriented Design & Data Structures by Myers & Kozen
- ✔️ Principled Programming: Intro. to Coding in Any Imperative Language by Tim Teitelbaum
- Data Structures & Algorithms in Java: A Project-Based Approach by Dan S. Myers
- Software Engineering at Google: Lessons Learned from Programming Over Time by Winters et al.
- Numerical Recipes: The Art of Scientific Computing by Press et al.
- 🔗 Webpages
- Google Java Style Guide
- ✔️ Two hard things by Martin Fowler
Object-Oriented Design & Data Structures - Honors CS 2112
- 📕 Books
- ✔️ Object-Oriented Design & Data Structures by Myers & Kozen
- Data Structures & Abstractions with Java by Carrano & Henry
- Data Structures & Problem Solving Using Java by Mark Allen Weiss
- Program Development in Java: Abstraction, Specification & Object-Oriented Design by Liskov & Guttag
- Java Precisely by Peter Sestoft
- ✔️ Design Patterns: Elements of Reusable Object-Oriented Software by Gamma et al.
- Java in a Nutshell: A Desktop Quick Reference by Evans et al.
- ✔️ Effective Java: Best Practices for the Java Platform by Joshua Bloch
- 📄 Papers & Webpages
- ✔️ Tips for new Java programmers by John Sargeant
- ✔️ Identifying & Correcting Java Programming Errors for Introductory Computer Science Students by Hristova et al.
- Please Don’t Learn to Code by Jeff Atwood
- ✔️ Teach yourself programming in 10 years by Peter Norvig
Junior level
Computer System Organization & Programming CS 3410
- 📕 Books
- Operating Systems: Three Easy Pieces by Arpaci-Dusseau & Arpaci-Dusseau
- Crafting Interpreters by Robert Nystrom
- The Rust Programming Language by Klabnik et al.
- Pro Git by Chacon & Straub
- 📄 Papers & Webpages
- What Every Computer Scientist Should Know About Floating-Point Arithmetic by David Goldberg
- ✔️ A proactive approach to more secure code by Microsoft Security Response Center
- ✔️ Safe from compiler bugs? by John Regehr
- Distilling the Real Cost of Production Garbage Collectors by Cai et al.
- Quantifying the Performance of Garbage Collection vs. Explicit Memory Management by Hertz & Berger
- Back to the Building Blocks: A Path Toward Secure and Measurable Software
- Comprehensive Rust by Google
- Rust by Example
- ✔️ Unix tutorial by Michael Stonebank
- Makefile Tutorial
Foundations of AI Reasoning & Decision-Making CS 3700
- Artificial Intelligence: A Modern Approach by Russell & Norvig
Intro. to Machine Learning CS 3780/5780
- Understanding Machine Learning: From Theory to Algorithms by Shalev-Shwartz & Ben-David
- ✔️ Mathematics for Machine Learning by Deisenroth et al.
- Machine Learning by Tom Mitchell
- Machine Learning: A Probabilistic Perspective by Kevin Murphy
- An Intro. to Support Vector Machines & Other Kernel-based Learning Methods by Cristianini & Shawe-Taylor
- Learning with Kernels: Support Vector Machines, Regularization, Optimization & Beyond by Scholkopf & Smola
- Pattern Recognition & Machine Learning by Christopher M. Bishop
- Intro. to Machine Learning by Ethem Alpaydin
- Pattern Classification by Duda et al.
- The Elements of Statistical Learning: Data Mining, Inference & Prediction by Hastie et al.
- Causal Inference for Statistics, Social & Biomedical Sciences: An Introduction by Imbens & Rubin
- Foundations of Statistical Natural Language Processing by Hamming & Schutze
- Intro. to Information Retrieval by Manning et al.
- Statistical Learning Theory by Vladimir N. Vapnik
Senior level
Numerical Analysis & Differential Equations CS 4210
- Numerical Analysis: Mathematics of Scientific Computing by Kincaid & Cheney
- Numerical Computing with MATLAB by Cleve B. Moler
Systems Programming CS 4414/5416
- 📕 Books
- Computer Systems: A Programmer’s Perspective by Bryant & O’Hallaron
- The Rust Programming Language by Klabnik et al.
- Programming Rust: Fast, Safe Systems Development by Blandy et al.
- Rust in Action by Tim McNamara
- Rust for Rustaceans: Idiomatic Programming for Experienced Developers by Jon Gjengset
- Operating Systems: Three Easy Pieces by Arpaci-Dusseau & Arpaci-Dusseau
- Advanced Programming in the UNIX Environment by Stevens & Rago
- Beej’s Guide to Network Programming: Using Internet Sockets by Brian Hall
- The Art of UNIX Programming by Eric Raymond
- Linkers & Loaders by John R. Levine
- 📄 Papers & Webpages
- Rust by Example
- Comprehensive Rust
- C++ to Rust Phrasebook
- ✔️ How to Learn Rust in 2026: A Complete Beginner’s Guide to Mastering Rust Programming by Vitaly Bragilevsky
- The Rustonomicon
- Learn Rust with Entirely Too Many Linked Lists
- Rust API Guidelines
- Rust Design Patterns
- The Rust Performance Book by Nethercote et al.
- Rust Atomics & Locks: Low-Level Concurrency in Practice by Mara Bos
- What Every Programmer Should Know About Memory by Ulrich Drepper
- ✔️ Always Measure One Level Deeper by John Ousterhout
Computer Architecture CS 4420
Foundations of Robotics CS 4750/5750
- Probabilistic Robotics by Thrun et al.
- Planning Algorithms by Steven M. LaValle
- Artificial Intelligence: A Modern Approach by Russell & Norvig
- Modelling & Control of Robot Manipulators by Sciavicco & Siciliano
- Modern Robotics: Mechanics, Planning & Control by Lynch & Park
- The Python Tutorial
Intro. to Computational Complexity CS 4814/5814
- Computational Complexity: A Modern Approach by Arora & Barak
- Intro. to the Theory of Computation by Michael Sipser
Masters level
Software Testing CS 5154
Distributed Computing Principles CS 5414
<!– - Teaching Rigorous Distributed Systems With Efficient Model Checking by Michael et al.
- Knowledge & Common Knowledge in a Distributed Environment by Halpern & Moses
- Distributed Snapshots: Determining Global States of Distributed Systems by Chandy & Lamport
- Chain Replication for Supporting High Throughput & Availability by van Renesse & Schneider
- Hypervisor-based Fault Tolerance by Bressoud & Schneider
- Implementing Fault-Tolerant Services Using the State Machine Approach: A Tutorial by Fred B. Schneider
- Paxos Made Simple by Leslie Lamport
- The Part-Time Parliament by Leslie Lamport
- A Survey of Rollback-Recovery Protocols in Message-Passing Systems by Elnozahy et al.
- Respec: Efficient Online Multiprocessor Replay via Speculation & External Determinism by Lee et al.
- DoublePlay: Parallelizing Sequential Logging & Replay by Veeraraghavan et al.
- Impossibility of Distributed Consensus with One Faulty Process by Fischer et al. –>
Systems for Large-Scale ML CS 5470
See website for full paper list – I only list those I’ve read
- ✔️ Attention Is All You Need by Vaswani et al.
- ✔️ The Illustrated Transformer by Jay Alammar
- ✔️ Reducing Activation Recomputation in Large Transformer Models by Korthikanti et al.
Frontiers of Computer Vision CS 5672
- Computer Vision: Algorithms & Applications by Richard Szeliski
- Foundations of Computer Vision by Torralba et al.
Doctoral level
Category Theory for Computer Scientists CS 6117
- Categories for Types by Roy L. Crole
- Basic Category Theory by Tom Leinster
- Category Theory by Steve Awodey
- Category Theory in Context by Emily Riehl
- Programming language semantics
- Categorical Logic & Type Theory by B. Jacobs
- ✔️ Practical Foundations for Programming Languages by Robert Harper
- Types & Programming Languages by Benjamin C. Pierce
- The Category-Theoretic Solution of Recursive Domain Equations by Smyth & Plotkin
- Papers
- Fixed Points of Functors by Adámek et al.
- A Mixed Linear & Non-Linear Logic: Proofs, Terms & Models by P.N. Benton
- Notions of Computation & Monads by Eugenio Moggi
- What is Algebraic about Algebraic Effects & Handlers? by Andrej Bauer
Software Engineering in the Era of Machine Learning CS 6158
Seminars
Computer Science CS 7090
Programming Languages CS 7190
Scientific Computing & Numerics CS 7290
Systems Research CS 7490
Computer Graphics & Vision CS 7690
Artificial Intelligence CS 7790
Robotics CS 7796
Theory of Algorithms & Computing CS 7890