Skip to content

Latest commit

 

History

History
1338 lines (1009 loc) · 98.2 KB

Curriculum.md

File metadata and controls

1338 lines (1009 loc) · 98.2 KB

CS Curriculum Textbooks and References

Table of Contents

Data Structures and Algorithms

Standard Textbooks

  1. Introduction to Data Structures with Applications - Jean P. Tremblay and Paul G. Sorenson
  2. Data Structures and Algorithms - Alfred V. Aho, John E. Hopcroft and Jeffrey D. Ullman
  3. Data Abstraction and Problem Solving with C++: Walls and Mirrors - Frank M. Carrano [1]

Alternative/Supplementary

  1. Data Structures and Algorithm Analysis in C - Mark Allen Weiss
  2. Algorithms in Java - Robert Sedgewick [2]
  3. Data Structures and Algorithms in Java - M. Goodrich, R. Tamassia, and M. Goldwasser [3]
  4. Data Structures and Algorithms Analysis in Java - Mark Allen Weiss [4]
  5. Data Structures: Abstraction and Design Using Java - Elliot B. Koffman and Paul A. T. Wolfgang [5]
  6. An Introduction to Programming through C++ - Abhiram G. Ranade [6]
  7. ADTs, Data Structures and Problem Solving - Larry Nyhoff [7]
  8. Data Structures, Algorithms and Applications in C++ - Sartaj Sahani
  9. Data Structures and Algorithms: Concepts, Techniques and Applications - G. A. V. Pai
  10. Data Structures - D. Samanta
  11. Data Structures - Seymour Lipschutz
  12. Fundamentals of Data Structures in C - Ellis Horowitz
  13. How to Solve it - Computer - R. G. Dromey
  14. Data Structures Through C In Depth - Srivastava
  15. Handbook of Algorithms and Data Structures - in Pascal and C - G. H. Gonnet and R. Baeza-Yates
  16. Fundamentals of Data Structures in Pascal - Ellis Horowitz and Sartaj Sahni
  17. C++ Plus Data Structures - Nell Dale
  18. Data Structures And Algorithms Made Easy - Narasimha Karumanchi

Notes

  • 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

^3 - Used as a reference for

^4 - Used as a reference for

^5 - Used as a reference for

^6 - Used as a reference for

^7 - Used as a reference for

↑ Back to Table of Contents

Database Management Systems

Standard Textbooks

  1. Database Management Systems - Johannes Gehrke and Raghu Ramakrishnan [1]
  2. Database System Concepts - Abraham Silberschatz, Henry F. Korth & S. Sudarshan [2]
  3. Readings in Database Systems - Joseph M. Hellerstein and Michael Stonebraker (The (Databases) Red Book) [3]

Alternative/Supplementary

  1. Principles of Database Systems - Jeffrey D. Ullman
  2. An Introduction to Database System - B. Desai
  3. An Introduction to Database Systems - Christopher J. Date
  4. Fundamentals of Database Systems - R. Elmasri, S. Navathe, S. B. Navathe, R. Sunderraman
  5. Database Systems: The Complete Book - Hector Garcia-Molina, Jeffrey D. Ullman and Jennifer Widom [4]
  6. Transaction Processing: Concepts and Techniques - Jim Gray and Andreas Reuter
  7. A First Course in Database Systems - Jeffrey Ullman and Jennifer Widom [5]
  8. Database Systems - Carolyn E. Begg and Thomas M. Connolly
  9. Database Concepts - David M. Kroenke and David J. Auer
  10. Physical Database Design: the database professional's guide to exploitingindexes, views, storage, and more - T. Teorey, S. Lightstone and T. Nadeau
  11. Database Modeling & Design: Logical Design - T. Teorey, S. Lightstone and T. Nadeau

Notes

  • 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

^2 - Used as the reference for

^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

↑ Back to Table of Contents

Principles of Programming Languages

Standard Textbooks

  1. Essentials of Programming Languages - Daniel P. Friedman, Mitchell Wand and Christopher T. Haynes (EOPL) [1]
  2. Concepts in Programming Languages - John C. Mitchell [2]
  3. Programming Languages: Application and Interpretation - S. Krishnamurthi (PLAI) [3]

