+0.23 The Missing Semester of Your CS Education (missing.csail.mit.edu S:+0.18 )
1163 points by anishathalye 2218 days ago | 196 comments on HN | Mild positive Contested Landing Page · v3.7 · 2026-02-28 08:17:05 0
Summary Education & Knowledge Access Champions
The Missing Semester course landing page describes a free, open-access MIT educational program teaching computer science tools and workflows essential to technical practice. The initiative champions educational rights (Article 26) through multilingual translations in 18 languages, open-source materials under CC BY-NC-SA, and public YouTube distribution. The course enables scientific progress and freedom of expression through comprehensive tool instruction, supported by community translation efforts and institutional commitment to democratized learning.
Article Heatmap
Preamble: ND — Preamble Preamble: No Data — Preamble P Article 1: +0.07 — Freedom, Equality, Brotherhood 1 Article 2: +0.11 — Non-Discrimination 2 Article 3: ND — Life, Liberty, Security Article 3: No Data — Life, Liberty, Security 3 Article 4: ND — No Slavery Article 4: No Data — No Slavery 4 Article 5: ND — No Torture Article 5: No Data — No Torture 5 Article 6: ND — Legal Personhood Article 6: No Data — Legal Personhood 6 Article 7: ND — Equality Before Law Article 7: No Data — Equality Before Law 7 Article 8: ND — Right to Remedy Article 8: No Data — Right to Remedy 8 Article 9: ND — No Arbitrary Detention Article 9: No Data — No Arbitrary Detention 9 Article 10: ND — Fair Hearing Article 10: No Data — Fair Hearing 10 Article 11: ND — Presumption of Innocence Article 11: No Data — Presumption of Innocence 11 Article 12: ND — Privacy Article 12: No Data — Privacy 12 Article 13: ND — Freedom of Movement Article 13: No Data — Freedom of Movement 13 Article 14: ND — Asylum Article 14: No Data — Asylum 14 Article 15: ND — Nationality Article 15: No Data — Nationality 15 Article 16: ND — Marriage & Family Article 16: No Data — Marriage & Family 16 Article 17: ND — Property Article 17: No Data — Property 17 Article 18: +0.07 — Freedom of Thought 18 Article 19: +0.16 — Freedom of Expression 19 Article 20: +0.14 — Assembly & Association 20 Article 21: ND — Political Participation Article 21: No Data — Political Participation 21 Article 22: +0.05 — Social Security 22 Article 23: ND — Work & Equal Pay Article 23: No Data — Work & Equal Pay 23 Article 24: ND — Rest & Leisure Article 24: No Data — Rest & Leisure 24 Article 25: ND — Standard of Living Article 25: No Data — Standard of Living 25 Article 26: +0.66 — Education 26 Article 27: +0.36 — Cultural Participation 27 Article 28: ND — Social & International Order Article 28: No Data — Social & International Order 28 Article 29: +0.11 — Duties to Community 29 Article 30: ND — No Destruction of Rights Article 30: No Data — No Destruction of Rights 30
Negative Neutral Positive No Data
Aggregates
Editorial Mean +0.23 Structural Mean +0.18
Weighted Mean +0.25 Unweighted Mean +0.19
Max +0.66 Article 26 Min +0.05 Article 22
Signal 9 No Data 22
Volatility 0.19 (Medium)
Negative 0 Channels E: 0.6 S: 0.4
SETL +0.10 Editorial-dominant
FW Ratio 47% 18 facts · 20 inferences
Evidence 12% coverage
1H 3M 5L 22 ND
Theme Radar
Foundation Security Legal Privacy & Movement Personal Expression Economic & Social Cultural Order & Duties Foundation: 0.09 (2 articles) Security: 0.00 (0 articles) Legal: 0.00 (0 articles) Privacy & Movement: 0.00 (0 articles) Personal: 0.07 (1 articles) Expression: 0.15 (2 articles) Economic & Social: 0.05 (1 articles) Cultural: 0.51 (2 articles) Order & Duties: 0.11 (1 articles)
HN Discussion 20 top-level · 30 replies
Jonhoo 2020-02-03 17:27 UTC link
Over the years, we (@anishathalye, @jjgo, @jonhoo) have helped teach several classes at MIT, and over and over we have seen that many students have limited knowledge of the tools available to them. Computers were built to automate manual tasks, yet students often perform repetitive tasks by hand or fail to take full advantage of powerful tools such as version control and text editors. Common examples include holding the down arrow key for 30 seconds to scroll to the bottom of a large file in Vim, or using the nuclear approach to fix a Git repository (https://xkcd.com/1597/).

At least at MIT, these topics are not taught as part of the university curriculum: students are never shown how to use these tools, or at least not how to use them efficiently, and thus waste time and effort on tasks that should be simple. The standard CS curriculum is missing critical topics about the computing ecosystem that could make students’ lives significantly easier.

To help mitigate this, we ran a short lecture series during MIT’s Independent Activities Period (IAP) that covered all the topics we consider crucial to be an effective computer scientist and programmer. We’ve published lecture notes and videos in the hopes that people outside MIT find these resources useful.

To offer a bit of historical perspective on the class: we taught this class for the first time last year, when we called it “Hacker Tools” (there was some great discussion about last year’s class here: https://news.ycombinator.com/item?id=19078281). We found the feedback from here and elsewhere incredibly helpful. Taking that into account, we changed the lecture topics a bit, spent more lecture time on some of the core topics, wrote better exercises, and recorded high-quality lecture videos using a fancy lecture capture system (and this hacky DSL for editing multi-track lecture videos, which we thought some of you would find amusing: https://github.com/missing-semester/videos).

We’d love to hear any insights or feedback you may have, so that we can run an even better class next year!

-- Anish, Jose, and Jon

trillic 2020-02-03 21:45 UTC link
Here's a link to a similar course offered by UMich EECS. I really enjoyed it when I took it as an undergrad.

https://github.com/c4cs/c4cs.github.io

lkbm 2020-02-03 22:29 UTC link
In the lab for my second or third CS course, the professor was walking us through intro Unix usage, but he didn't take attendance so it ended up being just 2-4 of us showing up. After a few weeks, he cancelled the lectures and told us he'd just be around to answer questions, help with homework, etc.

The last lecture before he cancelled things was an intro to Vim. The next would've been Emacs.

And that's the story of how I became a life-long Vim user. :-)

wes1350 2020-02-03 22:38 UTC link
This course is wonderful! I've read through all the material and watched all the lectures and I can say it has helped me tremendously thus far. I'm still trying to master all the tools they've mentioned but I already feel much more proficient with e.g. version control, vim, using the command line, etc. If you're an experienced dev then you might already know all of these things, but if you feel that you have some gaps in your knowledge with some of these tools, this course will likely point you in the right direction.
dahfizz 2020-02-03 22:57 UTC link
I really wish this practical stuff was more emphasized. I graduated with a lot of very smart people who could write great code - but they could not compile, run, test, or check it into VCS to save their lives.

It made group projects hell.

sumoboy 2020-02-03 23:20 UTC link
It's sad to see freshman CS students getting thrown into this unknown world of programming with zero understanding of basic programming principle such at simple logic, tools, and even a book. I just witnessed this last semester where the students first class was basically 'intro was a C++'. No books or resources supplied or referenced.

So it even gets better when the instructor implies don't get help from the internet or examples for assignments, in his eyes everything on the internet is bad or wrong. I gathered he basically wanted the students to fail, what a super hero. Glad to see the effort here to help CS students, great job.

saboot 2020-02-04 00:06 UTC link
This is not only useful for CS people, but to us hard science members. Coding is a mandatory prereq.. which is usually one class on C or C++. Then we're expected to collaborate on a project with hundreds of developers. This is a great resource for those of us who are a bit lost, thank you.
jedberg 2020-02-04 00:11 UTC link
It's funny, when I was in school, I was always told the difference between a good CS school and an ok school was that the good school only taught you theory and left the practical application to the reader. The ok school had courses on tools and language syntax.

It's kind of awesome to see this coming out of MIT.

arman_ashrafian 2020-02-04 00:11 UTC link
At my school there is a 2 unit class that you must take along with the intro DS&A course that teaches bash, vim, git, testing, etc. It was definitely the class that helped me the most in my internship and also made me a Vim user.

http://ieng6.ucsd.edu/~cs15x/

jsd1982 2020-02-04 00:16 UTC link
I think the reason you don't see this kind of course offered is because it is primarily concerning training and not education.

Imagine if your training course 25 years ago focused on the Turbo C IDE and that's all the University offered. You would be amazingly proficient at Turbo C and know all its keyboard shortcuts but that wouldn't be too relevant in today's market.

Keeping such training material up to date with the latest trends is exhausting work and not worth maintaining, especially given how difficult it is to predict what may be the next tool de jure. Contrast this with more timeless educational topics and it starts to be clearer why this sort of thing is explicitly not taught.

cosmotic 2020-02-04 00:39 UTC link
Learning about a command-line debugger and command-line profiling tools would be helpful for those that find themselves in the past. IDEA and Visual Studio have had these things integrated for decades. I find the likelihood of knowing how to use a debugger or profiler is inversely proportional to the amount of time someone spends in the terminal.

It's astonishing how many developers rely on logging/print statements for debugging. The learning curve of using a tool like PDB or GDB is just too steep for most people.

Aperocky 2020-02-04 00:53 UTC link
Non CS graduate here, funny how my learning curve has been basically what y'all are saying.

I had one java class before I officially kick started my programming career by wiping windows off my laptop and installing ubuntu. Then proceeded to force myself to do everything from the command line, not that there were many other options. It escalated quickly from there.

Starting from the terminal is much more intuitive than writing 'int main/ public static void main' in an IDE.

xrd 2020-02-04 01:15 UTC link
My book about the GitHub API from O'Reilly had a similar idea: thinking in and about tools is an important concept. O'Reilly permitted me to release it under creative commons so you can find it here for free:

https://buildingtoolswithgithub.teddyhyde.io/

gen220 2020-02-04 01:44 UTC link
I graduated a top 50 school, that gave us an “engineering” degree but had no such similar course. There were no more than 20 students, out of 300ish, who understood the material of this course well enough to teach it. From my perspective, this knowledge was generally inversely correlated to GPA and strongly correlated to postgrad performance.

Take my anecdata for what it is, but I think these skills are strongly underrated by universities and students alike. Kudos to MIT for publishing this online; I know I would have benefitted from exposure to these topics in my first couple of years.

jacques_chester 2020-02-04 02:16 UTC link
In other engineering disciplines this used to be called "shop class" or similar. In his day my dad was taught as much about carpentry, metal work, plumbing etc as he was taught about radios and circuits.

As an educational technique, "sink or swim" is about as efficient as spinning a wheel and handing out degrees.

xzel 2020-02-04 02:31 UTC link
I took a Unix half credit course randomly where you basically did bash scripting, a huge bunch of command line tools and then eventually use all that to build your own linux distribution. I swear I learned more in the half credit class, and way more if you try to count it as useful information, than 90% of my other CS courses.

Edit: And since this got some traction, here is the current version of the class: https://www.cis.upenn.edu/~cis191/ it looks pretty similar to what I took but they added a little bit of Python.

sn41 2020-02-04 02:51 UTC link
When someone comes to me these days for knowledge about basic Unix/MacOS/Linux CLI tools, I direct them to the GNU core utilities documentation - it is very nicely organised according to task. I also demonstrate how CLI can do read-based operations as fast as SQL on medium size databases (just take an SQL dump and pipe) -

https://www.gnu.org/software/coreutils/manual/html_node/inde...

For various sorting and filtering followed by report generation in latex etc., a knowledge of awk also helps. I use the mawk interpreter since I have found it to be slightly faster with ASCII format files.

ameixaseca 2020-02-04 04:05 UTC link
Metaprogramming has an actual meaning and it means something completely different from what it is used for on this website:

"Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data." [1]

i.e.: it's a programming technique and not something related to any process related to building code.

I understand the idea of giving some more practical side of using computers in a "missing semester", but please pay attention to the nomenclature. It can be really confusing for someone studying CS that does not yet grasp the concepts that well.

[1] https://en.wikipedia.org/wiki/Metaprogramming

_sdfo 2020-02-04 09:38 UTC link
There are two sides to this kind of teaching. If you're MIT, you can afford to hire great lecturers who know to teach the students fundamental and deep truths about the tools they're using and not trivia. That way, they can generalize onto other tools, so anyone who studied git can quickly adapt to using cvs or svn. My university (in a developing country) is on the other side. Last semester was a disaster.

We had an AWS course, half of which was memorizing information about pricing and S3 tiers. If I were going into a job as an AWS guy, I'd definitely have to know that, but this is just third year of undergrad in CS :-/ and not a training course. The quizzes also had deliberately deceiving questions, which is the worst type of trivia!

Even better example. The Windows Server course was also compulsory (just like the AWS course) and mainly consisted of memorizing trivial information about context menus, which buttons to click and the licensing terms/durations/prices for different Windows Server versions. I'm jaded from the experience. Got my first two Cs in both since I spent time learning stuff described in the post instead of that nonsense.

haileris 2020-02-04 16:05 UTC link
Good as a primer for those that aren't naturally hackers but decided to become computer science majors and have little to no experience with a unix-like operating system.

I learned Linux, the shell, basic scripting, and the terminal environment in high school out of necessity and then began to thoroughly enjoy it. Planning to enter university as a CS student I took the time to learn Vim, though I didn't start using it regularly until much later.

I can't exactly articulate why, but I'm fairly upset these sorts of things comprise an entire course. What happened to RTFM? Where is the general curiosity? Even if you have no prior experience with a majority of these things, these are the kinds of things you figure out over the weekend while doing your regular courseload.

floatrock 2020-02-03 22:40 UTC link
Love this. I remember it wasn't until junior year when I was reading about the theoretical underpinnings of the unix kernel that I learned what the pipe operator I'd been copy-pasting on psets really did. I mean, it's great to learn those underpinnings, but most course 6 classes assumed you already knew all these tools... if it wasn't theory, it wasn't their responsibility to teach it.

"Missing Semester" describes it perfectly. Wish there had been something like this back in my day... I remember I felt as if I had learned all the theory behind fluid mechanics but didn't know the first thing about fixing a leaky faucet in my kitchen. Keep up the good work!

floatrock 2020-02-03 22:44 UTC link
If you're an experienced dev, you use all these every single day.

God save me if I'm asked to implement quicksort though... theory is nice, but for me, academia largely forgot about this practical stuff.

emilecantin 2020-02-03 23:13 UTC link
(Life-long vimmer here) At the bootcamp I teach at, one of our students almost became a life-long VIM user today, too: he had accidentally opened it and didn't know how to exit ;-) . Unfortunately, my co-worker helped him before I could introduce him to our dark ways.
hinkley 2020-02-03 23:13 UTC link
When I started at school we all got unix shell accounts mostly for email. Later years got bumped out into multiple machines but for that one year almost all of us were on the same 8 core box (and seriously clamped down quotas)

Within a few weeks, a friend of a friend of a friend had figured out how to pull pranks, and that opened the floodgates. Soon we all knew about man pages, about commands to query utmp and wtmp (to deduce who just did what to you or a friend), grep, file permissions, tty write permissions, quotas, nntp.

The most fun was when someone did something to you without figuring out how to stop it from being done right back to them. Many a kernel was cat'ed to someone else's terminal.

Even today when I'm trying to troubleshoot, half of the stuff I'm using was first used trying to seek revenge on a prankster. Once in a while I wonder if this would be a good way to teach a class on Unix.

leetcrew 2020-02-03 23:30 UTC link
it's even worse at the school I graduated from. the intro level course for cs majors is in python, but calculus I is a prereq. so the students who are catching up in math and/or don't quite feel ready for the real intro course have to take the remedial course, which is in c. I was a TA/grader for that course and what a shitshow it was. I don't think the professor ever explained the concept of undefined behavior.

the highlight for me as a grader was the assignment where they first had to define functions outside of main. many of the students didn't understand that you need to actually return values from (non-void) functions. but in a lot of cases, the value they were supposed to return happened to be sitting in $rax, so they would end up producing the correct output. I was never sure what to do in those cases; they lacked the conceptual tools to even understand what they had done wrong.

sf_rob 2020-02-03 23:36 UTC link
I graduated high in my CS class from a top school, but it turns out that I'm just good at tests/abstract thinking/hacking things together with duct tape. I'm terrible at software engineering, and really glad to see this kind of stuff being emphasized at the university level.
sombremesa 2020-02-04 00:13 UTC link
The world's best CS school is an internet connection.
mandelbrotwurst 2020-02-04 00:21 UTC link
Sure, or it could have focused on bash, terminal, Unix, vim, etc and still be relevant today.
0az 2020-02-04 00:32 UTC link
I too use (Mac)Vim.

In my experience, most CS majors at UCSD that I've met complain about the course. On the other hand, DSC doesn't have an equivalent, which I find disappointing but understandable. Maybe it'll get one in the future.

Aperocky 2020-02-04 00:46 UTC link
Life long vim user that was initiated by the terminal here, vim has a special place in my heart, not because the amount of customization that I was able to add, but because it enabled me to write actual diary.

Here's the script.

https://github.com/Aperocky/termlife/blob/master/diaryman.sh

All I had to do was to type $diary in the terminal and I'm writing my diary in vim. I had never had more extensive record of my life. My distracted ass would never have managed this without that kind of access.

bachmeier 2020-02-04 01:21 UTC link
> It's astonishing how many developers rely on logging/print statements for debugging.

One reason is that you don't switch contexts if you insert a print statement in your code. I personally find that to be the least distracting way to debug.

solinent 2020-02-04 01:42 UTC link
As someone who uses vim consistently, I hope I'm not a life-long vim user, I plan on at least a short retirement ;)
tcbasche 2020-02-04 01:51 UTC link
Presumably though there's change in a lot of different fields (not just CS), and it would just be up to whoever is maintaining a course to keep the tools up to date with what's used in industry.

But also, how long has it been since vim/emacs were first used? Or a vcs? I think a lot of this stuff would remain pretty well the same year on year.

starpilot 2020-02-04 02:09 UTC link
I have those skills, no one in my data science team does. The people with better communication skills, who can gain buy-in from colleagues and raise disagreements without making anyone angry, are doing far better than me despite their lower level of technical competence.
phlakaton 2020-02-04 02:16 UTC link
As someone whose intro to programming class WAS built on Turbo C almost thirty years ago, let me tell you how it was:

One day's worth of handouts told you about the IDE.

Another handout was tips for debugging, including common compiler errors and what they meant.

That was it! The rest you learned in the computer cluster, with the help of your dormmate, TA, or computer cluster tutor. The course itself, from then on out, focused (quite rightly IMO) on programming concepts, structures, abstractions, and basic algorithms.

The main computer clusters on campus also had a whole panoply of brochures on how to use Unix, as well as various editors/tools. They were for use by all students, not just the CS students.

In short: it should not take a massive investment of class prep and time to teach students the practicalia they will need to know. Save it for the labs. Don't make a semester course out of it. Include the whole student body as your audience by publishing self-help materials for all.

pvg 2020-02-04 02:19 UTC link
The browser dev tools of various browsers are debuggers and are very widely used - I'd guess completely independently of amount of time spent in a terminal.

Other factors, post-C, are probably things lots of languages don't have good debuggers or good debuggers take a while to materialize, debuggers are less necessary in managed-runtime languages, etc.

foobarian 2020-02-04 02:31 UTC link
I think what's happening is that motivated individuals learn these things by doing, sometimes starting at an early age. Teaching these topics explicitly will probably not automatically turn students into 10x hackers; however it might help some. I know I cry a little on the inside any time I have to explain grep to an engineer that has been around for more than a year.
jldugger 2020-02-04 02:38 UTC link
> these skills are strongly underrated by universities and students alike.

Universities believe their focus should be on timeless principles, and expect that students will supplement their instruction as needed. For example, teaching students the Bourne Again shell isn't useful on Windows, and declining in importance in macOS. Same logic applies to editors, but even more wildly varied. Rather than build 20 courses, one for every IDE, and then revisit the pedagogy every year as software changes, they basically lean heavily on 'you're smart enough to figure this out on your own.'

Some of this is obviously motivated post-hoc reasoning but still makes a modicum of sense -- anyone with 5 years exp could probably teach undergrads bash and git (with maybe 40 hours of prep), so university instructors with PhDs should be focusing on knowledge gained from research findings that wouldn't find their way into industry via other means.

foobarian 2020-02-04 02:39 UTC link
Since you mention scrolling using key repeat - it truly is painful to watch someone do it on default settings. And there are usually better ways to do that sort of thing. But sometimes, there is no substitute: going to the right spot in the middle of a word/line, moving around a page, browser title bars, etc. Here's the kicker though: most keyboard repeat rate settings around have a maximum that is pretty much unusable! But you can fix it thusly:

xset r rate 180 60

When I work on my computer it's like driving a Porsche. When I sit at someone else's it's like I tripped over a door threshold.

There are ways to adjust this on OSX too but it's a lot more touchy. Haven't attempted on Windows.

kyralis 2020-02-04 03:11 UTC link
Logging and print statements are phenomenally useful debugging aids. I think people get too caught up in what a debugger can give them and forget how much value you can get out of logging as well.

I'm perfectly happy to fire up LLDB and step through a program, but my go-to first step is frequently to add logs, and one of the reasons is that it's often just plain faster. It's kinda like the binary search of debugging: Sure, I could fire up the debugger and step through the long, complicated, probably multi-threaded algorithm... or I could add some log statements, reproduce, and rapidly narrow down exactly where I should spend my time in the debugger.

If you've got a project with a particularly painful compile time for simple changes (which seems like a whole different issue...) or an issue where setting up a reproduction environment is difficult, then sure, fire up your debugger and set up your breakpoints appropriately. But I think debugging via logging gets a bad rap when it's frequently a completely rational first step.

kyralis 2020-02-04 03:20 UTC link
This is one of the issues that I have with how CS and software engineering is taught in universities.

Yes, you could look at this as "vocational training" and not "education". But you could also look at this as education with a hands-on component using commonly available tools.

Sure, you could have students memorize a list of git commands. That would be terrible. But you could also teach students to understand how a distributed VCS works, the graph operations involved in commands like "checkout", "merge", and "push", and the underlying way of thinking about data and how it changes. That both provides students with an extremely useful practical skill as well as setting them up for understanding much more complicated topics like CRDTs and distributed data synchronization. And when the tool that was used gets replaced, so what? If the concepts used by the tool were taught correctly, then picking up a new one should be trivial. I've been through countless IDEs and debuggers and version control systems in my career, but the reason I can do that is because at some point I learned the first one of each and was then able to transition that knowledge along the way.

"Training" gets looked down in a way that seems actively harmful to me. Just because a tool might not be relevant in the future doesn't mean there's not a huge amount of value that can be gained from learning it today.

kbenson 2020-02-04 03:24 UTC link
Going through Linux From Scratch[1] manually and reading each component, while allowing yourself the time to look into interesting bits of each, is essentially this. I did it back in the early 2000's, and view it as one of the most useful educations I've ever gotten on how a Unix-like system functions (even if a lot of the knowledge is somewhat obsoleted now for many Linux distros with the introduction of systemd). I was doing it as research for how to ship a custom distro for a small purpose-built device, and while that never panned out, I've never once regretted spending the time to go through the process.

1: http://www.linuxfromscratch.org/

y2bd 2020-02-04 03:34 UTC link
Oof, the main memory I associate with this class was not realizing there was a midterm and therefore not showing up for the midterm.

Still passed though, and with an A somehow. Thank you, guardian angel TA!

aquaticsunset 2020-02-04 03:59 UTC link
We had a very similar course at Penn State, as well. It's among three courses that I learned the absolute most from, and have had a huge amount of applicability to my life and career.

https://bulletins.psu.edu/search/?P=CMPSC%20311

Galanwe 2020-02-04 04:06 UTC link
“Meta” means “one level of abstraction above”. I find it perfectly okay to use it in this context.
commandersaki 2020-02-04 04:20 UTC link
I did a similar Unix course. It was on quarter based system so it only lasted 3 months. We learned Unix from first principles. There were programming assignments that started off as shell scripts. We wrote manpages for our shell scripts. Then we learned C with the expectation you figure out the hard parts really really quickly (we were a Java school). We implemented various different C and Unix programs. We even reimplemented some of our shell scripts. We implemented a custom version of ls(1) with built-in sorting features.

In the last 3 weeks we built a full-blown Bourne shell in C including background jobs, shell/environment variables, pipelines, i/o redirection, lex/yacc parsing, etc. A lot of the features were extra credit (e.g. single pipeline a | b, versus infinite pipeline a | b | ...).

The class is unforgettable in my mind. I now mentally parse everything I do in the shell and imagine system call tracing every program I run.

lmwnshn 2020-02-04 04:35 UTC link
FWIW, Carnegie Mellon runs a "tools of the trade" course which is targeted to CS first-years, GPI [0], that is mostly taught by student TAs with the supervision of a professor. Asking students to create and teach the material seems to be a great way of solving this problem; TAs get teaching experience, students learn about the tools, professors are not duly overburdened.

[0] https://www.cs.cmu.edu/~07131/f19/

abhisuri97 2020-02-04 04:51 UTC link
Nice to see some Penn alum on HN :)
ip26 2020-02-04 05:15 UTC link
"I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it." -- Bill Gates

Some people just accept absurd drudgery interacting with computers; it never even occurs to them to seek an easier way. But if you can teach the students to be "lazy" when it comes to that kind of repetitive drudgery, they'll be set for life.

ladberg 2020-02-04 05:16 UTC link
Interesting that you think it's inversely correlated with GPA. At my school, I feel like the people who are experts with the terminal and *nix stuff are the ones who have high GPAs because they are at the top of all the CS classes.
Editorial Channel
What the content says
+0.80
Article 26 Education
High Advocacy Framing
Editorial
+0.80
SETL
+0.40

Entire course is dedicated to education. Page describes comprehensive curriculum, explicit teaching methodology, and commitment to addressing 'critical subject that's rarely covered'

+0.40
Article 27 Cultural Participation
Medium Advocacy Framing
Editorial
+0.40
SETL
+0.14

Course explicitly integrates AI tools and frames tool mastery as enabling scientific and technical progress

+0.20
Article 19 Freedom of Expression
Medium Advocacy Framing
Editorial
+0.20
SETL
+0.10

Version control and development tools are primary teaching topics enabling technical expression and communication

+0.15
Article 2 Non-Discrimination
Medium Advocacy Framing
Editorial
+0.15
SETL
+0.09

Page explicitly lists translations in 18 languages, demonstrating non-discriminatory approach to knowledge sharing

+0.15
Article 29 Duties to Community
Low Advocacy
Editorial
+0.15
SETL
+0.09

Course invites community responsibility through translation contributions and shared maintenance

+0.10
Article 1 Freedom, Equality, Brotherhood
Low Advocacy
Editorial
+0.10
SETL
+0.07

Course framed as equalizing opportunity through universal skill instruction available to all students

+0.10
Article 18 Freedom of Thought
Low Framing
Editorial
+0.10
SETL
+0.07

Course framing emphasizes independent problem-solving: 'solve problems that would previously seem impossibly complex'

+0.10
Article 20 Assembly & Association
Low Advocacy
Editorial
+0.10
SETL
-0.09

Course explicitly facilitates community discussion and gathering

+0.05
Article 22 Social Security
Low Framing
Editorial
+0.05
SETL
0.00

Course indirectly enables economic participation by teaching career-critical skills

ND
Preamble Preamble

Foundational principles of human dignity not explicitly addressed in course content

ND
Article 3 Life, Liberty, Security

Right to life, liberty, and personal security not addressed

ND
Article 4 No Slavery

Slavery prohibition not relevant to this educational context

ND
Article 5 No Torture

Prohibition of torture not addressed

ND
Article 6 Legal Personhood

Legal personhood not addressed

ND
Article 7 Equality Before Law

Equal protection before law not addressed

ND
Article 8 Right to Remedy

Right to judicial remedy not addressed

ND
Article 9 No Arbitrary Detention

Arbitrary detention not addressed

ND
Article 10 Fair Hearing

Fair trial guarantees not addressed

ND
Article 11 Presumption of Innocence

Presumption of innocence not addressed

ND
Article 12 Privacy

Privacy rights not addressed in course description

ND
Article 13 Freedom of Movement

Freedom of movement not relevant to educational content

ND
Article 14 Asylum

Right of asylum not addressed

ND
Article 15 Nationality

Nationality rights not addressed

ND
Article 16 Marriage & Family

Marriage and family rights not addressed

ND
Article 17 Property

Property rights not addressed

ND
Article 21 Political Participation

Political participation not addressed

ND
Article 23 Work & Equal Pay

Labor rights, fair wages, and working conditions not addressed

ND
Article 24 Rest & Leisure

Rest and leisure rights not addressed

ND
Article 25 Standard of Living

Health and welfare standards not addressed

ND
Article 28 Social & International Order

Social and international order enabling rights not explicitly addressed

ND
Article 30 No Destruction of Rights

Prevention of rights destruction not addressed

Structural Channel
What the site does
+0.60
Article 26 Education
High Advocacy Framing
Structural
+0.60
Context Modifier
ND
SETL
+0.40

Free YouTube videos, public course materials, CC BY-NC-SA licensing, 18-language translations, and community contribution mechanisms

+0.35
Article 27 Cultural Participation
Medium Advocacy Framing
Structural
+0.35
Context Modifier
ND
SETL
+0.14

Curriculum directly incorporates modern tools enabling participation in scientific advancement

+0.15
Article 19 Freedom of Expression
Medium Advocacy Framing
Structural
+0.15
Context Modifier
ND
SETL
+0.10

Course infrastructure and platforms support sharing and expression through code

+0.15
Article 20 Assembly & Association
Low Advocacy
Structural
+0.15
Context Modifier
ND
SETL
-0.09

Multiple platforms provided for assembly: Discord, social media, forums

+0.10
Article 2 Non-Discrimination
Medium Advocacy Framing
Structural
+0.10
Context Modifier
ND
SETL
+0.09

Community translation infrastructure enables access across linguistic groups

+0.10
Article 29 Duties to Community
Low Advocacy
Structural
+0.10
Context Modifier
ND
SETL
+0.09

GitHub pull request model and institutional collaboration distribute educational responsibility

+0.05
Article 1 Freedom, Equality, Brotherhood
Low Advocacy
Structural
+0.05
Context Modifier
ND
SETL
+0.07

Free public listing and access suggest equal admission regardless of status

+0.05
Article 18 Freedom of Thought
Low Framing
Structural
+0.05
Context Modifier
ND
SETL
+0.07

Tools taught enable technical autonomy and independent reasoning

+0.05
Article 22 Social Security
Low Framing
Structural
+0.05
Context Modifier
ND
SETL
0.00

Free access removes economic barriers to job-readiness training

ND
Preamble Preamble

No direct structural signals regarding universal rights framework

ND
Article 3 Life, Liberty, Security

Not applicable to educational content

ND
Article 4 No Slavery

No signals regarding forced labor or servitude

ND
Article 5 No Torture

Not applicable

ND
Article 6 Legal Personhood

No signals regarding recognition before law

ND
Article 7 Equality Before Law

Not applicable to educational institution

ND
Article 8 Right to Remedy

No signals regarding legal redress mechanisms

ND
Article 9 No Arbitrary Detention

Not applicable

ND
Article 10 Fair Hearing

Not applicable to educational context

ND
Article 11 Presumption of Innocence

No criminal law context

ND
Article 12 Privacy

No privacy policy observable on landing page

ND
Article 13 Freedom of Movement

Not applicable

ND
Article 14 Asylum

Not applicable to CS course

ND
Article 15 Nationality

Course does not address citizenship

ND
Article 16 Marriage & Family

Not applicable

ND
Article 17 Property

No signals regarding property

ND
Article 21 Political Participation

No signals regarding governance or civic participation

ND
Article 23 Work & Equal Pay

Course does not address labor standards

ND
Article 24 Rest & Leisure

Not applicable to educational content

ND
Article 25 Standard of Living

No health or welfare signals

ND
Article 28 Social & International Order

Institutional response but no systemic order framing

ND
Article 30 No Destruction of Rights

No safeguard signals observable

Supplementary Signals
How this content communicates, beyond directional lean. Learn more
Epistemic Quality
How well-sourced and evidence-based is this content?
0.73 low claims
Sources
0.7
Evidence
0.6
Uncertainty
0.8
Purpose
0.9
Propaganda Flags
No manipulative rhetoric detected
0 techniques detected
Emotional Tone
Emotional character: positive/negative, intensity, authority
hopeful
Valence
+0.6
Arousal
0.4
Dominance
0.5
Transparency
Does the content identify its author and disclose interests?
0.90
✓ Author ✓ Funding
More signals: context, framing & audience
Solution Orientation
Does this content offer solutions or only describe problems?
0.88 solution oriented
Reader Agency
0.8
Stakeholder Voice
Whose perspectives are represented in this content?
0.50 3 perspectives
Speaks: institutionindividuals
About: studentscommunity
Temporal Framing
Is this content looking backward, at the present, or forward?
present short term
Geographic Scope
What geographic area does this content cover?
global
MIT, OSSU, worldwide
Complexity
How accessible is this content to a general audience?
accessible low jargon general
Longitudinal · 5 evals
+1 0 −1 HN
Audit Trail 25 entries
2026-02-28 08:17 model_divergence Cross-model spread 0.36 exceeds threshold (5 models) - -
2026-02-28 08:17 eval Evaluated by claude-haiku-4-5-20251001: +0.25 (Mild positive)
2026-02-28 00:33 eval_success Light evaluated: Neutral (0.00) - -
2026-02-28 00:33 eval Evaluated by llama-4-scout-wai: 0.00 (Neutral)
2026-02-28 00:27 eval_success Light evaluated: Neutral (0.00) - -
2026-02-28 00:27 eval Evaluated by llama-3.3-70b-wai: 0.00 (Neutral)
2026-02-28 00:12 eval Evaluated by claude-haiku-4-5: 0.00 (Neutral)
2026-02-27 00:41 eval_success Evaluated: Neutral (0.36) - -
2026-02-27 00:41 eval Evaluated by deepseek-v3.2: +0.36 (Neutral) 10,104 tokens
2026-02-26 20:02 dlq Dead-lettered after 1 attempts: The Missing Semester of Your CS Education - -
2026-02-26 20:02 dlq Dead-lettered after 1 attempts: The Missing Semester of Your CS Education - -
2026-02-26 20:02 eval_failure Evaluation failed: Error: Unknown model in registry: llama-4-scout-wai - -
2026-02-26 20:02 eval_failure Evaluation failed: Error: Unknown model in registry: llama-4-scout-wai - -
2026-02-26 20:00 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 20:00 dlq Dead-lettered after 1 attempts: The Missing Semester of Your CS Education - -
2026-02-26 20:00 eval_failure Evaluation failed: Error: Unknown model in registry: llama-4-scout-wai - -
2026-02-26 20:00 eval_failure Evaluation failed: Error: Unknown model in registry: llama-4-scout-wai - -
2026-02-26 19:59 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 19:58 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 19:12 dlq Dead-lettered after 1 attempts: The Missing Semester of Your CS Education - -
2026-02-26 19:10 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 19:09 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 19:08 rate_limit OpenRouter rate limited (429) model=llama-3.3-70b - -
2026-02-26 16:10 dlq Dead-lettered after 1 attempts: The Missing Semester of Your CS Education - -
2026-02-26 16:09 dlq Dead-lettered after 1 attempts: The Missing Semester of Your CS Education - -