There's definitely a tension at top STEM schools (probably especially in CS) between assuming students have some baseline knowledge of whatever field and just tossing them into the deep end of the pool and figuring out the practicalities on their own.
I did take one of the MIT intro CS MOOCs at one point for kicks. Very good. But it was more or less learn Python on your own if you don't already know it (or how to program more broadly). That doesn't really happen in a lot of other disciplines other than some areas of the arts.
At one university I went to, the head of the CS department was quoted as saying "[We don't need to care about the job market,] Our job is to create researchers."
I thought that was pretty strange at the time because like 5% of the students end up going into research. So that was basically like him saying I'm totally cool with our educational program being misaligned for 95% percent of our customers...
Maybe it makes sense for the big picture though. If all the breakthroughs come from those 5%, it might benefit everyone to optimize for them. (I don't expect they would have called the program particularly optimized either though ;)
Well you can say there is a difference between "computer science" and "software engineering", plus many "universities" are particularly research focused.
A chemistry, physics, or even MechE BS is coming out only at the very beginning of their training, and will require lots of specific on-the-job training if they go into industry. School is about the principles of the field and how to think critically / experimentally. E.g. software debugging requires an understanding of hypothesis testing and isolation before the details of specific tech ever come into play. This is easy to take for granted because many people have that skill naturally, others need to be trained and still never quite get it.
Edit: of course if only 5% of grads are going on to research then maybe the department is confused. A lot of prestigious schools market themselves as research institutions and advertise the undergrad research opportunities etc. If you choose to go there then you know what you're getting into.
> I don't expect [the 5% of students who end up going into research] would have called the program particularly optimized either
This. I went to the University of Iowa in the aughts. My experience was that because they didn't cover a lot of the same material in this MIT Missing Semester 2026 list, a lot of the classes went poorly. They had trouble moving students through the material on the syllabus because most students would trip over these kinds of computing basics that are necessary to experiment with the DS+A theory via actual programming. And the department neither added a prereq that covers these basics or nor incorporated them into other courses's syllabi. Instead, they kept trying what wasn't working: having a huge gap between the nominal material and what the average student actually got (but somehow kept going on to the next course). I don't think it did any service to anyone. They could have taken time to actually help most students understand the basics, they could have actually proceeded at a quicker pace through the theoretical material more for the students who actually did understand the basics, they could have ensured their degree actually was a mark of quality in the job market, etc.
It's nice that someone at MIT is recognizing this and putting together this material. The name and about page suggest though it's not something the department has long recognized and uncontroversially integrated into the program (perhaps as an intro class you can test out of), which is still weird.
They like to say things like that or some version of "we want to teach the concepts, the specific technology changes too fast". Does it? Just seems lazy to me.
In some schools they have a separate degree program in informatics or computer technology, for precisely this reason -- computer science is a different field.
It's tough to for me to judge cause I've been programming for 30 years maybe I'm underestimating how hard it is, but I look at learning a new language very different that trying to understand the graduate level CS work I've seen at a top STEM school.
Git, shell, basics.. even simple python if you have any at all programming experience - not nearly as hard as what they're teaching in the class.
Most of the time something like that like learning latex or git basics.. they'll say.. you'll pick up what you need. They're not gonna spend 12 weeks on those subjects they aren't hard enough.
Discrete tools are fairly easy. On the other hand, I think a lot of people here would laugh at the "text book" for the introductory FORTRAN course I took at said school.
Of course, you were struggling with fairly primitive tools at the time as well. Made a typo? Time to beg the grad students running the facility for some more compute cycles.
I feel like most first intro classes in Computer Science is learn the coding language on your own. At first I was like why? Why don't they hold our hands while we do this. But since I have had some space to look back it really is a pretty good representation of our industry. You are going to need to learn new languages. So getting thrown in the deep end is a pretty good precursor for what work is going to look like.
This isn’t a bad idea, just not for the intro course. When I was an undergrad “programming language” was this course. You were given a brief introduction to brew languages and paradigms then expected to figure it out from there. But at this point you had a foundation of experience to build on.
I don't totally disagree. On the other hand, based on the MOOC I took, had I been going in literally cold (as in college, new experiences, this is my chance to dive into CS and programming), I'd have been completely lost in a way that wouldn't have been the case in other engineering disciplines.
Now, I'm sure some would argue "tough." What are you doing at MIT then? And certainly, there are SO many opportunities these days to get some grounding in a way that may not be as readily possible with chemistry much less nuclear engineering for example. But it is something I think about now and then.
> There's definitely a tension at top STEM schools (probably especially in CS) between assuming students have some baseline knowledge of whatever field and just tossing them into the deep end of the pool and figuring out the practicalities on their own.
Pretty sure most college CS programs have an optional class for those new to programming ( Introduction to Java or C or Python ). But after that, you are expected to learn new languages/tools on your own mostly.
Not sure how common at what are considered top schools without looking at course catalogs. I expect if you're really new to programming, jumping into a CS program at an elite school could be a bumpy ride given 90% of the class will have a fair bit of experience and the class will be pitched to that level.
It's interesting to see that MIT is still like this. Canonically, there were no classes that taught programming per se: if you needed that, there were (often volunteer-taught) courses over IAP, the January Independent Activities Period, that would attempt to fill the gap - but you were still expected to pick it up on your own. I taught the Caffeinated Crash Course in C way back when. Good times.
Way back in the day, you did have a few programming classes especially outside of CS/EE given that it was perfectly reasonable for students to have no or little prior exposure to computers and programming. See FORTRAN coloring book. And, as you say, although I haven't dropped by since pre-COVID, there was as you say a smattering of stuff during IAP.
But my general sense based on some level of connections is you're expected to figure out a lot of, for lack of a better term, practicalities on your own. I don't think there's a lot of hand-holding in many cases--probably more so in some domains than others.
I feel like anyone with enough talent to get into MIT will have no problem picking up a programming language in a month or two on their own. Heck there are freshmen there who write programming languages for fun
Yup. Back in my day there was 1.00, a Civil Engineering course, a pretty standard intro to programming in plain old C. I don't know if it still exists. There was nothing of that sort in EECS, though there are lots of IAP courses (which take place in January, before spring semester starts). IMO a month is about right to spend on (leisurely) picking up a programming language for fun. A friend and I learned APL that way.
During my time there (late 2000s) there was a Software Lab (6.170) that focused on programming fundamentals and culminated in a four-person, month-or-so long project. At least at the time, it was one of the more notorious courses in terms of time investment. It was common for people to live like monks during project time.
Unfortunately I heard that class was retired and there was no direct replacement, which is a shame. It was an excellent crash course in shipping.
Project courses were pretty notorious. I had a few. 2.70 (which I think is a different number now) in mechanical engineering was a HUGE time sink. [For others: was a design challenge competition with a live context.] Did another all-terrain vehicle competition in grad school which was probably an even bigger time sink.
There was this one grad class taught by a professor who was also a capable programmer, and the class incidentally used this one programming language that many grad students wanted to learn.
So the word on the street was that his was a good class to take if you wanted a chance to learn the programming language. (Because you have only so much time in the day to allocate to labs.)
And rumor was also not to say to the professor that you want to learn that language, because word had gotten back to him about the off-label draw of his class to many, and he didn't like it.
i've often marvelled that hardly anybody on the MIT CS faculty has ever considered RDBMS / SQL / Codd-Date / relational model worthy of pedagogical consideration. you might cover some crud when surveying semaphores and mutexes, but actually learn SQL? nope.
Are you sure? I took 6.814 Database Systems back when Stonebraker taught it, and it's still being taught as 6.5830. The first problem set was a nontrivial crash course in SQL, using SQLite. Current/modern version: http://db.lcs.mit.edu/6.5830/assignments/pset1/pset1.pdf
Example problem:
> Find every Orange Line station in Fall 2018 that, during time period 01 and the direction of 0, had a total ons
passenger count greater than average for all Orange Line stations during that same time period, same season, and in the
same direction. Report the station name and the total ons value. Sort the results by total ons in descending order and
then station name in ascending order. Display the output like ‘Malden Center|21400’.
I was an undergrad at Rutgers in the late 1990s as they transitioned from teaching Pascal to Java for the introductory CS classes.
The lectures were primarily about algorithms, basic data structures etc and the extra "labs", taught by Teaching Assistants, was almost always for reviewing the lecture notes with a focus on answering questions.
At no point was there any discussion around "hey, here is a good way to design, write and test a program in a compiled language". My prior experience was with BASIC so just figuring out how to compile a program was a skill to pick up. I thankfully picked it up quickly but others struggled.
Another thing I saw often was people writing ENTIRE programs and then trying to compile them and getting "you have 500 compilation errors". I never wrote programs this way, I was more "write a couple lines, compile, see what happens etc" but it always struck me that even just suggesting that option in class would have helped a lot of folks.
(This being HN, I'm sure some people will say that students figuring this stuff out on their own helps weed out non-serious people but I still don't 100% buy that argument)
Basic FLOSS desktop knowledge must be in high schools for everyone, you can't study in the modern time without contemporary tools. LaTeX must also be in the game, because we need people who know how to express themselves crafting good quality documents.
There are probably books out there that probably do a better job than most discrete courses I can think of--i.e. an accounting course is probably too in the weeds for most people--but I agree that some sort of business/marketing/finance 101 would be useful for a lot of people (engineers as well).
There should be something like this available for any student at University, regardless of field. Perhaps less geared towards programming tasks but basic computing productivity.
very useful, took me couple months brute forcing to grasp the know hows because my school doesn't teach it. glad to see a course for it now getting out there
Conspicuously missing is a direct mention of AI tools. Is MIT, like others, side-stepping the use of AI by students to (help them) complete homework assignments and projects?
A question. If you think AI use by students to "bypass homework" is anything remotely approaching a problem, then I must ask you how you felt/feel about:
- University being cost prohibitive to 90 percent of all humans as financial driven institutions, not performance.
- Before AI, 20 + years of google data indexing/searches fueling academia
- study groups before that allowing group completion (or, cheating, in your view)
- The textbook that costs 500 dollars, or the textbook software from pearson that costs 500, that has the homework answers.
I think it's a silly posit that students using AI is...anything to even think about. I use it at my fortune 500 job every day, and have learned about my field's practical day-to-day from it than any textbook, homework assignment, practical etc.
There's definitely a tension at top STEM schools (probably especially in CS) between assuming students have some baseline knowledge of whatever field and just tossing them into the deep end of the pool and figuring out the practicalities on their own.
I did take one of the MIT intro CS MOOCs at one point for kicks. Very good. But it was more or less learn Python on your own if you don't already know it (or how to program more broadly). That doesn't really happen in a lot of other disciplines other than some areas of the arts.
At one university I went to, the head of the CS department was quoted as saying "[We don't need to care about the job market,] Our job is to create researchers."
I thought that was pretty strange at the time because like 5% of the students end up going into research. So that was basically like him saying I'm totally cool with our educational program being misaligned for 95% percent of our customers...
Maybe it makes sense for the big picture though. If all the breakthroughs come from those 5%, it might benefit everyone to optimize for them. (I don't expect they would have called the program particularly optimized either though ;)
Well you can say there is a difference between "computer science" and "software engineering", plus many "universities" are particularly research focused.
A chemistry, physics, or even MechE BS is coming out only at the very beginning of their training, and will require lots of specific on-the-job training if they go into industry. School is about the principles of the field and how to think critically / experimentally. E.g. software debugging requires an understanding of hypothesis testing and isolation before the details of specific tech ever come into play. This is easy to take for granted because many people have that skill naturally, others need to be trained and still never quite get it.
Edit: of course if only 5% of grads are going on to research then maybe the department is confused. A lot of prestigious schools market themselves as research institutions and advertise the undergrad research opportunities etc. If you choose to go there then you know what you're getting into.
1 reply →
> I don't expect [the 5% of students who end up going into research] would have called the program particularly optimized either
This. I went to the University of Iowa in the aughts. My experience was that because they didn't cover a lot of the same material in this MIT Missing Semester 2026 list, a lot of the classes went poorly. They had trouble moving students through the material on the syllabus because most students would trip over these kinds of computing basics that are necessary to experiment with the DS+A theory via actual programming. And the department neither added a prereq that covers these basics or nor incorporated them into other courses's syllabi. Instead, they kept trying what wasn't working: having a huge gap between the nominal material and what the average student actually got (but somehow kept going on to the next course). I don't think it did any service to anyone. They could have taken time to actually help most students understand the basics, they could have actually proceeded at a quicker pace through the theoretical material more for the students who actually did understand the basics, they could have ensured their degree actually was a mark of quality in the job market, etc.
It's nice that someone at MIT is recognizing this and putting together this material. The name and about page suggest though it's not something the department has long recognized and uncontroversially integrated into the program (perhaps as an intro class you can test out of), which is still weird.
8 replies →
Historically, the point of a university is not to be a jobs training program.
6 replies →
Probably one of those thoughts you should self-filter (and the alumni association sure wishes you would).
But it's also the case that (only half-joking) a lot of faculty at research universities regard most undergrads as an inconvenience at best.
1 reply →
They like to say things like that or some version of "we want to teach the concepts, the specific technology changes too fast". Does it? Just seems lazy to me.
In some schools they have a separate degree program in informatics or computer technology, for precisely this reason -- computer science is a different field.
It's tough to for me to judge cause I've been programming for 30 years maybe I'm underestimating how hard it is, but I look at learning a new language very different that trying to understand the graduate level CS work I've seen at a top STEM school.
Git, shell, basics.. even simple python if you have any at all programming experience - not nearly as hard as what they're teaching in the class.
Most of the time something like that like learning latex or git basics.. they'll say.. you'll pick up what you need. They're not gonna spend 12 weeks on those subjects they aren't hard enough.
Discrete tools are fairly easy. On the other hand, I think a lot of people here would laugh at the "text book" for the introductory FORTRAN course I took at said school.
Of course, you were struggling with fairly primitive tools at the time as well. Made a typo? Time to beg the grad students running the facility for some more compute cycles.
Although it's out of print I don't immediately see a full copy online. https://www2.seas.gwu.edu/~kaufman1/FortranColoringBook/Colo...
I feel like most first intro classes in Computer Science is learn the coding language on your own. At first I was like why? Why don't they hold our hands while we do this. But since I have had some space to look back it really is a pretty good representation of our industry. You are going to need to learn new languages. So getting thrown in the deep end is a pretty good precursor for what work is going to look like.
This isn’t a bad idea, just not for the intro course. When I was an undergrad “programming language” was this course. You were given a brief introduction to brew languages and paradigms then expected to figure it out from there. But at this point you had a foundation of experience to build on.
I don't totally disagree. On the other hand, based on the MOOC I took, had I been going in literally cold (as in college, new experiences, this is my chance to dive into CS and programming), I'd have been completely lost in a way that wouldn't have been the case in other engineering disciplines.
Now, I'm sure some would argue "tough." What are you doing at MIT then? And certainly, there are SO many opportunities these days to get some grounding in a way that may not be as readily possible with chemistry much less nuclear engineering for example. But it is something I think about now and then.
5 replies →
> There's definitely a tension at top STEM schools (probably especially in CS) between assuming students have some baseline knowledge of whatever field and just tossing them into the deep end of the pool and figuring out the practicalities on their own.
Pretty sure most college CS programs have an optional class for those new to programming ( Introduction to Java or C or Python ). But after that, you are expected to learn new languages/tools on your own mostly.
Most? Probably.
Not sure how common at what are considered top schools without looking at course catalogs. I expect if you're really new to programming, jumping into a CS program at an elite school could be a bumpy ride given 90% of the class will have a fair bit of experience and the class will be pitched to that level.
1 reply →
That’s generally how CS is taught at many top schools. If someone needs handholding just to figure out python then that’s bad news for the someone
It's interesting to see that MIT is still like this. Canonically, there were no classes that taught programming per se: if you needed that, there were (often volunteer-taught) courses over IAP, the January Independent Activities Period, that would attempt to fill the gap - but you were still expected to pick it up on your own. I taught the Caffeinated Crash Course in C way back when. Good times.
Way back in the day, you did have a few programming classes especially outside of CS/EE given that it was perfectly reasonable for students to have no or little prior exposure to computers and programming. See FORTRAN coloring book. And, as you say, although I haven't dropped by since pre-COVID, there was as you say a smattering of stuff during IAP.
But my general sense based on some level of connections is you're expected to figure out a lot of, for lack of a better term, practicalities on your own. I don't think there's a lot of hand-holding in many cases--probably more so in some domains than others.
I feel like anyone with enough talent to get into MIT will have no problem picking up a programming language in a month or two on their own. Heck there are freshmen there who write programming languages for fun
1 reply →
Yup. Back in my day there was 1.00, a Civil Engineering course, a pretty standard intro to programming in plain old C. I don't know if it still exists. There was nothing of that sort in EECS, though there are lots of IAP courses (which take place in January, before spring semester starts). IMO a month is about right to spend on (leisurely) picking up a programming language for fun. A friend and I learned APL that way.
3 replies →
During my time there (late 2000s) there was a Software Lab (6.170) that focused on programming fundamentals and culminated in a four-person, month-or-so long project. At least at the time, it was one of the more notorious courses in terms of time investment. It was common for people to live like monks during project time.
Unfortunately I heard that class was retired and there was no direct replacement, which is a shame. It was an excellent crash course in shipping.
Project courses were pretty notorious. I had a few. 2.70 (which I think is a different number now) in mechanical engineering was a HUGE time sink. [For others: was a design challenge competition with a live context.] Did another all-terrain vehicle competition in grad school which was probably an even bigger time sink.
when i took 6.170 it was CLU. it was 15 units because of lab, but yeah, time sink.
There was this one grad class taught by a professor who was also a capable programmer, and the class incidentally used this one programming language that many grad students wanted to learn.
So the word on the street was that his was a good class to take if you wanted a chance to learn the programming language. (Because you have only so much time in the day to allocate to labs.)
And rumor was also not to say to the professor that you want to learn that language, because word had gotten back to him about the off-label draw of his class to many, and he didn't like it.
you are allowed to say the language name now, tho right? or is he still prowling about?
Wasn't the SICP course a course in programming per se?
i've often marvelled that hardly anybody on the MIT CS faculty has ever considered RDBMS / SQL / Codd-Date / relational model worthy of pedagogical consideration. you might cover some crud when surveying semaphores and mutexes, but actually learn SQL? nope.
Are you sure? I took 6.814 Database Systems back when Stonebraker taught it, and it's still being taught as 6.5830. The first problem set was a nontrivial crash course in SQL, using SQLite. Current/modern version: http://db.lcs.mit.edu/6.5830/assignments/pset1/pset1.pdf
Example problem:
> Find every Orange Line station in Fall 2018 that, during time period 01 and the direction of 0, had a total ons passenger count greater than average for all Orange Line stations during that same time period, same season, and in the same direction. Report the station name and the total ons value. Sort the results by total ons in descending order and then station name in ascending order. Display the output like ‘Malden Center|21400’.
I was an undergrad at Rutgers in the late 1990s as they transitioned from teaching Pascal to Java for the introductory CS classes.
The lectures were primarily about algorithms, basic data structures etc and the extra "labs", taught by Teaching Assistants, was almost always for reviewing the lecture notes with a focus on answering questions.
At no point was there any discussion around "hey, here is a good way to design, write and test a program in a compiled language". My prior experience was with BASIC so just figuring out how to compile a program was a skill to pick up. I thankfully picked it up quickly but others struggled.
Another thing I saw often was people writing ENTIRE programs and then trying to compile them and getting "you have 500 compilation errors". I never wrote programs this way, I was more "write a couple lines, compile, see what happens etc" but it always struck me that even just suggesting that option in class would have helped a lot of folks.
(This being HN, I'm sure some people will say that students figuring this stuff out on their own helps weed out non-serious people but I still don't 100% buy that argument)
Link to the About page that clearly describes the effort and rationale.
https://missing.csail.mit.edu/about/
Anyone know how/if this differs from the 2020 one?
Edit: Nvm, they comment on it. https://missing.csail.mit.edu/2026/development-environment/
good link but I want to call out how they expect you to use AI like Claude.
wonder how that's gonna work and if students will learn...
Basic FLOSS desktop knowledge must be in high schools for everyone, you can't study in the modern time without contemporary tools. LaTeX must also be in the game, because we need people who know how to express themselves crafting good quality documents.
I always thought this practical side of development was missing in a CS or engineering curriculum. This is awesome.
For similar reasons I think arts and humanities students should take marketing and business courses.
There are probably books out there that probably do a better job than most discrete courses I can think of--i.e. an accounting course is probably too in the weeds for most people--but I agree that some sort of business/marketing/finance 101 would be useful for a lot of people (engineers as well).
Awesome course and I encourage everyone to check out the previous iteration (and the corresponding discussions on HN)
If you're interested, see also https://bernsteinbear.com/isdt/ by me and Tom
This looks like it is part of MIT's Independent Activities Period (IAP)?
Which seems like a brilliant idea (part of their 4-1-4 academic calendar.)
https://elo.mit.edu/iap/
There should be something like this available for any student at University, regardless of field. Perhaps less geared towards programming tasks but basic computing productivity.
very useful, took me couple months brute forcing to grasp the know hows because my school doesn't teach it. glad to see a course for it now getting out there
Conspicuously missing is a direct mention of AI tools. Is MIT, like others, side-stepping the use of AI by students to (help them) complete homework assignments and projects?
A question. If you think AI use by students to "bypass homework" is anything remotely approaching a problem, then I must ask you how you felt/feel about:
- University being cost prohibitive to 90 percent of all humans as financial driven institutions, not performance.
- Before AI, 20 + years of google data indexing/searches fueling academia
- study groups before that allowing group completion (or, cheating, in your view)
- The textbook that costs 500 dollars, or the textbook software from pearson that costs 500, that has the homework answers.
I think it's a silly posit that students using AI is...anything to even think about. I use it at my fortune 500 job every day, and have learned about my field's practical day-to-day from it than any textbook, homework assignment, practical etc.
>study groups before that allowing group completion (or, cheating, in your view)
Totally dependent on school/department/professor policy.
Some are very strict. Others allow working together on assignments. (And then there are specific group projects.)
If you click through the lectures they are mentioned in several of them.