CS-Related Books & Courses (Updating)
Feb 15th, 2019
0
This is a summary article, collecting CS-related books and courses that I have/want to read/study.
Algorithms & Data Structures
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, Introduction to Algorithms (3nd ed.), MIT Press, 2009, Chinese
- [Course], MIT 6.006: Introduction to Algorithms, Zachary R Abel
- [Course], Princeton CS 521: Advanced Algorithm Design, Sanjeev Arora
Programming Languages
- C/C++
- Brian Kernighan, Dennis Ritchie, The C Programming Language (2nd ed.)K&R, Prentice-Hall, 1988, Chinese
- Stanley B. Lippman, Josée Lajoie, Barbara E. Moo, C++ Primer (5th ed.), Objectwrite, 2012, Chinese
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1994
- Prolog
- [Course], Cambridge’11-12: Prolog, David Evans
- William F. Clocksin, Christopher S. Mellish, Programming in Prolog (5th ed.), Springer, 2003
- Theory
- Harold Abelson, Gerald Jay Sussman, Julie Sussman, Structure and Interpretation of Computer Programs (2nd ed.)(SICP), MIT Press, 1996, Chinese
- DSL Design
- [Course], Stanford CS 442: High Productivity and Performance with Domain Specific Languages in Scala, Kunle Olukotun
- Programming Languages
- Benjamin C. Pierce, Software Foundations, Online
- Benjamin C. Pierce, Types and Programming Languages, Online
- [Course], Washington CSE 341: Programming Languages, Zachary Tatlock
- [Course], Cornell CS 6110: Advanced Programming Languages (graduate), Adrain Sampson
- [Course], Cornell CS 4110: Programming Languages and Logics (undergrad), Adrain Sampson
- Principles of PL
- [Course], Washington CSE 505, Zachary Tatlock
Computer System & Architecture
- Randal E. Bryant, David R. O’Hallaron, Computer Systems: A Programmer’s Perspective (3rd ed.)(CSAPP), Pearson, 2016, Chinese
- David A. Patterson, John L. Hennessy, Computer Organization and Design: The Hardware/Software Interface (5th.ed), Elsevier, 2014, Chinese
- Robert Sedgewick, Kevin Wayne, Computer Science: An Interdisciplinary Approach, Online
- [Course], MIT 6.823: Computer System Architecture, Daniel Sanchez
- [Course], MIT 6.004: Computation Structures, Arvind
- [Course], Stanford CS 217, Hardware Accelerators for Machine Learning, Kunle Olukotun
- [Course], Washington CSE 590G: Architecture Seminar
- [Course], Cornell ECE 2400: Computer Systems Programming, Christopher Batten
- [Course], MIT 6.033: Computer System Engineering, Tim Kraska
AI System
- [Course], UCB CS294: Machine Learning Systems, Joseph E. Gonzalez
Compiler
- Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey Ullman, Compilers: Principles, Techniques, and Tools (2nd ed.)(Dragon), Pearson, 2006, Chinese
- Andrew W. Appel, Maia Ginsburg, Modern Compiler Implementation in C(Tiger), Cambridge University Press, 2004, Chinese
- Steven Muchnick, Advanced Compiler Design and Implementation(Whale), Morgan Kaufmann, 1997, Chinese
- Keith D. Cooper, Linda Torczon, Engineering a Compiler (2nd ed.)(Oak), Elsevier, 2012, Chinese
- Randy Allen, Ken Kennedy, Optimizing Compilers for Modern Architectures: A Dependence-based Approach, Morgan Kaufmann, 2001, Chinese
- [Course], Universidade Federal de Minas Gerais DC888: Static Program Analysis, Fernando Magno Quintão Pereira
- [Course], Stanford CS 243: Program Analysis and Optimization, Monica Lam
- [Course], CMU 15-745: Optimizing Compilers for Modern Architectures, Phil Gibbons
- [Course], Rice COMP 412: Compiler Construction for Undergraduates, Keith Cooper
- [Course], Cornell CS 6120: Advanced Compiler β, Adrian Sampson
- [Course], CMU CS 15-745: Optimizing Compilers for Modern Architectures, Phil Gibbons
- [Course], NEU CS4410: Compiler Design, Benjamin Lerner
- Overview of compiler optimizations
Operating Systems
- Avi Silberschatz, Peter Baer Galvin, Greg Gagne, Operating System Concepts (10th ed.), John Wiley & Sons, Inc., 2018, Online
- [Course], Stanford CS 140: Operating Systems, David Mazières
- [Course], CMU 15-410: Operating System Design and Implementation
- [Course], CS262a: Advanced Topics in Computer Systems
Computer Networking
- James F. Kurose, Keith W. Ross, Computer Networking - A Top-Down Approach (7th ed.), Pearson, 2017
- [Course], CMU 15-441: Computer Networks, Peter Steenkiste
Parallel Computing
- Grama, Gupta, Kumar, Karypis, Introduction to Parallel Computing, Addison Wesley, 2003, Online
- [Course], Swarthmore CS 87: Parallel & Distributed Computing, Tia Newhall
- [Course], Brown CS 0178: Programming Parallel and Distributed Systems, Steve Reiss
- [Course], CMU CS418: Parallel Computer Architecture and Programming, Todd C. Mowry
- [Seminar], ParallelRG: a reading group on parallel, concurrent and distributed computing, Laxman Dhulipala (CMU)
- [Course], SYSU: Multicore Programming, Jun Tao
Machine Learning & Data Mining
- Jure Leskovec, Anand Rajaraman, Jeff Ullman, Mining of Massive Datasets, Cambridge University Press, Online
- [Course], Stanford CS246: Mining Massive Data Sets, Jure Leskovec
- [Course], Cornell CS6787: Advanced Machine Learning Systems, Christopher De Sa
Math
- Convex Optimization
- Stephen Boyd, Lieven Vandenberghe, Convex Optimization, Cambridge, 2004, Chinese
- [Course], PKU 0013660: Convex Optimization, Zaiwen Wen
- Abstract Algebra
- [Course], Harvard Math 122: Algebra I: Theory of Groups and Vector Spaces
Distributed Systems
- [Course], MIT 6.824: Distributed Systems
- [Course], CMU 15-440: Distributed Systems
Graph / Networks
- [Course], MIT 6.886: Graph Analytics, Julian Shun
- [Course], Oxford Math: C5.4 Networks, Renaud Lambiotte
Miscellaneous
Interdisciplinary
- Donald E. Knuth, The Art of Computer Programming(TAOCP), Addison-Wesley, 2011
- Douglas Hofstadter, Gödel, Escher, Bach, Basic Book, 1999
General Institue Requirements