
#57 overall
The Missing Semester of Your CS Education
MIT CSAIL
8 recommenders · 7 threads · recommended in 4 years, 2020–2023 · score 9.1
A free MIT CSAIL course covering practical tools that university CS programs often skip, such as the shell, editors, version control, build systems, package managers, and virtual machines. It is delivered as online lectures and notes.
Commenters call it a godsend and highly recommend it regardless of level, for filling the gap of practical tooling that classes don't teach.
Recommendations by year
20062026
One course from OSSU I personally recommend to add onto Teach Yourself CS is “The Missing Semester of Your CS Education”[1]. For those unfamiliar with the tools needed to work through something like SICP, this course is a godsend.
[1] https://missing.csail.mit.edu/
just got introduced to it whilst traversing this course which I highly recommend regardless of technical level https://missing.csail.mit.edu/
I've recommended it here previously, and I'll do it again, because it's so fantastic: Missing Semester's lecture on Git https://www.youtube.com/watch?v=2sjqTHE0zok
For those interested in this topic I would suggest these incredible lectures by MIT [0], especially the data wrangling one.
Lectures are hosted on YouTube, they are extremely valuable and easy to follow and they give a pretty good insight on a lot of Unix topics.
[0]: https://missing.csail.mit.edu/2020/
I thought I’ve heard that name before. Anish is also one of the teachers of Missing Semester of CS [1]. One of the best courses I have taken as a college student!
[1]: https://missing.csail.mit.edu/
I highly recommend the MIT Missing Semester Course. https://missing.csail.mit.edu/
It's a glue which is not covered anywhere specifically, but it'll make your life a lot easier.
To quote the original guide (http://www.catb.org/~esr/faqs/hacker-howto.html#skills2) "Under Mac OS X it's possible, but only part of the system is open source — you're likely to hit a lot of walls, and you have to be careful not to develop the bad habit of depending on Apple's proprietary code."
I've enjoyed learning hacking skills by configuring GNU/Linux partially guided by an excellent MIT course by MacOS users (freely available at https://missing.csail.mit.edu/). On MacOS you can get a lot out of customizing your shell, text editor, terminal multiplexer, etc. with dotfiles. But I prefer a more completely free (libre/open) operating system because it doesn't stop there, I've patched and compiled my own custom window manager as well, and my entire operating system has the level of hackability that I love in the terminal. I guess all of the software I've mentioned is not below the application layer but above other applications (except for the most part the text editor).
Most CS programs skip the details of software engineering, such as Linux, command line, editors, IDEs. Maybe you can check out this course from MIT to get a head start:
https://missing.csail.mit.edu
I wish there was a Missing Semester of Linear Algebra course to help people go from "Okay I have a course or two in linear algebra, I know what span, vectors, basis and dimension mean, the formal definition of an inner product space, and I can do Gauss-Jordan elimination, determinants and eigenvalues for small matrices with paper and pencil" to "I have a 100x100 matrix of noisy data from sensors and this research paper I found tells me I can do some fantastic stuff if I compute such-and-such involving eigenvalues or inverses or whatnot. Or maybe I have a process with 1000 states where I know the probability objects move from state i to state j for each pair (i, j) and I want to find the steady state. How do I wrangle numpy into doing what I need?"
MIT has a course called The Missing Semester of Your CS Education [1]. It tells you about practical stuff that you need to know but isn't really taught in classes (shells, version control, build systems, package managers, VM's).
There needs to be something similar for linear algebra, it seems like there's a lot of folk knowledge and a big gap between what typical undergrad courses train you to do and what you encounter in actual practical problems.
(And don't get me started on all the weird linear algebra stuff they have going on in e.g. quantum physics.)
[1] https://missing.csail.mit.edu/about/