Alternative/Supplementary

  1. Programming Language Pragmatics - Michael L. Scott [4]
  2. Types and Programming Languages - Benjamin C. Pierce (TAPL) [5]
  3. A Formal Semantics of Programming Languages: An Introduction - Glynn Winskel [6]
  4. Structure and Interpretation of Computer Programs - Harold Abelson, Gerald Jay Sussman and Julie Sussman (SICP) [7]
  5. Concepts of Programming Languages - Robert W. Sebesta [8]
  6. Practical Foundations of Programming Languages - Robert Harper [9]
  7. Programming Languages: Design and Implementation - T. W. Prat & M. V. Zelkowitz [10]
  8. Programming Languages: Principles & Practices - Kenneth C. Louden [11]
  9. Programming Languages: Principles and Paradigms - Maurizio Gabbrielli and Simone Martini [12]
  10. Programming Languages – Concepts & Constructs - Ravi Sethi
  11. Foundations for Programming Languages - John C. Mitchell
  12. The Lambda Calculus: Its Syntax and Semantics - H. P. Barendregt
  13. Principles of Programming Languages - Chopra Rajiv
  14. Principles of Programming Languages - Dowek
  15. Design Concepts in Programming Languages - Franklyn Turbak and David Gifford
  16. Concepts, Techniques and Models of Computer Programming - Peter Van Roy and Seif Haridi
  17. Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp - Peter Norvig
  18. Theories of Programming Languages - John C. Reynolds [13]
  19. Type Theory and Functional Programming - Simon Thompson

Notes

^1 - Used as the reference for

^2 - Please make sure to go through the errata listed when using this book. Used as the reference for

^4 - Used as the reference for

^6 - Used as the reference for

^8 - Used as the reference for

^9 - Used as the reference for

^11 - Used as the reference for

^12 - Used as the reference for

↑ Back to Table of Contents

Computer Organisation and Architecture

Standard Textbooks

  1. Computer Architecture: A Quantitative Approach - David A. Patterson and John L. Hennessy [1]
  2. Computer Organisation and Design: The Hardware/Software Interface - David A. Patterson and John L. Hennessy [2]
  3. Computer Organisation - V. C. Hamacher, Zvonko G. Vranesic and Safwat G. Zaky [3]

Alternative/Supplementary

  1. Computer System Architecture - M. Morris Mano [4]
  2. Computer Organization and Architecture: Designing for Performance - William Stallings [5]
  3. Computer Architecture and Organisation - John. P. Hayes [6]
  4. Computer Systems Design and Architecture - Vincent P Heuring and Harry F Jordan
  5. Fundamentals of Computer Organization and Architecture - Mostafa Abd-El-Barr and Hesham El-Rewini
  6. Computer Systems: A Programmer’s Perspective - Randal E. Bryant and David R. O’Hallaron [7]
  7. Introduction to Computing Systems: From Bits and Gates to C and Beyond - Patt and Patel [8]
  8. Structured Computer Organization - Andrew S. Tanenbaum
  9. The Principles of Computer Hardware - A. Clements
  10. Fundamentals of Computer Architecture - M. Burrell
  11. Computer Architecture: Pipelined and Parallel Processor Design - Michael J. Flynn [9]

Notes

  • 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

^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

↑ Back to Table of Contents

Algorithm Design and Analysis

Standard Textbooks

  1. Introduction to Algorithms - Thomas Cormen, C. Leiserson, and R. Rivest and C. Stein (CLRS) [1]
  2. Algorithm Design - Jon Kleinberg and Éva Tardos (KT) [2]
  3. Algorithms - Christos Papadimitriou, Sanjoy Dasgupta, and Umesh Vazirani (DPV) [3]

