Skip to main content

Computer Science textbooks that are freely available online

 https://csgordon.github.io/books.html

 

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…)

Computational Linguistics & Natural Language Processing

Education

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

Paper Reading Lists, Courses, and Miscellaneous

 

Comments

Popular posts from this blog

The Difference Between LEGO MINDSTORMS EV3 Home Edition (#31313) and LEGO MINDSTORMS Education EV3 (#45544)

http://robotsquare.com/2013/11/25/difference-between-ev3-home-edition-and-education-ev3/ This article covers the difference between the LEGO MINDSTORMS EV3 Home Edition and LEGO MINDSTORMS Education EV3 products. Other articles in the ‘difference between’ series: * The difference and compatibility between EV3 and NXT ( link ) * The difference between NXT Home Edition and NXT Education products ( link ) One robotics platform, two targets The LEGO MINDSTORMS EV3 robotics platform has been developed for two different target audiences. We have home users (children and hobbyists) and educational users (students and teachers). LEGO has designed a base set for each group, as well as several add on sets. There isn’t a clear line between home users and educational users, though. It’s fine to use the Education set at home, and it’s fine to use the Home Edition set at school. This article aims to clarify the differences between the two product lines so you can decide which

Let’s ban PowerPoint in lectures – it makes students more stupid and professors more boring

https://theconversation.com/lets-ban-powerpoint-in-lectures-it-makes-students-more-stupid-and-professors-more-boring-36183 Reading bullet points off a screen doesn't teach anyone anything. Author Bent Meier Sørensen Professor in Philosophy and Business at Copenhagen Business School Disclosure Statement Bent Meier Sørensen does not work for, consult to, own shares in or receive funding from any company or organisation that would benefit from this article, and has no relevant affiliations. The Conversation is funded by CSIRO, Melbourne, Monash, RMIT, UTS, UWA, ACU, ANU, ASB, Baker IDI, Canberra, CDU, Curtin, Deakin, ECU, Flinders, Griffith, the Harry Perkins Institute, JCU, La Trobe, Massey, Murdoch, Newcastle, UQ, QUT, SAHMRI, Swinburne, Sydney, UNDA, UNE, UniSA, UNSW, USC, USQ, UTAS, UWS, VU and Wollongong.

Building a portable GSM BTS using the Nuand bladeRF, Raspberry Pi and YateBTS (The Definitive and Step by Step Guide)

https://blog.strcpy.info/2016/04/21/building-a-portable-gsm-bts-using-bladerf-raspberry-and-yatebts-the-definitive-guide/ Building a portable GSM BTS using the Nuand bladeRF, Raspberry Pi and YateBTS (The Definitive and Step by Step Guide) I was always amazed when I read articles published by some hackers related to GSM technology. H owever , playing with GSM technologies was not cheap until the arrival of Software Defined Radios (SDRs), besides not being something easy to be implemented. A fter reading various articles related to GSM BTS, I noticed that there were a lot of inconsistent and or incomplete information related to the topic. From this, I decided to write this article, detailing and describing step by step the building process of a portable and operational GSM BTS. Before starting with the “hands on”, I would like to thank all the pioneering Hackers and Researchers who started the studies related to previously closed GSM technology. In particul