CS-Related Books & Courses (Updating)

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
    • OCaml
    • A-norm form
  • 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