Alternative/Supplementary

  1. The Algorithm Design Manual - Steven Skiena [4]
  2. Algorithms - Robert Sedgewick and Kevin Wayne [5]
  3. Introduction to Algorithms: A Creative Approach - Udi Manber [6]
  4. Fundamentals of Computer Algorithms - Ellis Horowitz, Sartaj Sahni and S. Rajasekaran
  5. An Introduction to the Analysis of Algorithms - Robert Sedgewick and Philippe Flajolet
  6. Design and Analysis of Algorithm - P. H. Dave and H. B. Dave
  7. Design Methods and Analysis of Algorithms - S. K. Basu
  8. Algorithms in a Nutshell: A Practical Guide - George T. Heineman and Gary Pollice
  9. Algorithm Design: Foundations, Analysis and Internet Examples - Michael T. Goodrich and Roberto Tamassia

Notes

  • 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

^2 - Used as the reference for

^3 - Used as the reference for

^4 - Used as the reference for

^5 - Used as the reference for

↑ Back to Table of Contents

Theory of Computation

Standard Textbooks

  1. Introduction to Automata Theory, Languages, and Computation - John E. Hopcroft and Jeffrey D. Ullman (The Cinderella Book) [1]
  2. Introduction to the Theory of Computation - Michael Sipser [2]
  3. Elements of the Theory of Computation - Harry R. Lewis & C. H. Papadimitriou

Alternative/Supplementary

  1. Introduction to Formal Language and Computation - Peter Linz [3]
  2. Theory of Computer Science: Automata, Language and Computation - Mishra & Chandrasekharan
  3. A Text Book on Automata Theory - Nasir & Sirmani
  4. Introduction to Languages and The Theory of Computation - John Martin
  5. Computability, Complexity, and Languages: Fundamentals of Theoretical Computer Science - Martin Davis, Ron Sigal, Elaine J. Weyuker
  6. An Introduction to the Theory of Computation - Eitan Gurari
  7. Theory of Computation - James L. Hein
  8. Models of Computation and Formal Languages - R. Gregory Taylor
  9. Essentials of Theoretical Computer Science - F. D. Lewis
  10. Automata and Computability - Dexter C. Kozen

Notes

^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

^3 - Used as the reference for

↑ Back to Table of Contents

Operating Systems

Standard Textbooks

  1. Operating System Concepts - J. L. Peterson and A. Silberschatz (The Dinosaur Book) [1]
  2. Modern Operating Systems - Andrew S. Tanenbaum [2]
  3. Operating Systems, Internals and Design Principles - William Stallings [3]

Alternative/Supplementary

  1. Operating Systems: Three Easy Pieces - Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau (The Black Book/The Asteroid Book/The Comet Book) [4]
  2. Schaum’s Outline of Operating Systems - Archer J. Harris
  3. The Design of the UNIX operating system - Maurice J. Bach
  4. Operating Systems: Principles and Practice - Thomas Anderson and Michael Dahlin. [5]
  5. Operating Systems: A Concept-Based Approach - D. M. Dhamdhere
  6. Operating Systems: A Modern Perspective - Gary J. Nutt
  7. Operating Systems In Depth: Design and Programming - Thomas W. Doeppner [6]
  8. Operating System Concepts Essentials - Silberschatz, Galvin, Gagne [7]
  9. Linux Kernel Development - Robert Love [8]

Notes

^1 - Used as the reference for

^2 - Used as the reference for

^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

↑ Back to Table of Contents

Data Communication

Standard Textbooks

  1. Data Communication and Networking - B. A. Forouzan
  2. Computer Networks - Andrew S. Tanenbaum

Alternative/Supplementary

  1. Data Communication, Computer Networks and Open Systems - Fred Halsall
  2. TCP/IP Protocol Suite - B. A. Forouzan
  3. Data and Computer Communications - William Stallings [1]
  4. Communication Networks, Fundamental Concepts & Key Architecture - Leon-Garcia and I. Widjaja

Notes

  • 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

Microprocessors and Microcontrollers

Standard Textbooks

  1. The Intel Microprocessors - Architecture Programming And Interfacing - Barry B. Brey [1]
  2. Microprocessor and Interfacing - D. V. Hall
  3. Microprocessor Architecture, Programming, and Applications with the 8085 - Ramesh Gaonkar [5]

