12 ms·
The Missing Semester of Your CS Education – Revised for 2026
We returned to MIT last month to teach a revised version of Missing Semester, six years after the original debut (which has been extensively discussed on HN, in https://news.ycombinator.com/item?id=22226380 https://news.ycombinator.com/item?id=22226380 and https://news.ycombinator.com/item?id=34934216 https://news.ycombinator.com/item?id=34934216).
We’ve updated the course based on our personal experiences as well as major changes in the field (e.g., the proliferation of AI-powered developer tools) over the past several years. The 2026 course includes revised versions of four lectures from the previous course, and it adds five entirely new lectures:
- Development Environment and Tools
- Packaging and Shipping Code
- Agentic Coding
- Beyond the Code (soft skills)
- Code Quality
We’d love to hear any feedback from the HN community to improve the current or future iterations of the course. In particular, we’re curious to hear the community’s take on our inclusion of AI-related topics (e.g., dedicating an entire class to the topic of agentic coding; though we tried to counterbalance it with plenty of disclaimers, and a dedicated section on AI etiquette in Beyond the Code).
--Anish, Jon, and Jose
- mono442 7mo agoIs there even a point learning CS now with the rapid progress of agentic coding? It seems like a complete waste of money and time.
- arethuza 7mo agoIf you regard a CS degree as vocational training to "code" then perhaps not - but I don't think that's really how people should be regarding a CS degree?
- mono442 7mo agoMost people treat higher education as a pass to good paying job and I think it's unrealistic to think otherwise.
- arethuza 7mo agoIs that "pass" still worth it though? NB I have no idea - ~40 years since I did a CS degree!
- plastic-enjoyer 7mo ago> Most people treat higher education as a pass to good paying job and I think it's unrealistic to think otherwise. Yes, and that's a problem. If the advent of coding agents leads to people that are only in it for the money staying away from higher education - good. Those people are the reason why higher education turned to shit anyway and maybe it will be a nice change when people go into higher ed out of curiosity and not because they smell money.
- zelphirkalt 7mo agoOn one hand I agree, since I see way too many dispassionate people working in this profession, on the other hand this requires businesses to understand, that a software developer is more than a code monkey. I am not sure we are heading there. Currently, it seems more like many non-IT people think that their monkey imitations are the same that software developers have been doing for years and that they now don't need any good developers any longer. For some CRUD businesses this might even be true.
- ModernMech 7mo agoComputer science and coding are as related as physics and writing. If your thesis is the LLM can replace all of science then you have more faith in them than I do. If anything the LLM accelerates computer science and frees it from the perception that it is coding.
- projektfu 7mo agoIs there any point in teaching aviation engineering when an LLM could probably generate something that looks reasonable from a corpus existing work?
- wiseowise 7mo agoMost “cs” students don’t work in aviation, majority (statistically) work on yet another SaaS that is a CRUD that has been solved millions of times already.
- oytis 7mo ago> majority (statistically) work on yet another SaaS that is a CRUD that has been solved millions of times already. Not necessarily going to be true by the time current first year students graduate, given that solved problems are most exposed to AI acceleration.
- wiseowise 7mo agoWhy wound it change?
- oytis 7mo agoBecause the companies doing these will either not employ as many people as they do now or will cease to exist altogether since their customers will not need their services
- srpablo 7mo agoI think it's a bit like `rails generate`, where it massively speeds up getting a CRUD webapp 0 to 1, but once you get to GitHub or Shopify size, you need a lot more than that to add a new data model. AIs are pushing many things forward, but due to training sets and context windows, I think meaningfully adding to actually valuable apps, at least as we currently write them (the kind with many DBs/caches/message queues, services) will take a fair bit longer.
- zjp 7mo agoYes. Agents are good at solving densely represented (embarrassingly solved) problems, and a surprising and disturbing number of problems we have are, at least at the decomposed level, well represented. They can even compose them in new ways. But for the same reason they would be unable to derive general relativity, they cannot use insight to reformulate problems. I base this statement on my experience trying to get them to implement Flying Edges, a parallel isosurface extraction algorithm. It’s a reformulation of marching cubes, a serial algorithm that works over voxels, that works over edges instead. If they’re not shown known good code, models will try and implement marching cubes superficially shaped like flying edges. You are still necessary to push the frontier forward. Though, given the way some models will catch themselves making a conceptual error and correct in real time, we should be nervous.
- operation_moose 7mo agoI've had the same experience. I do a lot of automation of two engineering software packages through python and java APIs which are not terribly well documented and existing discussion of them on the greater web is practically nonexistent. They are completely, 100% useless, no matter what I do. Add on another layer of abstraction like "give me a function to calculate <engineering value>" and they get even worse. I had a small amount of luck getting it to refactor some really terrible code I wrote while under the gun, but they made tons of errors I had to go back and fix. Luckily I had a pretty comprehensive test suite by that point and finding the mistakes wasn't too hard. (I've tried all of the "just point them at the documentation" replies I'm sure are coming. It doesn't help)
- ThrowawayR2 7mo agoDepends on whether one wants to be a software engineer or a mere LLM operator. To be fair to the parent poster, many people do seem to aspire only to be LLM operators, who will be a dime-a-dozen commodities accorded even less respect and pay than the average developer is today.
- deleted 7mo ago[deleted]
- badc0ffee 7mo agoAt first, the purple links had me convinced that I'd already clicked on them.
- Hendrikto 7mo agoGreat to see a chapter on version control. It is such a shame that almost no CS program teaches proper version control. VCSs and the commit history can be such a tremendously valuable tool when used correctly. git bisect/blame/revert/rebase/… become so much less useful when VC is treated as a chore and afterthought, and basically amounts to: “Feature is done, my work is complete, just do `git commit -am "changes"` and be done with it.”. And don’t get me started on commit messages. It is shameful that for a large part of the industry, this is the norm. It is shameful that for a lot of professional, who call themselves software architects or reliability engineers and such fancy titles, still have essentially no idea what they are doing with git, and their response when git add/commit/push/pull don’t work is to shrug, and just delete and re-clone the repo. Version control should be treated with care and attention to detail. It pays for itself 100 times over. If your commit history is maintained and tells a story, it is a joy to review your PR. If you just `git commit -am "try fix"` 26 times over, and all that is left in the end is a ball of mud, it is horrible.
- TonyStr 7mo agoIt seems most people learn git only through necessity. I've heard people say "I just want to code, I don't care about the peripherals". JIT learning is a good way to acquire capabilities with real-world application, but there is not JIT pull that forces people to learn about bisect, git objects, git logging, etc. These things can only be learnt either through setting off time to read documentation or by being taught through a course. I think this is a good argument for teaching git, and being thorough in doing so, as many people are likely to never take that initiative themselves, while the benefits to being good at git are so obvious.
- Anonyneko 7mo agoI think most people learn git through the particular processes that are established at their workplace, as every company uses git or VCS in general differently somehow.
- stackghost 7mo ago>It seems most people learn git only through necessity. I've heard people say "I just want to code, I don't care about the peripherals" I'm sure there's an element of (intellectual) laziness too, but I think people tend to only learn git by necessity because git is simply unpleasant to use. A lot of us have Stockholm syndrome because git is less bad than what came before it, but git is not good.
- qsort 7mo ago> In particular, we’re curious to hear the community’s take on our inclusion of AI-related topics I think this is fine and if anything you should give it more space. It doesn't replace foundational understanding, but the course is explicitly about "practical" aspects, we can assume said foundational understanding is developed in other courses. Something like "build your own agent" would be a great intuition pump. The model is doing the heavy lifting and a basic harness is a couple hundred lines of simple code. It could fit in a single lecture and it would be very high signal in my opinion.
- ILoveHorses 7mo agoNot an entire semester, but I'm really glad my uni had a semester long core CS course on exactly this. Still one of the most useful courses I've ever taken, I refer my notes from that class even now.
- blks 7mo agoI would omit agentic “coding” all together.
- lordnacho 7mo agoIn some way this could be the most important course. You don't appreciate it when you're studying, because obviously it sounds a bit soft. But when you're learning how something works, often the thing that stops you isn't the fundamentals, which you know what are, it's the little frustrations like not knowing how to commit or pull code, or not knowing how to navigate the terminal.
- pards 7mo agoOne of my large enterprise clients currently requires all tech staff to complete 18h (yes, eighteen hours!) of "agile training", in addition to speed-running 14 separate mandatory online courses. This time would be much better spent watching these 9h of lectures.
- andersmurphy 7mo agoIs this going to be like when Sun paid universities to use/teach Java? Just with Anthropic and LLMs?
- dmurray 7mo agoI don't think students in 2026 need any encouragement to use LLMs, but sure, it would be strange if the LLM companies didn't give away student plans cheaply.
- Cerium 7mo agoI don't see the lock in effect (such as learning a language, or a complex software product) with LLMs yet that would drive student based marketing efforts.
- kkfx 7mo agoI have a bit of unsolicited feedback (in this terms): the basic IT skills, not CS or CE, but IT, that everyone needs but most don't realize, including techies who often stay in their bubble and don't truly understand the classic desktop model despite having the skills to do so, are a bit different IMVHO: - first of all, you need to know how to manage your own digital information. Even though it's taken for granted that a CS/CE freshman knows this, well, in my experience, that's usually not the case also for many PhD... Information management isn't just a taxonomy of files and dirs; it's also about evaluating, for example, what happens if the software you use for your notes is discontinued, or if your photo gallery disappears, and so on, and acting accordingly knowing your SPOFs and how to mitigate them; - then you need to know how to write, in the broadest sense, which includes mathematical notation, generating graphs, "freehand" drawing like simple CAD, and formatting your work for various purposes and media, whether it's emails, theses, reports, or general messages. This is where teaching LaTeX, org-mode, R/Quarto, etc comes in. It's not "advanced" is the very basic. Before learning to program and no, Office suites are not an answer, they are monsters from a past era, made to makes untrained human with little culture to use a computer for basic stuff instead of typewriters, a student is not that; - you need to know how to crunch numbers. Basic statistics are useful, but they're largely stuck in another era. You need to know how to do math on a computer, symbolic computation, whether it's Maxima or SymPy, doesn't really matter, and statistical processing basis. For instance, knowing Polars/Plotly/* at a minimum level are basic skills a freshman should have at a software/operational level, because they should be working in these environments from day one, given that these are the epistemological tools of the present, not paper anymore. Then you also need to manage code, but in the broadest sense. A dSCM is also for managing your own notes and documents, not just software, and you need to know how to share these with others, whether it's Radicle or Forgejo or patches vua mail doesn't really matter, but this family of software needs to be introduced and used at least at a basic level. A DynDNS services should be also given so anyone could try to self-host the services they want. Knowing how to communicate is an essential skill, and it's not about using Gmail or Zoom... it's about learning how to self-host basic communication services. It doesn't really matter if it's XMPP, Matrix, or Nostr, but the concept must be clear, and understanding the distributed and decentralized options we have today is vital. A student needs to learn how to stand on their own two feet, not on someone else's servers. These are basic IT skills that aren't "advanced" at all, despite what many people think, or "sysadmin-level" and so on; they're simply what a freshman should have as someone who loves knowledge and wants to get their hands dirty.
- projektfu 7mo agoI'd include sed and awk, because these tools are ubiquitous and can accomplish in a few readable lines what people write long programs to handle in other languages, seemingly because they are unaware of sed and awk, don't know how to use them, or are required for some reason to do it in the project language. In fact, generally teaching people to select the right tool for the job is a good skill to prevent them from using golden hammers.
- NoNameHaveI 7mo agoI'm glad to see there is a "Beyond the Code" section that discusses comments. Here's what I typically told my students in Intro to Programming" Good comments lend insight into the code. Reading the code itself tells you the what. Comments should explain the why. Comments like "i+=1; /* Increment i */" are of little value. However comments such as "We increment i mid loop so that we can peek ahead at the next value for a possible swap" are more useful. Use a narrative voice when writing comments, like you are explaining the code to your grandparent. This make digestion easier. Remember, code spends most of its life, and most of its expense, in the maintenance phase. The easier you make your code to understand, the less it will cost and the longer it will live.
- dec0dedab0de 7mo agoI prefer comments like "I'm sorry about this, I know it's ugly but I'm in a rush and it's the quickest way to get it working"
- stronglikedan 7mo agoAs long as there's a "TODO" tag in the comment to easily search for, then I prefer those comments as well.
- culi 7mo agoI prefer all "TODO" comments to be well-defined and have a specific ticket number attached to them to ensure they are tracked. I don't see any harm to the occasional "I'm sorry" or humorous comment
- e28eta 7mo agoMy first team figured that out after a year or so. If it’s really TODO, it should either be addressed before the WIP feature is considered “completed”, or it needs to show up in our work tracking system. Otherwise it just fell through the cracks and would never be prioritized.
- 7mo ago
- tovej 7mo agoI would focus more on being able to follow the development of new and existing foundational technologies, rather than focusing on, say agentic coding. That one really sticks out as a trendy topic that doesn't really deserve to be included.
- nautilus12 7mo agoLol, does any of this matter anymore with AI coding? It was hard to get people to care about this sort of thing before ai coding, now its impossible. People in a few years will be coding without even knowing what unix is.
- ludicrousdispla 7mo agoPersonal hygiene is worth a mention.
- shimman 7mo agoHonestly shocked ethics aren't discussed more as the "missing semester," too many devs are completely fine working for truly evil companies.
- wps 7mo agoEspecially considering proper licensed engineers often due have to take engineering ethics courses as part of their program.
- bruce343434 7mo agoIs a moral compass something you can teach someone in a short course if they have been lacking it so far in their entire lives?
- anishathalye 7mo agoMIT already has an excellent class on Ethics for Engineers: https://e4e.mit.edu/ https://e4e.mit.edu/
- shimman 7mo agoClearly failing the students seeing how they still work for evil companies.
- Arun2009 7mo agoJust wondering - do you include information on interviewing, salary negotiation, communication with management, leading teams, and maybe topics on career progression? These would have been very useful to me back when I was in the university.
- Jonhoo 7mo agoNot at the moment, but it's a good idea for the next iteration of the class!
- a-dub 7mo agomaybe would be interesting to include a lecture on how to interact with the open source community and successfully contribute to an open source project while respecting maintainer time and energy (and other unwritten rules of (n)etiquette). edit: already in the "beyond the code" section... cool!
- ThrowawayR2 7mo agoI'd suggest adding software testing and QA, particularly with the rise in AI and agentic coding requiring better testing skills, but that would deserve an entire separate course all of its own.
- tovej 7mo agoI would hope any CS/Software engineering education would already include QA. Both a testing course and a general software quality course.
- DGAP 7mo agoThis is great but irrelevant in the age of ai.
- snowhale 7mo ago[dead]
- 0xbadcafebee 7mo agoIf you want to master the shell (it will save years of your life), follow these guides. I highly recommend reading the entire BASH manual, it will answer every question you'll ever have, or at least give you a hint about it, as well as expose you to all the hidden knowledge (some call it "gotchas") you'll wish you knew later. 101 - Bash for Beginners (https://tldp.org/LDP/Bash-Beginners-Guide/html/) - Bash Tutorial (https://www.w3schools.com/bash/) 201 - Bash Programming (https://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html) - Advanced Bash Scripting Guide (https://tldp.org/LDP/abs/html/) 301 - The Bash Manual (https://www.gnu.org/software/bash/manual/bash.html) (https://man7.org/linux/man-pages/man1/bash.1.html) - ShellCheck (https://www.shellcheck.net/) To find every Unix-y program and get a 1-line description of it (and referenced programs/functions), run: for i in $(ls /bin/* /usr/bin/* /sbin/* /usr/sbin/* | sed -E 's?.*/??g' | sort -u) ; do echo "command: $i" whatis "$(basename "$i")" | cat echo "" done | tee command-descriptions.log View 'command-descriptions.log' with less command-descriptions.log, use arrow-keys and page up/down to navigate, and type 'q' to exit. To find out more about a program like df(1), run man 1 df.
- e12e 7mo agoI think looking at some of the documentation for oils (née oil sh) and ysh - as well as [looking at using] these two projects [in place of bash] - is also a good idea today: https://oils.pub/ https://oils.pub/
- zahlman 7mo agoI think I would do it more like: find /bin/ /usr/bin/ /sbin/ /usr/sbin/ -executable -type f -exec whatis "$(basename {})" \; | sort -u > commands.txt
- 0xbadcafebee 7mo agoYou would need to make those double-quotes into single-quotes. Double-quotes will interpolate the $() immediately, running basename before find runs. Single-quotes will not interpolate the $(), so the whole string gets passed to find for it to execute each time
- stevetron 7mo agoHow about including a course in touch-typing that emphasizes the computer keyboard rather than the typewrite keyboard?
- Obscurity4340 7mo agoDvorak++
- caillou 7mo agoIn terms of shell, I moved to the fish shell 5 years ago. Things are so much easier. No need to a massive amount of plugins and configs, mostly works out of the box.
- BeetleB 7mo agoxonsh user for 8 years here :-) I agree that these shells are better than bash, etc. But some bash knowledge is probably a must, given its ubiquity. You're not always going to have the option to install fish. (Sadly, most of my jobs, including my current one, require tcsh).
- e12e 7mo agoFish is probably a good idea for an interactive shell. Osh/ysh might be a good idea for scripting: https://oils.pub/ https://oils.pub/ I'm still using bash out of habit, though. My one nod to modern tooling is using fzf for shell history search...
- ghc 7mo agoThat's actually brilliant! Most of my classes only taught what tools were needed to accomplish coursework, not generally useful tools. Even our OS class focused on the workings of the kernel, not the Unix philosophy and how it influenced what tools were included, and how to use them. Then again, 20 years ago the year of the linux desktop was much farther away than it is today...
- cratermoon 7mo agoI didn't even have to look to know that they'd added a section on AI sloperators. Want my feedback? Delete the AI bullshit and go back to teaching programmers how to learn and understand what they are building.
- ontouchstart 7mo agoWhen I was a Physics Ph.D. student in NYU in the late nineties, I took a course called UNIX tools in the CS department. It was a hands on course where the instructor did live REPL in the terminal and we watched him showing us all the tricks. I got hooked with UNIX since then. Got myself a dialup terminal in my tiny apartment in east village and dial in to the workstation on campus. The latency is so bad that I can’t only see the feedback after a few keystrokes. That was when I trained my vi muscle memory. (EMacs was out of the question.) Later I got my own IBM 386 and installed Linux on it and started to program in Perl … I am a big fan of Jon’s YouTube videos on Rust and I started to use Rust in non conventional ways. I am going to follow this lecture series and “port” them to rustdoc and see how it goes. Another rabbit hole to fall down, it is going to be fun. https://ontouchstart.github.io/rabbit-holes/missing/ https://ontouchstart.github.io/rabbit-holes/missing/
- __mharrison__ 7mo agoHuge blindspot, especially with all the AI coding going on now... Testing
- whateveracct 7mo agoPurdue CompE has long had a 1 credit hour course that is just this. Lots of bash and git and then a little Python and Tkinter at the end. Other courses them assumed we had this knowledge - the 300-level ASIC class had us submit assignments by pushing to a remote, for instance. Definitely one of the most useful credit hours I had.
- umairnadeem123 7mo ago[dead]
- dvfjsdhgfv 7mo agoAs it's hosted on CSAIL, I was somewhat disappointed by the code quality section: https://missing.csail.mit.edu/2026/code-quality/ https://missing.csail.mit.edu/2026/code-quality/ Although it's specifically code quality, not software quality, I feel so much is missing. Of course there is no space to explain it in detail, but they could at least list/mention things like complexity, maintainability, modularity etc.
- ontouchstart 7mo agoI am not at lecture 9 yet. I would love to follow their journey at human pace just like I did 30 years ago. I do think your point is valid. The trend in the industry is putting emphasis on cosmetic qualities (format, workflow, testing), producing huge amount of metadata that consumes huge amount of human and machine energy for the peace of mind. Complexity, maintainability, modularity have more to do with thinking about the problems at proper abstraction levels. It seems we ended up spending more time on tools like writers spending more time on sharpening pencils or playing with fonts than writing something meaningful. A low quality software can have beautiful code just like a low quality book has beautiful fonts.
- ontouchstart 7mo agoI watched this YouTube video Two decades of Git: A conversation with creator Linus Torvalds https://www.youtube.com/watch?v=sCr_gb8rdEI https://www.youtube.com/watch?v=sCr_gb8rdEI I was surprised that he only spent four months on it as a maintainer. What a great piece of work by a great software developer.
- vibecodingfraud 7mo agoTo watch
- dfilppi 7mo ago[dead]
- bigstrat2003 7mo agoI would remove the AI stuff entirely. At best it's not useful for students to learn about AI, at worst it's actively harmful (because they will rely on it and never learn). AI isn't yet to the point where it's actually a useful tool, so it doesn't make sense to devote learning time to it.
- btreecat 7mo agoI think we might need to take a hard look at the higher end path of CS and ask why we're not focused more on Software Engineering. Research is great, but if wre trying to train people to make real things, there's a whole different set of skills where you only need a thin vineer of CS training and a deeper understanding of software maintenance.
- cd4761 7mo agoThe original shell scripting lecture changed how I think about automation. Curious what the five new lectures cover.
- pbnjeh 7mo agoOne bit of very simple feedback. Keep the prior/older versions online. 1) There’s value in older (e.g. pre-AI) perspectives and tools; 2) Different presentations/wording may click better with different people; 3) Links to them won’t break. Thanks!
- DaBarrington 7mo agoI bailed the second I saw AI mentioned, I'd rather learn to do things myself than ask chatgpt to hallucinate up a program for me. I am really hoping AI goes the way of the NFT soon and humanity goes back to actually creating stuff themselves. I'd ask chatgpt if the AI bubble will pop any time soon but it will probably tell me something unrelated and/or completely incorrect and I would just have to go find the answer on Google anyway. Maybe I should ask chatgpt if any of these AI companies will ever manage to make it out of the red.