목차7개 항목
출처와 참고
OSSU의 공개 컴퓨터과학 커리큘럼과 관련 자료를 주제별로 재구성한 노트다.
읽을거리 활용 원칙
강좌에서 이해가 막힌 주제를 다른 설명과 예제로 보완하거나, 핵심 과정을 마친 뒤 깊이를 더할 때 사용한다. 일부 책은 유료이며 이 목록은 무료 배포를 뜻하지 않는다.
Programming
- Introduction to Computation and Programming Using Python 3e: John V. Guttag
- Think Python 2e: Allen B. Downey
- How to Design Programs 2e: Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
- Structure and Interpretation of Computer Programs 2e: Hal Abelson, Jerry Sussman, Julie Sussman
- The Structure and Interpretation of Computer Programs (2021, JavaScript): Harold Abelson, Gerald Jay Sussman, Julie Sussman, Martin Henz, Tobias Wrigstad and Samuel Fang
- 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 2e: 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
- Introduction to computing in Java: Robert Sedgewick, Kevin Wayne
Math
- 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
- Linear Algebra for Everyone: Gilbert Strang
- The Art of Linear Algebra: Kenji Hiranabe, Gilbert Strang
Systems
- But How Do It Know?: J. Clark Scott
- 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 (6th Edition): David Patternson, John Hennessy
- Computer Networks (5th Edition): Andrew S. Tanenbaum, David J. Wetherall
- Computer Networking: A Top-Down Approach (8th Edition): James F Kurose, Keith W Ross
- Computer Networks: A Systems Approach: Larry Peterson and Bruce Davie
- Distributed Systems: Principles and Paradigms: Andrew Tanenbaum
- Operating Systems Design and Implementation: Andrew S. Tanenbaum, Albert S. Woodhull
- Crafting Interpreters: Robert Nystrom
- Principles of Compiler Design: Alfred Aho, Jeffrey Ullman
- Distributed Systems Reading Group: Various
- System Design: Design large-scale systems: Various
- Code: The Hidden Language of Computer Hardware and Software: Charles Petzold
Theory
- Introduction to Computing: Explorations in Language, Logic, and Machines: David Evans
- Introduction to the Theory of Computation (3rd Edition): Michael Sipser
- Introduction to Algorithms (3rd Edition): Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
- The Algorithm Design Manual (3rd Edition): Steven Skiena
- Algorithms (4th Edition): Robert Sedgewick
- Algorithms Illuminated: Tim Roughgarden
- Introducing Category Theory: Peter Smith
- Category Theory for Programmers: The Preface: Bartosz Milewski
- An Introduction to Information Retrieval: Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze
- Computer Science: An interdisciplinary approach: Robert Sedgewick, Kevin Wayne
Applications
- Architecture of a Database System: Joseph M. Hellerstein, Michael Stonebraker, James Hamilton
- Readings in Database Systems (5th Edition): Peter Bailis, Joseph M. Hellerstein, Michael Stonebraker, editors
- Database Management Systems (3rd Edition): 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 (3rd Edition): 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
Tools
- The Linux Command Line: by William Shotts