Alternative/Supplementary

  1. Microcomputer Systems - The 8086/8088 Family Architecture, Programming and Design - Liu and Gibson
  2. The 8051 Microcontroller and Embedded Systems - M. A. Mazidi, J. G. Mazidi and R. D. McKinlay
  3. Microprocessors: Principles and Applications - A. Pal
  4. The 8051 Microcontroller and Embedded Systems : Using Assembly and C - Muhammad Ali Mazidi
  5. Advanced Microprocessors and Peripherals - A. K. Ray and K. M. Bhurchandi
  6. Fundamentals of Microprocessors And Microcontrollers - Ram B.

Notes

Online courses about Microprocessors are rather difficult to come by.

^1 - Used as the reference for

^5 - Used as the reference for

↑ Back to Table of Contents

Discrete Mathematics

Standard Textbooks

  1. Discrete Mathematics and Its Applications - Kenneth H. Rosen [1]
  2. Discrete Mathematics - Kevin Ferland [2]
  3. Mathematics for Computer Science - Eric Lehman, F. Thomson Leighton, and Albert R. Meyer [3]

Alternative/Supplementary

  1. Discrete and Combinatorial Mathematics: An Applied Introduction - Ralph P. Grimaldi [4]
  2. Discrete Mathematics for Computer Science - Kenneth Bogart and Robert L. Drysdale [5]
  3. Concrete Mathematics - Ronald Graham, Donald E. Knuth and Oren Patashnik [6]
  4. Discrete Mathematics - Jiří Matoušek and Jaroslav Nešetřil [7]
  5. Mathematical Structures for Computer Science - J. L. Gersting [8]
  6. Discrete Mathematics - Norman L. Biggs [9]
  7. Discrete Mathematics - Kenneth A. Ross and Charles R. Wright [10]
  8. Discrete Mathematics - Seymour Lipschutz and Mar Lars Lipson [11]
  9. Discrete Mathematics: Mathematical Reasoning and Proof with Puzzles, Patterns and Games - Douglas E. Ensley and J. Winston Crawley [12]
  10. Elements of Discrete Mathematics: A Computer Oriented Approach - C. L. Liu and D. P. Mohapatra
  11. Discrete Mathematical Structures with Applications, to Computer Science - J. P. Tremblay and R. Manohar
  12. Discrete Mathematics for Computer Scientists & Mathematics - Joe L. Mott, A. Kandel, and T. P. Baker
  13. Graph Theory with applications to Engineering & Computer Science - N. Deo
  14. Discrete Mathematical Structures for Computer Science - B. Kolman and R. C. Busby
  15. Discrete Mathematics with Applications - Thomas Koshy
  16. Discrete Mathematics - Nicodemi O.
  17. Discrete Mathematics - R. Krishna Kumar
  18. Discrete Mathematics - Johnsonbaugh
  19. An Introduction to Discrete Mathematics for Business & Computing - John Dwyer
  20. Discrete Mathematics With Applications - Susanna S. Epp
  21. The Art of Computer Programming - Donald E. Knuth
  22. Practice Problems in Discrete Mathematics - Bojana Obrenic
  23. Hand Book of Discrete and Combinatorial Mathematics - Kenneth H. Rosen and John G. Michaels
  24. Discrete Mathematics by Example - Andrew Simpson
  25. Discrete Mathematics with Graph Theory and Combinatorics - T. Veerarajan

Notes

^1 - Used as the reference for

^3 - Used as the reference for

^4 - Used as the reference for

^5 - Used as the reference for

^8 - Used as the reference for

^9 - Used as the reference for

^10 - Used as the reference for

^12 - Used as the reference for

↑ Back to Table of Contents

Computer Graphics

Standard Textbooks

  1. 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]
  2. 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]
  3. Computer Graphics, C Version - Donald Hearn and M. Pauline Baker [3]

