Colin Stebbins Gordon
source link: https://csgordon.github.io/books.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Electronic References
Below is a loosely-categorized collection of links to CS textbooks in a variety of areas that are freely available online, usually because they are one of the following:
- An open textbook (such as PLAI, SF, or the HoTT book)
- An older book that is out of print, for which the copyright has returned to the original author(s) (such as TTFP)
- An author’s own preprint or draft of a textbook. This includes cases where the author has made special arrangements with a publisher to host an electronic copy of a published text on their homepage while it remains in print.
Most of these I’ve only used for brief personal reference, and have not read in depth. The exceptions, those books I’ve spent considerable time with and highly recommend, are marked with asterisks.
I also include below a list of papers I consider good stand-alone introductions to certain topics, and a list of links to thorough special topics courses.
If you find one of the links below is broken or has moved, feel free to let me know.
Those with time to spare and looking to have less of it may enjoy browsing the QA call numbers in UPenn’s extensive listing of online books. Most of those listed here were found independently over the years, but I’ve just now (June 2020) learned of this excellent repository of links. I’ll add to the links below as I find promising books.
Programming Language Theory & Program Analysis (including Automata)
Topics such as semantics, types, abstract interpretation, proof assistants…
Mathematical Logic, Set Theory, Model Theory, Topology
This portion excludes category theory, which is now its own section below.
Software Engineering (Theory and Practice)
Category Theory and Applications
Language Implementation
Systems & Networking (including Security, Architecture)
General CS Theory and Algorithms (including AI, ML, Data Science…)
General CS-Related Mathematics (including Statistics)
Computational Linguistics & Natural Language Processing
Education
- Topics in Parallel and Distributed Computing: Introducing Concurrency in Undergraduate Courses (preprint)
Language-Focused Introductions to Computer Science
Specific Programming Languages
While most of the books on this page are focused on more theoretical/foundational topics, sometimes you just need to learn a programming language or look at some reference on a particular language feature.
Introductions to Programming and/or Computer Science
Some of the books listed in other categories are appropriate for someone looking to get started with programming and/or computer science. I’ve duplicated those links in this section so they’re easier to find if that’s what you need.
Useful Tools
Concise Overview Papers
- Abstract Interpretation (Classic): Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. Cousot and Cousot, POPL’77.
- Abstract Interpretation (Semantic): Abstracting Abstract Machines. Van Horn and Might, ICFP’10.
- Denotational Semantics: The Denotational Semantics of Programming Languages. Tennent, CACM 19(8), 1976.
- Program Synthesis: Dimensions in Program Synthesis. Gulwani, PPDP’10.
- Type Theory: Introduction to Type Theory. Herman Geuvers, notes from lecture given at Language Engineering and Rigorous
- Software Development run of ALFA summer school, 2009.
Paper Reading Lists, Courses, and Miscellaneous
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK