- Data Structures and Algorithms
- Database Management Systems
- Principles of Programming Languages
- Computer Organisation and Architecture
- Algorithm Design and Analysis
- Theory of Computation
- Operating Systems
- Data Communication
- Microprocessors and Microcontrollers
- Discrete Mathematics
- Computer Graphics
- Information Theory and Coding
- Compiler Design
- Computer Networks
- Software Engineering
- Distributed Systems
- References
- Miscellaneous Links
- Introduction to Data Structures with Applications - Jean P. Tremblay and Paul G. Sorenson
- Data Structures and Algorithms - Alfred V. Aho, John E. Hopcroft and Jeffrey D. Ullman
- Data Abstraction and Problem Solving with C++: Walls and Mirrors - Frank M. Carrano [1]
- Data Structures and Algorithm Analysis in C - Mark Allen Weiss
- Algorithms in Java - Robert Sedgewick [2]
- Data Structures and Algorithms in Java - M. Goodrich, R. Tamassia, and M. Goldwasser [3]
- Data Structures and Algorithms Analysis in Java - Mark Allen Weiss [4]
- Data Structures: Abstraction and Design Using Java - Elliot B. Koffman and Paul A. T. Wolfgang [5]
- An Introduction to Programming through C++ - Abhiram G. Ranade [6]
- ADTs, Data Structures and Problem Solving - Larry Nyhoff [7]
- Data Structures, Algorithms and Applications in C++ - Sartaj Sahani
- Data Structures and Algorithms: Concepts, Techniques and Applications - G. A. V. Pai
- Data Structures - D. Samanta
- Data Structures - Seymour Lipschutz
- Fundamentals of Data Structures in C - Ellis Horowitz
- How to Solve it - Computer - R. G. Dromey
- Data Structures Through C In Depth - Srivastava
- Handbook of Algorithms and Data Structures - in Pascal and C - G. H. Gonnet and R. Baeza-Yates
- Fundamentals of Data Structures in Pascal - Ellis Horowitz and Sartaj Sahni
- C++ Plus Data Structures - Nell Dale
- This topic includes a significant overlap with the one on Algorithm Design and Analysis. Many concepts carry over from this topic and one may find it useful to study them side-by-side. Many of the courses linked also may not follow a similar syllabus and may be at higher level than intended.
- There are numerous amounts of online resources including lecture videos. Such a list may be found elsewhere. An online Learning Assistant with Animations on VT's website may be useful for visualisation and explanation of certain concepts. Daniel Liang has also created some relevant animations which can be found here. USFCA also hosts a visualiser on their website and also includes instructions to create one.
- PLDS210 at UA does not have a particular reference textbook. Instead it uses a combination of many books as a source for lecture notes. Each topic has it's own list of references, which are the recommended material instead of the lecture notes.
- CMU's 15-111 uses an online textbook.
- CS 61BL at Berkeley uses a set of free notes by the instructor for the first half, and Algorithms by Sedgewick and Wayne for the second half.
- Data Structures and Algorithms (Level 1/C) at UoB recommends using 3 free ebooks linked on the course page.
^1 - Used as a reference for
- CS 302 at UNR but covers only Data Structures and also assumes prior background in Algorithms
^2 - Used as a reference for
- CS 226 at Princeton which is Sedgewick's own course
^3 - Used as a reference for
^4 - Used as a reference for
- 600.226 at JHU
- CS 315 at UT Austin a set of lecture notes hosted online are the primary material
^5 - Used as a reference for
^6 - Used as a reference for
- CS 213(M) at IITB which is taken by Ranade
^7 - Used as a reference for
- CS 240 at SUNY, B but covers only Data Structures
- Database Management Systems - Johannes Gehrke and Raghu Ramakrishnan [1]
- Database System Concepts - Abraham Silberschatz, Henry F. Korth & S. Sudarshan [2]
- Readings in Database Systems - Joseph M. Hellerstein and Michael Stonebraker (The (Databases) Red Book) [3]
- Principles of Database Systems - Jeffrey D. Ullman
- An Introduction to Database System - B. Desai
- An Introduction to Database Systems - Christopher J. Date
- Fundamentals of Database Systems - R. Elmasri, S. Navathe, S. B. Navathe, R. Sunderraman
- Database Systems: The Complete Book - Hector Garcia-Molina, Jeffrey D. Ullman and Jennifer Widom [4]
- Transaction Processing: Concepts and Techniques - Jim Gray and Andreas Reuter
- A First Course in Database Systems - Jeffrey Ullman and Jennifer Widom [5]
- Database Systems - Carolyn E. Begg and Thomas M. Connolly
- Database Concepts - David M. Kroenke and David J. Auer
- Physical Database Design: the database professional's guide to exploitingindexes, views, storage, and more - T. Teorey, S. Lightstone and T. Nadeau
- Database Modeling & Design: Logical Design - T. Teorey, S. Lightstone and T. Nadeau
- This is a rather modern theoretical topic which is the backbone of many systems we commonly use. Database books are also not available in as much variety as the other topics.
- TYCS recommends going through video lectures from Berkeley before textbooks.
^1 - Used as the reference for
- CS 186 at Berkeley
- CS 4320/4321 at Cornell
- COMS 4111 at CU
- Introductory Databases at UoB
- CMPT 354-D1 at SFU
- CS333 at USFCA
- CMPSC 431W at PSU
- EECS 339 at NWU (Note: Syllabus page only)
- CS/SE 4347 at UT Dallas
- CS662 at UoV
^2 - Used as the reference for
- CS 23500/33550 at UoC (Note: Syllabus page only)
- 15-445/645 at CMU
- CS 348 at UoW Canada along with ^1
^3 - It is the recommended book on TYCS. Used as the reference for
^4 - Used as the reference for
^5 - Used as the reference for
- CS x265 at VU but strongly recommends going through Jennifer Widom's self paced "Databases Course" on Stanford Lagunita
- Essentials of Programming Languages - Daniel P. Friedman, Mitchell Wand and Christopher T. Haynes (EOPL) [1]
- Concepts in Programming Languages - John C. Mitchell [2]
- Programming Languages: Application and Interpretation - S. Krishnamurthi (PLAI) [3]
- Programming Language Pragmatics - Michael L. Scott [4]
- Types and Programming Languages - Benjamin C. Pierce (TAPL) [5]
- A Formal Semantics of Programming Languages: An Introduction - Glynn Winskel [6]
- Structure and Interpretation of Computer Programs - Harold Abelson, Gerald Jay Sussman and Julie Sussman (SICP) [7]
- Concepts of Programming Languages - Robert W. Sebesta [8]
- Practical Foundations of Programming Languages - Robert Harper [9]
- Programming Languages: Design and Implementation - T. W. Prat & M. V. Zelkowitz [10]
- Programming Languages: Principles & Practices - Kenneth C. Louden [11]
- Programming Languages: Principles and Paradigms - Maurizio Gabbrielli and Simone Martini [12]
- Programming Languages – Concepts & Constructs - Ravi Sethi
- Foundations for Programming Languages - John C. Mitchell
- The Lambda Calculus: Its Syntax and Semantics - H. P. Barendregt
- Principles of Programming Languages - Chopra Rajiv
- Principles of Programming Languages - Dowek
- Design Concepts in Programming Languages - Franklyn Turbak and David Gifford
- Concepts, Techniques and Models of Computer Programming - Peter Van Roy and Seif Haridi
- Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp - Peter Norvig
- Theories of Programming Languages - John C. Reynolds [13]
- Type Theory and Functional Programming - Simon Thompson
- Benjamin Pierce has a list of Great Works in Programming Languages.
- CSE526 at SUNY, SB has a list of readings from different books and papers in addition to the lecture notes.
- Principles of Programming Langugages at DEIB-P has a list of readings from every language and has a list of papers to go through. There is no recommended textbook from the list above.
- CS 152 at Harvard uses notes for their readings but also recommends ^2, ^5, ^6 and ^3 for additional reference.
- CS 6110 at Cornell has no required textbook but recommends ^6 and ^5 for additional reading.
- A free version of ^13 is available for reading. Any related course material was not found.
- 601.426/626 at JHU use their own book created by a course instructor. The book itself is available under Creative Commons License here.
- An extensive list of resources can also be found at Programming Language Theory.
^1 - Used as the reference for
- CS 6848 at IITM along with ^5, with ^2 and ^9 for additional reference
- Principles of Programming Languages at Oxford
- CS G111 at NEU
- CSCI-UA.0480-006 and has a host of other useful links
- CS704 at UWISC and has a number of other recommendations as well
- CSCI 3155 at Berkeley but the recommended readings are from notes with a bunch of other resources linked
^2 - Please make sure to go through the errata listed when using this book. Used as the reference for
- CS 59 at Dartmouth is a syllabus only page with many other materials on the instructor's website and also uses some material from ^7
- CSCI 334 at WC
^4 - Used as the reference for
- CS 245 at BMC
- CSc 520 at UAT
- CSCI 3136 at Dal which also recommends reading ^7, ^2, ^10 and ^The Cinderella Book
^6 - Used as the reference for
^8 - Used as the reference for
^9 - Used as the reference for
^11 - Used as the reference for
- CMSC 245 at HC (Note: Syllabus page only)
^12 - Used as the reference for
- TIE-20306 at TUT along with a free Finnish textbook
- Computer Architecture: A Quantitative Approach - David A. Patterson and John L. Hennessy [1]
- Computer Organisation and Design: The Hardware/Software Interface - David A. Patterson and John L. Hennessy [2]
- Computer Organisation - V. C. Hamacher, Zvonko G. Vranesic and Safwat G. Zaky [3]
- Computer System Architecture - M. Morris Mano [4]
- Computer Organization and Architecture: Designing for Performance - William Stallings [5]
- Computer Architecture and Organisation - John. P. Hayes [6]
- Computer Systems Design and Architecture - Vincent P Heuring and Harry F Jordan
- Fundamentals of Computer Organization and Architecture - Mostafa Abd-El-Barr and Hesham El-Rewini
- Computer Systems: A Programmer’s Perspective - Randal E. Bryant and David R. O’Hallaron [7]
- Introduction to Computing Systems: From Bits and Gates to C and Beyond - Patt and Patel [8]
- Structured Computer Organization - Andrew S. Tanenbaum
- The Principles of Computer Hardware - A. Clements
- Fundamentals of Computer Architecture - M. Burrell
- Computer Architecture: Pipelined and Parallel Processor Design - Michael J. Flynn [9]
- There are plenty more books than listed and more courses than I'd care to link.
- TYCS recommends ^2 (after going through The Elements of Computing Systems by Nishan and Schocken) for an introduction to the fundamental ideas of Computer Organisation and Architecture. It is extremely well written, has plenty of depth, and is built upon in ^1 by the same authors.
^1 - Widely regarded as an authoritative reference for Computer Organisation and Architecture. It is written by Turing Award winning Computer Scientists David Patterson and John Hennessy, but also assumes the reader is already well versed with concepts of Computer Architecture. For the beginner, ^2 is widely recommended as the book to start with. Used as a reference for
^2 - Used as a reference for
- CS 312 at UMSL
- ECE 411 at UIUC
- B62006Y-01 at UCAS (Note: Syllabus page only)
- 18-447 at CMU along with ^8
- CS 3410 at Cornell
- CS 61C at Berkeley
^4 - I didn't find this book stimulating at all.
^6 - I found this book incredibly dull and difficult to understand. Good luck.
^7 - Used as the reference for
^9 - Used as the reference for
- Introduction to Algorithms - Thomas Cormen, C. Leiserson, and R. Rivest and C. Stein (CLRS) [1]
- Algorithm Design - Jon Kleinberg and Éva Tardos (KT) [2]
- Algorithms - Christos Papadimitriou, Sanjoy Dasgupta, and Umesh Vazirani (DPV) [3]
- The Algorithm Design Manual - Steven Skiena [4]
- Algorithms - Robert Sedgewick and Kevin Wayne [5]
- Introduction to Algorithms: A Creative Approach - Udi Manber [6]
- Fundamentals of Computer Algorithms - Ellis Horowitz, Sartaj Sahni and S. Rajasekaran
- An Introduction to the Analysis of Algorithms - Robert Sedgewick and Philippe Flajolet
- Design and Analysis of Algorithm - P. H. Dave and H. B. Dave
- Design Methods and Analysis of Algorithms - S. K. Basu
- Algorithms in a Nutshell: A Practical Guide - George T. Heineman and Gary Pollice
- Algorithm Design: Foundations, Analysis and Internet Examples - Michael T. Goodrich and Roberto Tamassia
- Algorithms are a vast topic and merit their own course altogether due to there being many subtopics such as randomised, parallel, approximation and so on, each having entire textbooks on them. This particular topic is meant to serve as an introduction to each subtopic by focusing on the underlying principles used in designing the algorithm. There are many MOOCs to cater to students, again linked here.
- There are, again, numerous resources on the web related to the topic and if a major course related to it hasn't made it to the list, contributions are extremely welcome.
- TYCS recommends using ^4 to study Algorithms, and also links to his freely available online videos.
- CSC2420 at UoT does not use a single source. Instead it uses a combination of ^1, ^3 and ^2.
- [5] is used as the basis for Sedgewick and Wayne's online course on Coursera with a second part.
- ^2 has a revised version of slides to accompany the textbook.
- Algorithms, Etc. by Jeff Erickson is a set of notes that covers the material necessary for his course at University of Illinois, Urbana-Champaign.
- TAOCP also serves as a useful reference for many algorithms typically studied as part of an undergraduate level course. It is quite mathematical so typically many students find it a hard read.
^1 - Typically used as an encyclopedic reference for most topic, rather than an introduction to algorithms. Used as the reference for
- CS 600 A at SIT
- 15-451/651 at CMU which also recommends ^3 but either can be used, while an older version has it's own set of notes
- CS 466/666 at UoW Canada with additional material
^2 - Used as the reference for
- CSci 256 at WC
- CPSC500 at UBC with ^3 additionally recommended along with other texts
- CS 7200 at WU with ^1 additionally used for reference
- CS 161 at Stanford where Tim has made his lecture videos available to all
- CS 7820 at Cornell taken by Jon Kleinberg
^3 - Used as the reference for
^4 - Used as the reference for
- CSE 373 at SUNY, SB which is taken by Steven Skiena
^5 - Used as the reference for
- COS226 at Princeton with a condensed version of the book available for reference
- Introduction to Automata Theory, Languages, and Computation - John E. Hopcroft and Jeffrey D. Ullman (The Cinderella Book) [1]
- Introduction to the Theory of Computation - Michael Sipser [2]
- Elements of the Theory of Computation - Harry R. Lewis & C. H. Papadimitriou
- Introduction to Formal Language and Computation - Peter Linz [3]
- Theory of Computer Science: Automata, Language and Computation - Mishra & Chandrasekharan
- A Text Book on Automata Theory - Nasir & Sirmani
- Introduction to Languages and The Theory of Computation - John Martin
- Computability, Complexity, and Languages: Fundamentals of Theoretical Computer Science - Martin Davis, Ron Sigal, Elaine J. Weyuker
- An Introduction to the Theory of Computation - Eitan Gurari
- Theory of Computation - James L. Hein
- Models of Computation and Formal Languages - R. Gregory Taylor
- Essentials of Theoretical Computer Science - F. D. Lewis
- Automata and Computability - Dexter C. Kozen
^1 - Used a reference textbook for many courses around the world. It closely matches what Jeff Ullman teaches online at Lagunita. (Duh)
^2 - Used as the reference for
- CS 3102 at UoV
- CS-251 at EPFL
- CS 3800 at NEU
- CS39 at Dartmouth
- AU's COMP 674, a graduate level course.
^3 - Used as the reference for
- Operating System Concepts - J. L. Peterson and A. Silberschatz (The Dinosaur Book) [1]
- Modern Operating Systems - Andrew S. Tanenbaum [2]
- Operating Systems, Internals and Design Principles - William Stallings [3]
- Operating Systems: Three Easy Pieces - Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau (The Black Book/The Asteroid Book/The Comet Book) [4]
- Schaum’s Outline of Operating Systems - Archer J. Harris
- The Design of the UNIX operating system - Maurice J. Bach
- Operating Systems: Principles and Practice - Thomas Anderson and Michael Dahlin. [5]
- Operating Systems: A Concept-Based Approach - D. M. Dhamdhere
- Operating Systems: A Modern Perspective - Gary J. Nutt
- Operating Systems In Depth: Design and Programming - Thomas W. Doeppner [6]
- Operating System Concepts Essentials - Silberschatz, Galvin, Gagne [7]
- Linux Kernel Development - Robert Love [8]
- For a more historical approach, this Wikipedia page provides a list of a series of breakthroughs in Operating System Design.
- TYCS recommends ^OSTEP for self study rather than the theory heavy ^Dinosaur Book or similar texts.
- A list of research papers on Udacity may also be useful, and are the recommended readings for CS 6210 at GATech.
- COSC4321.03, COSC5421.03 at UW appears to be an interesting course on Operating Systems but does not use any of the listed books for reference. It also does not appear to be a theory focused typical Operating Systems class.
- Purdue also appears to have a course designed around its Xinu Operating System.
^1 - Used as the reference for
- CS 385 at UIC
- CM's 15-410
- CS 347 at IITB where reading through MIT's xv6 Operating System is mandatory
- Drexel's CS 543 which recommends reading ^8 additionally
- CS170 at UCSB
- EDAF35 at LTH
- CS 446/646 at UNR
^2 - Used as the reference for
- CS 372 at UT Austin although certain readings are also from ^1
- INF3151 at UO which is in Norwegian
^3 - Used as the reference for
^4 - OSTEP was made as a companion for CS 537 at UWISC, which is freely available. The professors also recommend reading classic texts such as ^8 and The C Programming Language (K&R). Used as a reference for
^5 - Used as the reference for
^6 - Used as the reference for
^7 - Basically a cheaper version of ^1 recommended as the reference textbook for CU's COMS W4118.
^8
- Data Communication and Networking - B. A. Forouzan
- Computer Networks - Andrew S. Tanenbaum
- Data Communication, Computer Networks and Open Systems - Fred Halsall
- TCP/IP Protocol Suite - B. A. Forouzan
- Data and Computer Communications - William Stallings [1]
- Communication Networks, Fundamental Concepts & Key Architecture - Leon-Garcia and I. Widjaja
- Please help. I found nothing on the web with similar syllabus, which has been commented out. See source code.
^1 - Used as the reference for
- The Intel Microprocessors - Architecture Programming And Interfacing - Barry B. Brey [1]
- Microprocessor and Interfacing - D. V. Hall
- Microprocessor Architecture, Programming, and Applications with the 8085 - Ramesh Gaonkar [5]
- Microcomputer Systems - The 8086/8088 Family Architecture, Programming and Design - Liu and Gibson
- The 8051 Microcontroller and Embedded Systems - M. A. Mazidi, J. G. Mazidi and R. D. McKinlay
- Microprocessors: Principles and Applications - A. Pal
- The 8051 Microcontroller and Embedded Systems : Using Assembly and C - Muhammad Ali Mazidi
- Advanced Microprocessors and Peripherals - A. K. Ray and K. M. Bhurchandi
- Fundamentals of Microprocessors And Microcontrollers - Ram B.
Online courses about Microprocessors are rather difficult to come by.
^1 - Used as the reference for
^5 - Used as the reference for
- IITKGP's CS43003 (Note: Syllabus page only)
- Discrete Mathematics and Its Applications - Kenneth H. Rosen [1]
- Discrete Mathematics - Kevin Ferland [2]
- Mathematics for Computer Science - Eric Lehman, F. Thomson Leighton, and Albert R. Meyer [3]
- Discrete and Combinatorial Mathematics: An Applied Introduction - Ralph P. Grimaldi [4]
- Discrete Mathematics for Computer Science - Kenneth Bogart and Robert L. Drysdale [5]
- Concrete Mathematics - Ronald Graham, Donald E. Knuth and Oren Patashnik [6]
- Discrete Mathematics - Jiří Matoušek and Jaroslav Nešetřil [7]
- Mathematical Structures for Computer Science - J. L. Gersting [8]
- Discrete Mathematics - Norman L. Biggs [9]
- Discrete Mathematics - Kenneth A. Ross and Charles R. Wright [10]
- Discrete Mathematics - Seymour Lipschutz and Mar Lars Lipson [11]
- Discrete Mathematics: Mathematical Reasoning and Proof with Puzzles, Patterns and Games - Douglas E. Ensley and J. Winston Crawley [12]
- Elements of Discrete Mathematics: A Computer Oriented Approach - C. L. Liu and D. P. Mohapatra
- Discrete Mathematical Structures with Applications, to Computer Science - J. P. Tremblay and R. Manohar
- Discrete Mathematics for Computer Scientists & Mathematics - Joe L. Mott, A. Kandel, and T. P. Baker
- Graph Theory with applications to Engineering & Computer Science - N. Deo
- Discrete Mathematical Structures for Computer Science - B. Kolman and R. C. Busby
- Discrete Mathematics with Applications - Thomas Koshy
- Discrete Mathematics - Nicodemi O.
- Discrete Mathematics - R. Krishna Kumar
- Discrete Mathematics - Johnsonbaugh
- An Introduction to Discrete Mathematics for Business & Computing - John Dwyer
- Discrete Mathematics With Applications - Susanna S. Epp
- The Art of Computer Programming - Donald E. Knuth
- Practice Problems in Discrete Mathematics - Bojana Obrenic
- Hand Book of Discrete and Combinatorial Mathematics - Kenneth H. Rosen and John G. Michaels
- Discrete Mathematics by Example - Andrew Simpson
- Discrete Mathematics with Graph Theory and Combinatorics - T. Veerarajan
- Stanford's CS103 may serve as an introduction to those who are unfamiliar with the concepts.
- Yale's CPSC 202 uses a document of notes on Discrete Math as the primary reading. Additional reading can be done from ^2 or ^1.
- CS20 at Harvard uses notes from MIT's 6.042.
- Cornell also hosts a useful set of notes on Discrete Structures.
- UT Austin's CS 311 appears to have their own set of lecture notes linked on the course page.
^1 - Used as the reference for
- CS381 at ODU
- CSE 191 at UaB with ^11 additionally recommended
- 6301 at UCL (Note: Syllabus page only)
- 14:332:312 at Rutgers
- CS 441 at PU
- CS 70 at Berkeley although notes are recommended for primary reading
- CS 207 at IITB along with ^9
^3 - Used as the reference for
- CS2102 at UoV and has generously been made available online under the Creative Commons License
- CS1010 at IITH although it uses slightly older notes instead with an additional guide on How to write Mathematics by Martin Erickson
- CS 30 at Dartmouth with ^1 recommended for additional reading
^4 - Used as the reference for
- Discrete Structures and Combinatorics at BGU along with some weird Israeli book?
^5 - Used as the reference for
- CPS 102 at Duke with ^1, ^6 and ^7 also recommended
^8 - Used as the reference for
^9 - Used as the reference for
- Discrete Math at Cambridge with additional books listed
^10 - Used as the reference for
- Discrete Mathematics at Oxford along with other recommendations like ^4
^12 - Used as the reference for
- Computer Graphics: Principles and Practice - John F. Hughes, Andries van Dam, Morgan McGuire, David F. Sklar, James D. Foley, Steven K. Feiner, Kurt Akeley [1]
- Fundamentals of Computer Graphics - Pete Shirley and Steve Marschner with Michael Ashikhmin, Michael Gleicher, Naty Hoffman, Garrett Johnson, Tamara Munzner, Erik Reinhard, Kelvin Sung, William B. Thompson, Peter Willemsen, and Bryan Wyvill [2]
- Computer Graphics, C Version - Donald Hearn and M. Pauline Baker [3]
- Computer Graphics using Open GL - Francis S. Hill
- Multimedia Systems - R. Steinmetz and K. Nahrstedt
- Fundamentals of Multimedia - Ze-Nian Li and M. S. Drew
- Mathematical Elements for Computer Graphics - David F. Rogers and James Alan Adams
- Physically Based Rendering: From Theory to Implementation - Matt Pharr and Greg Humphreys [4]
- Procedural Elements for Computer Graphics - David Rogers
- Computer Graphics for Java Programmers - L. Ammeraal and K. Zhang
- Computer Graphics: A Survey of Current Techniques and Applications - John Lewell
- Computer Graphics: Theory Into Practice - Jeffrey J. McConnell
- Computer Graphics: Techniques and Applications - R. D. Parslow, R. W. Prowse, Richard Elliot Green
- Computer Graphics and Virtual Environments: From Realism to Real-time - M. Slater, A. Steed, Y. Chrysantho
- Interactive Environments with Open-Source Software - Wolfgang Höhl
- Foundations of 3D Computer Graphics - Steven J. Gortler [5]
- Interactive Computer Graphics, A Top-Down Approach with WebGL - Edward Angel and Dave Schreiner [6]
- ^1 and ^2 are no doubt standard textbooks in the field, but there is simply too vast an ocean of textbooks to categorise.
- There is a reference book for OpenGL programming one may find useful called the Red Book.
- Many courses have further resources like these linked on their course or info pages.
^1 - Used as the reference for
- CSCI 1230 at Brown
- CS4620/CS4621 at Cornell along with ^5
- CS 6360 at IITM along with ^3
- Introduction to Computer Graphics at UIC
- CS 488 at UIC which seems to be an earlier version of the course above
^2 - Used as the reference for
- CMU 15-462/662 along with ^1 and ^4
- Computer Graphics at Oxford with ^1 and others additionally recommended
- CS248 at Stanford with ^1 also recommended
^5 - Used as the reference for
- CS 175 at Harvard taught by Steven Gortler himself
^6 - Used as the reference for
- CS 465 at Bilkent
- EDAF80 at LTH with The Graphics Codex linked for additional reading
- CS 537 at Drexel
- CS 4102 at St. Andrews (only a list of textbooks)
- Elements of Information Theory - T. M. Cover and J. A. Thomas [1]
- Information Theory, Inference and Learning Algorithms - David J. C. Mackay [2]
- Information Theory Coding and Cryptography - R. Bose
- Coding and Information Theory - S. Roman
- Introduction to Data Compression - Khalid Sayood
- The Theory of Information and Coding - R. J. McEliece
- The Theory of Error Correcting Codes - F. J. MacWilliams and N. J. A. Sloane
- Entropy and Information Theory - Robert M. Gray [3]
- Information Theory and Reliable Communication - R. G. Gallagher
- Information Theory - Robert B. Ash
- Wikipedia has an extensive reference list with many classic texts and books linked.
- A Workshop on Complexity Information Theory in Theoretical Computer Science and Discrete Mathematics at Rutgers has an extensive reading list should one be ambitious enough.
- CS 229r at Harvard has links to notes from other courses and multiple papers on the topic.
- Most of the courses strongly recommend reading through Claude Shannon's A Mathematical Theory of Communication paper from 1948. It serves as the basis for the branch of Information Theory and Coding related research.
- Most/All of the courses have relevant additional resources which are very useful.
^1 - Used as the reference for
- 15-859 at CMU with many other classic papers recommended for reading
- CSE 533 at UoW with a list of papers
- EE5581 at UMN
- CSCI1850 at Brown with additional readings from Information Theory, Inference, and Learning Algorithms which is available free of cost
- TTIC 31200/CMSC 37220 at UC
- 10-704 at CMU along with ^2, and has elements of Machine Learning applied to it
- CS85/CS185 at Dartmouth with a list of papers for primary reading
- COS 597D at Princeton which also recommends several papers
- COMPSCI 650 at UMass with ^2 recommended additionally
- 582650 at UoH
- CO 739-2 at UoW Canada
- EECS 428 at NWU (Note: Syllabus page only)
- ECE 563 at UIUC (Note: Syllabus page only)
^2 - Used as a reference for
- COMP 7404 at DU
- CSC 310 at UoT with ^3 recommended for rigorous mathematical analysis
- CS 616 at WU (Note: Syllabus page only)
- Compilers: Principles, Techniques, and Tools - A. V. Aho, Ravi Sethi & Jeffrey D. Ullman (The Dragon Book) [1]
- Modern Compiler Implementation in ML - Andrew W. Appel (The Tiger Book)[2]
- Engineering a Compiler - Keith D. Cooper and Linda Torczon (CT) [3]
- Compiler Construction: Theory and Practice - W. A. Barrett, John D. Couch, C. Couch
- Compiler Construction: Principles and Practice - Kenneth C. Louden [4]
- Modern Compiler Design - Dick Grune, Kees van Reeuwijk, Henri E. Bal, Ceriel J.H. Jacobs, Koen Langendoen
- Compiler Design: Theory, Tools, and Examples - Seth Bergmann [5]
- Compiler Design in C - Allen I. Holub [6]
- Optimizing Compilers for Modern Architectures: A Dependence-based Approach - Randy Allen and Ken Kennedy [7]
- Understanding and Writing Compilers: A Do It Yourself Guide - Richard Bornat [8]
- Advanced Compiler Design and Implementation - Steven Muchnick [9]
- Crafting a Compiler - Charles N. Fischer, Richard Joseph LeBlanc, and Ronald Kaplan Cytron [10]
- A Compiler Generator - William Marshall McKeeman, James J. Horning, David B. Wortman
- The Compiler Design Handbook: Optimizations and Machine Code Generation - Y. N. Srikant and Priti Shankar
- Compilers and Compiler Generators: An Introduction with C++ - Patrick D. Terry
- Compiler Construction - Niklaus Wirth
- A Rechargeable C Compiler: Design and Implementation - Christopher W. Fraser, David Hanson, David Hansen
- Compiling with continuations- Andrew W. Appel
- Building an Optimizing compiler - Robert Morgan
- Elements of Compiler Design - Alexander Meduna
- Object-oriented Compiler Construction - Jim Holmes
- Theory and Practice of Compiler Writing - J.P. Tremblay and P.G. Sorenson [11]
- Parsing Techniques: A Practical Guide - J.P. Tremblay and P.G. Sorenson
- Compiler Design also has much historical background which can be better read through by following Wikipedia's Compiler Publication List and also Wikipedia's History of compiler construction, which has further reading described at the end.
- GitHub also has a list of Awesome Compiler resources and even more additional resources.
- Allen Holub made his ^book available online, free of cost, since it is now out of print. Seth Bergmann also generously provides ^his online as does ^Richard Bornat.
- There is also a list of compiler books on the GCC wiki. Mozilla also hosts a set of resources on JS Compilers. Numerous additional resources are also scattered across the web on various blogs.
^1 - This is regarded as the definitive reference book on compilers according to Wikipedia and has multiple editions, of which The Purple Dragon Book or the 2nd edition is more referred to. The corresponding edition for a course should be verified from the course page. Used as the reference for
- CS143 at Stanford
- CS4120 at Cornell
- ECS 142 at UC Davis has many more books listed, but also recommends ^The Tiger Book in Java, ^3, ^9
- CPSC 605-600 at TAMU along with ^7
- CS 5461 at UoM Duluth
- Compiler Design at NCTU with more useful resources listed
- COP5621 at FSU along with The Java™ Virtual Machine Specification, SE 8 edition
- CS 2210 at UoP
- CS 3300 at IITM along with ^The Tiger Book in Java
- CS335 at IITK
- CS 352 at IITR along with ^3, ^4 and ^11 (Note: Syllabus page only)
^2 - The author has an accompanying website for his books (available in Java and C as well). Used as reference for
- CS421 at UIUC
- CS5470 at UoU but in Java (Note: Syllabus page only)
- 15-411 at CMU
- CS 432F & CS 728 at IITD with ^1 additionally recommended
^3 - Used as a reference for
- CS 321 at PDXSU
- CS 8803 at GATech which appears to have an online course
- CS712/CS812 at UNH
^4 - Used as a reference for
- COSC 4353 at TAMUCC with books such as Unix Programming Tools :lex & yacc additionally recommended
- CS 780 at WSU with additional references listed
^10 - Used as a reference for
- Computer Networking: A Top-Down Approach - James Kurose and Keith Ross [1]
- Computer Networks – A System Approach - Larry L. Peterson and Bruce S. Davie [2]
- Computer Networks - Andrew S. Tanenbaum [3]
- TCP/IP Protocol Suite - Behrouz A. Forouzan
- Data and Computer Communication - William Stallings [4]
- Data Communication, Computer Networks and Open Systems - F. Halsall
- Data Communications and Networking - Behrouz A. Forouzan [5]
- Internetworking with TCP/IP, Volume 1 - Douglas Comer
- TCP/IP Illustrated, Volume 1: The Protocols - W. Richard Stevens [6]
- Unix Network Programming, Volume 1: The Sockets Networking API - W. Richard Stevens [7]
- TYCS recommends ^ for self study and also links to freely available online exercises/tutorials.
- GATech's CS 6250 has a list of useful papers on Udacity. There are also many more amazing resources on the web.
^1 - Used as the reference for
- CS60 at Dartmouth where texts on Shell Scripting like A Practical Guide to Linux Commands, Editors, and Shell Programming by Mark G. Sobell are also recommended
- CS 356 at UT Austin
- COS 461 at Princeton along with ^2
- CS244A at Stanford
^2 - Used as the reference for
- 15-441 at CMU
- Computer Networks at Oxford along with ^3
- CS 640 at UWISC
^4 - Used as the reference for
^5 - It is regarded as the standard textbook in the field according to Wikipedia.
^6, ^7 - Widely recommended in many courses listed above for additional reading, especially those at Princeton, Stanford and UWISC.
- Software Engineering: A Practitioner’s Approach - Roger S. Pressman [1]
- Software Engineering - Ian Sommerville [2]
- An Integrated Approach to Software Engineering - Pankaj Jalote [3]
- Software Engineering Fundamentals - A. Behferooz and F. J. Hudson
- Fundamentals of Software Engineering - Rajib Mall
- Software Engineering - Gaurav Gupta and Deepika Gupta
- Encyclopedia of Software Engineering - Philip A. LaPlante
- Software Engineering 1st Edition - Udit Agarwal
- Algebraic Methodology and Software Technology - Grigore Rosu and Jose Meseguer
- Software Design Methodology: From Principles to Architectural Styles - Hong Zhu
- Object-oriented Software Engineering : using UML, patterns, and Java - Bernd Bruegge and Allen Dutoit [4]
- The New Software Engineering - Sue A. Conger [5]
- The Pragmatic Programmer - Dave Thomas and Andy Hunt [6]
- Software Engineering - Ivan Marsic [7]
- Design Patterns: Elements of Reusable Object-Oriented Software- E. Gamma, R. Helm, R. Johnson, and J. Vlissides [8]
- Object-Oriented Software Engineering: Practical Software Development using UML and Java - Timothy C. Lethbridge and Robert Laganière [9]
- Fundamentals of Software Engineering - Carlo Ghezzi [10]
- Wikipedia has a list of notable publications in Software Engineering.
- CS32 at Brown recommends Effective Java by Joshua Bloch for some reason.
- EE 360F at UT Austin has a list of papers and sections from multiple books as necessary readings for the course.
^1 - Used as the reference for
- 15-413 at CMU
- CS 501 at Cornell along with other classic books like The Mythical Man Month by Frederick Brooks
^2 - Used as the reference for
- Introduction to Software Engineering at PSU (Note: Syllabus page only)
^3 - Used as the reference for
^4 - Used as the reference for
- CS223 at Warwick (Note: Syllabus and lecture pdf only)
^5 - Used as the reference for
^6 - Used as the reference for
^7 - A free book written by the instructor of ECE 14:332:452 at Rutgers.
^8 - Used as the reference for
- CSE870 at MSU along with many other articles from literature
- Foundations of Software Engineering at BGU along with many other textbooks
^9 - Used as the reference for
- SEG 2100 at UoO which cannot be accessed. Instead the author provides supporting materials and other links here.
^10 - Used as the reference for
- Distributed Systems: Principles and Paradigms - Andrew S. Tanenbaum and Maaten Van Steen [1]
- Distributed Systems : Concepts and Design - George Coulouris, Jean Dollimore, Tim Kindberg and Gordon Blair [2]
- Distributed Computing: Fundamentals, Simulations, and Advanced Topics - Hagit Attiya and Jennifer Welch [3]
- Distributed Computing: Principles, Algorithms, and Systems - Ajay D. Kshemkalyani and Mukesh Singhal [4]
- Elements of Distributed Computing - Vijay K. Garg
- Distributed Algorithms - Nancy Lynch
- Distributed Systems - Jie Wu
- Distributed Systems - Sape Mullender
- Guide to Reliable Distributed Systems: Building High-Assurance Applications and Cloud-Hosted Services - Kenneth P. Birman [5]
- TYCS recommends ^1 for self study and also links to a set of useful papers.
- CS244b at Stanford appears to have its own set of lecture notes and readings from various papers as does CS 417 at Rutgers.
- CS 739 at UWISC also has a list of papers linked for reading.
- CS 4513 at WPI takes a hands-on approach to the class and has a variety of papers to read as part of a Graduate Level course. Similarly, CS6963 at UoU is also a graduate level course.
- CS4790 at UMSL appears to be an interesting course focused on practical examples in C, but appears to have a different syllabus than described at my college.
^1 - Used as the reference for
- CPSC 416 at UBC which uses the Go programming language extensively for projects and readings
- CSCI 339 at WC along with ^2
- Distributed Systems at CU along with optional resources
- CS 455/555 at BSU
- COS-418 at Princeton with several other resources linked
- CMPSCI 677 at UMass
- CAS CS451/651 at BU but uses papers for primary readings
- CS4103 at St. Andrews along with ^2
- 15-440/640 at CMU which also recommends reading through the lecture notes
^2 - The book has a companion website as well. Used as the reference for
- CSCI-1380 at Brown
- CS455 at CSU along with ^1 and a slew of other textbooks and papers listed on the syllabus page
- CS556 at UOC Greece along with ^1 and a number of other books as well
- CS6450 at UoU along with ^1 and ^5
- CS 425:ECE 428 at UIUC with many more useful resources linked
^3 - Used as the reference for
- CS 425/525 at UoW along with ^2
^4 - Used as the reference for
- CS 553 at UIC along with a host of papers and other readings
Teach Yourself CS
List of Notable Publications in Software Engineering - Wikipedia
List of Important Publications in Computer Science
Is there a list of the canonical introductory textbooks covering the major branches of computer science? - /r/COMPSCI
What are the canon books in Computer Science? - /r/COMPSCI
What Books Should Everyone Read? - Theoretical Computer Science Stack Exchange
What papers should everyone read? - Theoretical Computer Science Stack Exchange
List of Important Publications in Computer Science
Data Structures - Further Reading
Database - Further Reading
Programming Language - Further Reading
Microarchitecture - Further Reading
Algorithms - Further Reading
Theory of Computation - Further Reading
Automata Theory - Further Reading
Operating System - Further Reading
Discrete Mathematics - Further Reading
Information Theory - References
Compiler - References
History of Compiler Construction - Wikipedia
List of Compiler Books - GCC Wiki
About compilers and interpreters - Developers Club
Compiler Recommendations - dealloc // The Belkadan Software Blog
Best books on compiler design/implementation? - Ars Technica Open Forum
Computer Network - Further Reading
Software Engineering - Further Reading
Distributed Computing - References
Best Reference Books - San Foundry
-
Data Structures and Algorithms
PLDS210 - University of Auckland
15-111 - Carnegie Mellon University
CS 61BL - Berkeley University
Data Structures and Algorithms (Level 1/C) - University of Birmingham
CS 302 - University of Nevada, Reno
CS 226 - Princeton University
CSE 2010 - Florida Institute of Technology
600.226 - John Hopkins University
CS 315 - University of Texas at Austin
CS 206 - Bryn Mawr College
CS 213(M) - Indian Institute of Technology, Bombay (taken by Abhiram Ranade)
CS 240 - Binghamton University
CS 598 JGE - University of Illinois, Urbana-Champaign appears to be a graduate level course and hence has not been linked in the original section -
Database Management Systems
Databases - Stanford Lagunita (taken by Jennifer Widom)
CS 186 - University of California, Berkeley
CS 4320/4321 - Cornell University
COMS 4111 - Columbia University
Introductory Databases - University of Birmingham
CMPT 354-D1 - Simon Fraser University
CS333 - University of San Francisco
CMPSC 431W - Pennsylvania State University
EECS 339 - Northwestern University (Note: Syllabus page only)
CS/SE 4347 - University of Texas at Dallas
CS662 - University of Virginia
ECS 165A - University of California, Davis
CS145 - Stanford University
CS x265 - Vanderbilt University
CS 23500/33550 - University of Chicago (Note: Syllabus page only)
15-445/645 - Carnegie Mellon University
CS 348 - University of Waterloo -
Principles of Programming Languages
601.426/626 - John Hopkins University
CSE526 - State University of New York at Stony Brook
Principles of Programming Langugages - Politecnico di Milano, Dipartimento di Elettronica, Informazione e Bioingegneria
CS 152 - Harvard University
CS 6110 - Cornell University
CS 6848 - Indian Institute of Technology, Madras
Principles of Programming Languages - Oxford University
CS G111 - Northeastern University
CSCI-UA.0480-006 - New York University
CS704 - University of Wisconsin-Madison
CSCI 3155 - University of Colorado, Boulder
CS 59 - Dartmouth University
CSCI 334 - Williams College
CS 245 - Bryn Mawr College
CSc 520 - University at Arizona
CSCI 3136 - Dalhouse University
COMP 411 - Rice University
CSC 272 - Adelphi University
CS 3MI3 - MmMaster University
15-312 - Carnegie Mellon University
CMSC 245 - Haverford College (Note: Syllabus page only)
TIE-20306 - Tampere University of Technology -
Computer Organisation and Architecture
CS 312 - University of Missouri-St. Louis
CS146 - Harvard University
ECE 411 - University of Illinois, Urban-Champaign
B62006Y-01 - University of Chinese Academy of Sciences (Note: Syllabus page only)
18-447 - Carnegie Mellon University
CS 3410 - Cornell University
CS 61C - University of California, Berkeley
CS 2505 - Virginia Tech
15-213/18-213 - Carnegie Mellon University
CS107 - Stanford University
EE382 - Stanford University -
Algorithm Design and Analysis
CS 600 A - Stevens Institute of Technology
CSC2420 - University of Toronto
15-451/651 - Carnegie Mellon University
15-451/651 - Carnegie Mellon University (older Fall 2009 version)
CS 466/666 - University of Waterloo
CSci 256 - Williams College
CPSC500 - University of British Columbia
CS 7200 - Wright State University
CS 161 - Stanford University
CS 7820 - Cornell University (taken by Jon Kleinberg)
CS 157 - Brown University
CSE 373 - State University of New York (taken by Steven Skiena)
COS226 - Princeton University
Algorithms Part I and Part II taught by Sedgewick and Wayne on Coursera -
Theory of Computation
Automata Theory - Stanford Lagunita (taken by Jefferey D. Ullman)
CSC 4170-50 - University of Pennsylvania
CS3102 - University of Virginia
CS-251 - École Polytechnique Fédérale de Lausanne EPFL
CS 3800 - Northeastern University
CS39 - Dartmouth University
COMP 674 - Athabasca University -
Operating Systems
CS 6210 - Georgia Tech
COSC4321.03, COSC5421.03 - University of Waterloo
CS 318/418/618 - John Hopkins University
CS 385 - University of Illinois, Chicago
CS 347 - Indian Institute of Technology, Bombay
CS 543 - Drexel University
CS170 - University of California, Santa Barbara
EDAF35 - Lund University
CS 446/646 - University of Nevada, Reno
TOM-2.1-CS - University of Twente
CS 372 - University of Texas at Austin
INF3151 - University of Oslo which is in Norwegian
CS3013 - Worchester Polytechnic Institute
CS-537 - University of Wisconsin-Madison
CS140 - Stanford University
CS422/522 - Yale University
CS 140 - Harvard University
COMS W4118 - Columbia University
CS 6560 - California State University, East Bay -
Data Communications
-
Microprocessors and Microcontrollers
Fundamentals of Microprocessors - University of Central Florida
CS758: Building Microprocessors - University of Wisconsin -
Discrete Mathematics
CS103 - Stanford University
CS20 - Harvard University
CS 311 - University of Texas at Austin
CS381 - Old Dominion University
CSE 191 - University at Buffalo, New York
6301 - University College London
14:332:312 - Rutgers University
CS 441 - Pittsburgh University
CS 70 - University of California, Berkeley
CS 207 - Indian Institute of Technology, Bombay
Discrete Structures and Combinatorics - Ben-Gurion University of the Negev
CPS 102 - Duke University
MAT 385 - North Kansas University
Discrete Math - Cambridge University
Discrete Mathematics - Oxford University
CS2102 - University of Virginia
MIT 6.042 - Mathematics for Computer Science
CS1010 - Indian Institute of Technology, Hyderabad
CS 30 - Dartmouth University
CSCI 2824 - University of Colorado, Boulder -
Computer Graphics
CSCI 1230 - Brown University
CS4620/CS4621 - Cornell
CS 6360 - Inbdian Institute of Technology, Madras
Introduction to Computer Graphics - University of Illinois, Chicago
CS 488 - University of Illinois, Chicago
CMU 15-462/662 - Carnegie Mellon University
Computer Graphics - Oxford University
CS248 - Stanford University
CS 175 - Harvard University
CS 465 - Bilkent University
EDAF80 - Lund University
CS 537 - Drexel University
CS 4102 - University of St. Andrews
CSCI 2240: Interactive Computer Graphics - Brown University -
Information Theory and Coding
CS 229r - Harvard University
15-859 - Carnegie Mellon University
CSE 533 - University of Washington
EE5581 - University of Minnesota
CSCI1850 - Brown University
TTIC 31200/CMSC 37220 - University of Chicago
10-704 - Carnegie Mellon University
CS85/CS185 - Dartmouth University
COS 597D - Princeton University
COMPSCI 650 - University of Massachussets, Amherst
582650 - University of Helsinki
CO 739-2 - University of Waterloo
EECS 428 - Northwestern University
ECE 563 - University of Illinois, Urbana-Champaign
COMP 7404 - University of Denver
CSC 310 - University of Toronto
CS 616 - Westminster University
CS 783 - Cornell University which has not been linked in relevant section due to being a graduate-level course -
Compiler Design
CS143 - Stanford University
CS4120 - Cornell University
ECS 142 - University of California, Davis
CPSC 605-600 - Parasol Lab, Texas A&M University
CS 5461 - University of Minnesota Duluth
Compiler Design - National Chiao Tung University
COP5621 - Florida State University
CS 2210 - University of Pittsburgh
CS 3300 - Indian Institute of Technology, Madras
CS335 - Indian Institute of Technology, Kanpur
CS 352 - Indian Institute of Technology, Roorkee (Note: Syllabus page only)
CS421 - University of Illinois, Urbana-Champaign
CS5470 - University of Utah
15-411 - Carnegie Mellon University
CS 432F & CS 728 - Indian Institute of Technology, Delhi
COSC 4353 - Texas A&M University-Corpus Christi
CS 780 - Wright State University
CS 321 - Portland State University
CS 8803 - Georgia Institute of Technology
CS712/CS812 - University of New Hampshire
CPSC 466 - Slippery Rock University of Pennsylvania
CS 8803 - Georgia Institute of Technology online course on Udacity -
Computer Networks
CS 6250 - Georgia Institute of Technology
CS60 - Dartmouth University
CS 356 - University of Texas at Austin
COS 461 - Princeton University
CS244A - Stanford University
15-441 - Carnegie Mellon University
Computer Networks - Oxford University
CS 640 - University of Wisconsin-Madison
CS 408 - Sabancı Üniversitesi
CS 527 - University of British Columbia is a PhD level course judging by appearance, so it has not been linked in the relevant section. -
Software Engineering
CS32 - Brown University
EE 360F - University of Texas at Austin
15-413 - Carnegie Mellon University
CS 501 - Cornell University
Introduction to Software Engineering - Pennsylvania State University
CS 320 - University of Massachusetts, Amherst
CS223 - University of Warwick
CS302 - Saylor Academy
CSE 403 - University of Washington
ECE 14:332:452 - Rutgers University
CSE870 - Michigan State University
Foundations of Software Engineering - Ben-Gurion University of the Negev
CSE2102 - University of Connecticut -
Distributed Systems
CS244b - Stanford University
CS 417 - Rutgers University
CS 739 - University of Wisconsin-Madison
CS 4513 - Worchester Polytechnic Institute
CS6963 - University of Utah
CS4790 - University of Saint Mary of the Lake
CPSC 416 - University of British Columbia
CSCI 339 - Williams College
Distributed Systems - Columbia University
CS 455/555 - Boise State University
COS-418 - Princeton University
CMPSCI 677 - University of Massachussets, Amhersts
CAS CS451/651 - Boston University
CS4103 - University of St. Andrews
15-440/640 - Carnegie Mellon University
CSCI-1380 - Brown University
CS455 - Colorado State University
CS556 - University of Crete, Greece
CS6450 - University of Utah
CS 425:ECE 428 - University of Illinois, Urbana–Champaign
CS 425/525 - University of Washington
CS 553 - University of Illinois, Chicago
Data Structures and Algorithm Analysis by Clifford A. Shaffer
Foundations of Computer Science by Alfred V. Aho & Jeffrey D. Ullman
Fundamental Data Structures by Wikipedia Authors
Intermediate and Advanced Programming - An Online Textbook for CMU 15-111 by Ananda Gunawardena
Hug61B - Book Companion to CS 61B by Josh Hug
CS 315: Algorithms & Data Structures: Lecture Notes
Animations to Assist Learning Some Key Computer Science Topics
Algorithms and Data Structures Animations for the Liang Java, C++, and Python Books
Data Structure Visualisations
CS 186 Video Lectures - University Berkeley
How to Design Programs by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi available under Creative Commons License
Programming Language Theory
Errata for Concepts of Programming Languages by John Mitchell
Great Works in Programming Languages
Principles of Programming Languages by Mike Grant, Zachary Palmer and Scott Smith available under Creative Commons License
The Algorithm Design Manual by Steven Skiena (for online reading)
Lecture Slides for Kleinberg-Tardos
Algorithms, Etc. by Jeff Erickson
Algorithm Notes for CS 466 at Waterloo
Algorithms by Robert Sedgewick and Kevin Wayne (condensed version for reference)
CS Readings
Xv6, a simple Unix-like teaching operating system - PDOS-MIT
Xinu Operating System
Operating Systems: Three Easy Pieces by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
Advanced Operating Systems Readings
Microprocessors and their Architecture
Links to Intel documentation
Microprocessor Design - Wikibooks
Discrete Mathematics - Wikibooks
Mathematics for Computer Science by Eric Lehman, F. Thomson Leighton, and Albert R. Meyer
Notes on Discrete Structures - Cornell University
Notes - MIT 6.042 Mathematics for Computer Science
A Course on Discrete Mathematics - Yale University
Mathematics for Computer Science (2012)
How to Write Mathematics by Martin Erickson
Red Book by John Kessenich, Graham Sellers and Dave Shreiner
The Graphics Codex - Web Edition
Information Theory, Inference, and Learning Algorithms by David J. C. Mackay
2011 Workshop on Complexity Information Theory in Theoretical Computer Science and Discrete Mathematics
A Mathematical Theory of Communication by Claude Shannon (1948)
Awesome Compilers - GitHub
Compiler Resources - @berkerpeksag on GitHub
Compiler Design in C by Allen I. Holub
Compiler Construction by Niklaus Wirth
Compiler Design: Theory, Tools, and Examples by Seth Bergmann
Understanding and Writing Compilers by Richard Bornat
Supplementary Material for Modern Compiler Implementation by Andrew W. Appel
Compilers - Rip Lang
Javascript Compiler References - Mozilla Wiki
Introduction to Software Engineering - Wikibooks
Software Engineering by Ivan Marsic
Supplementary Material for Object-Oriented Software Engineering by Lethbridge and Laganière
Software Engineering Notes from CS 440 at UIC
Papers - Distributed Systems Reading Group
Compansion website for Distributed Systems: Concepts and Design by George Coulouris, Jean Dollimore, Tim Kindberg and Gordon Blair
Go programming language
ACM Classic Books Series
List of Useful Tutorials
Beej's Guides