Alternative/Supplementary

  1. Computer Graphics using Open GL - Francis S. Hill
  2. Multimedia Systems - R. Steinmetz and K. Nahrstedt
  3. Fundamentals of Multimedia - Ze-Nian Li and M. S. Drew
  4. Mathematical Elements for Computer Graphics - David F. Rogers and James Alan Adams
  5. Physically Based Rendering: From Theory to Implementation - Matt Pharr and Greg Humphreys [4]
  6. Procedural Elements for Computer Graphics - David Rogers
  7. Computer Graphics for Java Programmers - L. Ammeraal and K. Zhang
  8. Computer Graphics: A Survey of Current Techniques and Applications - John Lewell
  9. Computer Graphics: Theory Into Practice - Jeffrey J. McConnell
  10. Computer Graphics: Techniques and Applications - R. D. Parslow, R. W. Prowse, Richard Elliot Green
  11. Computer Graphics and Virtual Environments: From Realism to Real-time - M. Slater, A. Steed, Y. Chrysantho
  12. Interactive Environments with Open-Source Software - Wolfgang Höhl
  13. Foundations of 3D Computer Graphics - Steven J. Gortler [5]
  14. Interactive Computer Graphics, A Top-Down Approach with WebGL - Edward Angel and Dave Schreiner [6]

Notes

  • ^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

^2 - Used as the reference for

^5 - Used as the reference for

^6 - Used as the reference for

↑ Back to Table of Contents

Information Theory and Coding

Standard Textbooks

  1. Elements of Information Theory - T. M. Cover and J. A. Thomas [1]
  2. Information Theory, Inference and Learning Algorithms - David J. C. Mackay [2]
  3. Information Theory Coding and Cryptography - R. Bose

Alternative/Supplementary

  1. Coding and Information Theory - S. Roman
  2. Introduction to Data Compression - Khalid Sayood
  3. The Theory of Information and Coding - R. J. McEliece
  4. The Theory of Error Correcting Codes - F. J. MacWilliams and N. J. A. Sloane
  5. Entropy and Information Theory - Robert M. Gray [3]
  6. Information Theory and Reliable Communication - R. G. Gallagher
  7. Information Theory - Robert B. Ash

Notes

^1 - Used as the reference for

^2 - Used as a reference for

↑ Back to Table of Contents

Compiler Design

Standard Textbooks

  1. Compilers: Principles, Techniques, and Tools - A. V. Aho, Ravi Sethi & Jeffrey D. Ullman (The Dragon Book) [1]
  2. Modern Compiler Implementation in ML - Andrew W. Appel (The Tiger Book)[2]
  3. Engineering a Compiler - Keith D. Cooper and Linda Torczon (CT) [3]

Alternative/Supplementary

  1. Compiler Construction: Theory and Practice - W. A. Barrett, John D. Couch, C. Couch
  2. Compiler Construction: Principles and Practice - Kenneth C. Louden [4]
  3. Modern Compiler Design - Dick Grune, Kees van Reeuwijk, Henri E. Bal, Ceriel J.H. Jacobs, Koen Langendoen
  4. Compiler Design: Theory, Tools, and Examples - Seth Bergmann [5]
  5. Compiler Design in C - Allen I. Holub [6]
  6. Optimizing Compilers for Modern Architectures: A Dependence-based Approach - Randy Allen and Ken Kennedy [7]
  7. Understanding and Writing Compilers: A Do It Yourself Guide - Richard Bornat [8]
  8. Advanced Compiler Design and Implementation - Steven Muchnick [9]
  9. Crafting a Compiler - Charles N. Fischer, Richard Joseph LeBlanc, and Ronald Kaplan Cytron [10]
  10. A Compiler Generator - William Marshall McKeeman, James J. Horning, David B. Wortman
  11. The Compiler Design Handbook: Optimizations and Machine Code Generation - Y. N. Srikant and Priti Shankar
  12. Compilers and Compiler Generators: An Introduction with C++ - Patrick D. Terry
  13. Compiler Construction - Niklaus Wirth
  14. A Rechargeable C Compiler: Design and Implementation - Christopher W. Fraser, David Hanson, David Hansen
  15. Compiling with continuations- Andrew W. Appel
  16. Building an Optimizing compiler - Robert Morgan
  17. Elements of Compiler Design - Alexander Meduna
  18. Object-oriented Compiler Construction - Jim Holmes
  19. Theory and Practice of Compiler Writing - J.P. Tremblay and P.G. Sorenson [11]
  20. Parsing Techniques: A Practical Guide - J.P. Tremblay and P.G. Sorenson

Notes

^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

^2 - The author has an accompanying website for his books (available in Java and C as well). Used as reference for

