Resources for structured Computing/CS education

There are a lot of valuable resources on the internet that provide a structured path to understanding Computing/Computer Science, most/all of which might be miles ahead of the content being taught at Tier-II/III/lower colleges. This topic will attempt to list some of them and highlight the content conveyed in the courses.

In my humble opinion, structured education is still extremely important. Structured education is not equal to your college experience. Structured education doesn’t have to mean only theoretical education. It is important to recognize that structured education can be hands-on and information-dense.

One such course that I want to highlight is https://missing.csail.mit.edu/ . See motivation for the course at Why we are teaching this class · Missing Semester

Classes teach you all about advanced topics within CS, from operating systems to machine learning, but there’s one critical subject that’s rarely covered, and is instead left to students to figure out on their own: proficiency with their tools. We’ll teach you how to master the command-line, use a powerful text editor, use fancy features of version control systems, and much more!

Students spend hundreds of hours using these tools over the course of their education (and thousands over their career), so it makes sense to make the experience as fluid and frictionless as possible. Mastering these tools not only enables you to spend less time on figuring out how to bend your tools to your will, but it also lets you solve problems that would previously seem impossibly complex.

I would love the resources curated in this topic to be directly valuable to the Student Clubs that we are directly working with or any student/club that is interested in gaining a better education during their college years. Just because your college/department isn’t providing you a good education doesn’t mean that you can’t get it yourself.

5 Likes

https://teachyourselfcs.com is my favorite

2 Likes

Allen Downey is a prolific writer and a has written a number of highly regarded books, all of which are free to read online. Two notable examples are

Both books are incredibly hands-on thanks to the authors’ use of Jupyter Notebooks. These two books together should help any programmer build a solid foundation. It should be possible to slowly and methodically complete both of these books within a semester, assuming you are pursuing other course work in parallel.

If you’re wondering why anyone would take the time to write a book but make it freely available for people to read online (with an option to buy it), read https://greenteapress.com/free_books.html

  • A free license is not just a different way to distribute the same product; a book with a free license is a fundamentally different product.
  • Free books beget more free books in a way that conventional books don’t. Free books turn readers into writers.

A free book is the root of a tree of potential adaptations, translations, and entirely new books that branch out from the original. Free books transform readers into proof-readers, editors, anthologists, correspondents, contributors, collaborators, writers and authors.

If you are thinking about writing a book, start soon, release early and often, give up control but do a little policing, keep a contributor list, and make it free.

1 Like

I worked on foss-handbook last year for FOSS Clubs which included a lot of resources about tinkering and majorly exploring the hacker culture and various technologies.

Apparently, if I look towards it now, I can only see some OG documents which help one understand the basic philosophy of technology, free software, software simplicity and linux as well.

1 Like

For a number of students/professionals, it’s not clear how CS education translates to FOSS. A few excellent books/resources for this are the Architecture of Open Source Applications series by Greg Wilson. Greg Wilson is a well respected Educator and Entrepreneur. He co-founded the Software Carpentry (<- please go into this rabbit hole)

A few notable examples from the books that people should be able to relate to are

  • Bourne-Again Shell (BASH) - presumably BASH needs no introduction
  • Hadoop Distributed File System (HDFS) - part of the popular Hadoop project
  • Jitsi - Free video conferencing software for web and mobile
  • LLVM - the extremely popular compiler
  • Git - like BASH, presumably Git needs no introduction
  • Mercurial (Hg) - an alternative to Git, which Facebook heavily relied on earlier
  • Visualization Toolkit (VTK) - data processing and visualization software in the scientific computing domain
  • FreeRTOS - a Real Time Operating System
  • GNU Mailman - free software for managing mailing lists
  • Matplotlib - the defacto plotting library in Python
  • Nginx - a FOSS web server that powers a good chunk of the internet
  • SQLAlchemy - the defacto database toolkit and ORM system in Python
  • Twisted - OG event-driven networking engine in Python
  • ZeroMQ - extremely light-weight, popular, and language-agnostic messaging system
  • Warp - High-performance HTTP server library written in Haskell, part of the sister series “Performance of Open Source Applications”
  • Talos - high-performance performance testing framework for Mozilla Firefox

P.S. Two other resources by the same author are Software Design by Example using Python and Software Design by Example using JS.

1 Like

O’Reilly, in their infinite wisdom, redirects their open books page - O'Reilly Open Books Project - back to their main landing page now. Please use the earlier Internet Archive Wayback machine link to access the actual site and the various open books within.

Two books to highlight are

1 Like

OpenDSA (https://github.com/OpenDSA) from Virginia Tech has some amazing resources (web books with interactive slides, exercises, etc.) for some core CS concepts:

1 Like

Books For Site Reliability Engineering - the OReilly SRE books by folks from Google are well-reviewed - but as usual, please note that not all companies are Google.

An alternative resource is - School Of SRE from LinkedIn - but I’m not sure how good/bad it is.

https://www.nand2tetris.org/ - nand2tetris takes the learners from understanding nand logic gates to building a general-purpose computer system and a modern software hierarchy from the ground up!

I have liked this book on general software engineering practices: Software Engineering at Google and this is one book on my to read list but not got my hands on it - Code: The Hidden Language of Computer Hardware and Software.

2 Likes

https://pages.cs.wisc.edu/~remzi/OSTEP/

I’ve come across this reference multiple times over the past many years. Three Easy Pieces seem to be an extremely popular book on Operating Systems and it’s content that I hope to read soon.