^3 - Used as a reference for

^4 - Used as a reference for

^10 - Used as a reference for

↑ Back to Table of Contents

Computer Networks

Standard Textbooks

  1. Computer Networking: A Top-Down Approach - James Kurose and Keith Ross [1]
  2. Computer Networks – A System Approach - Larry L. Peterson and Bruce S. Davie [2]
  3. Computer Networks - Andrew S. Tanenbaum [3]

Alternative/Supplementary

  1. TCP/IP Protocol Suite - Behrouz A. Forouzan
  2. Data and Computer Communication - William Stallings [4]
  3. Data Communication, Computer Networks and Open Systems - F. Halsall
  4. Data Communications and Networking - Behrouz A. Forouzan [5]
  5. Internetworking with TCP/IP, Volume 1 - Douglas Comer
  6. TCP/IP Illustrated, Volume 1: The Protocols - W. Richard Stevens [6]
  7. Unix Network Programming, Volume 1: The Sockets Networking API - W. Richard Stevens [7]

Notes

  • 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

^2 - Used as the reference for

^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.

↑ Back to Table of Contents

Software Engineering

Standard Textbooks

  1. Software Engineering: A Practitioner’s Approach - Roger S. Pressman [1]
  2. Software Engineering - Ian Sommerville [2]

Alternative/Supplementary

  1. An Integrated Approach to Software Engineering - Pankaj Jalote [3]
  2. Software Engineering Fundamentals - A. Behferooz and F. J. Hudson
  3. Fundamentals of Software Engineering - Rajib Mall
  4. Software Engineering - Gaurav Gupta and Deepika Gupta
  5. Encyclopedia of Software Engineering - Philip A. LaPlante
  6. Software Engineering 1st Edition - Udit Agarwal
  7. Algebraic Methodology and Software Technology - Grigore Rosu and Jose Meseguer
  8. Software Design Methodology: From Principles to Architectural Styles - Hong Zhu
  9. Object-oriented Software Engineering : using UML, patterns, and Java - Bernd Bruegge and Allen Dutoit [4]
  10. The New Software Engineering - Sue A. Conger [5]
  11. The Pragmatic Programmer - Dave Thomas and Andy Hunt [6]
  12. Software Engineering - Ivan Marsic [7]
  13. Design Patterns: Elements of Reusable Object-Oriented Software- E. Gamma, R. Helm, R. Johnson, and J. Vlissides [8]
  14. Object-Oriented Software Engineering: Practical Software Development using UML and Java - Timothy C. Lethbridge and Robert Laganière [9]
  15. Fundamentals of Software Engineering - Carlo Ghezzi [10]

Notes

^1 - Used as the reference for

^2 - Used as the reference for

^3 - Used as the reference for

^4 - Used as the reference for

^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

^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

Standard Textbooks

  1. Distributed Systems: Principles and Paradigms - Andrew S. Tanenbaum and Maaten Van Steen [1]
  2. Distributed Systems : Concepts and Design - George Coulouris, Jean Dollimore, Tim Kindberg and Gordon Blair [2]

Supplementary Reading:

  1. Distributed Computing: Fundamentals, Simulations, and Advanced Topics - Hagit Attiya and Jennifer Welch [3]
  2. Distributed Computing: Principles, Algorithms, and Systems - Ajay D. Kshemkalyani and Mukesh Singhal [4]
  3. Elements of Distributed Computing - Vijay K. Garg
  4. Distributed Algorithms - Nancy Lynch
  5. Distributed Systems - Jie Wu
  6. Distributed Systems - Sape Mullender
  7. Guide to Reliable Distributed Systems: Building High-Assurance Applications and Cloud-Hosted Services - Kenneth P. Birman [5]

Notes

  • 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

^2 - The book has a companion website as well. Used as the reference for

^3 - Used as the reference for

^4 - Used as the reference for

↑ Back to Table of Contents

References

Websites

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

↑ Back to Table of Contents

Courses

↑ Back to Table of Contents

Resources

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

↑ Back to Table of Contents

Miscellaneous links

ACM Classic Books Series
List of Useful Tutorials
Beej's Guides

↑ Back to Table of Contents