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 ;)
> 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.
>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.
While this comes out of CSAIL, I wouldn't ascribe too much institutional recognition to this. Given the existence of independent activities period, it's probably a reasonable place for it given MIT's setup. Other institutions have "math camp" and the like pre-classes starting.
It's probably a reasonable compromise. Good schools have limited bandwidth or interest in remedial education/hand-holding and academics don't have a lot of interest in putting together materials that will be outdated next year.
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.
It kind of depends on how you define "history". Before STEM dominated the hiring landscape, Universities were less career focused. No employers in these fields, as far as I know, have ever offered apprenticeships to teach new hires chemical engineering or applied mathematics from the ground up. University will not prepare you for a corporate job, exactly, but it gives you a background that lets you step into that, or go into research, etc. Lots of employers expect new hires to have research skills as well.
I think there are a number of ways in which financial incentives and University culture are misaligned with this reality.
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.
What makes you think this would not have been the case in other engineering disciplines?
I'm also a CS guy so I can't directly challenge this on the whole, but my experiences in some classes outside of this in other domains didn't feel like they were 'comfortably' paced at all. Without extensive out-of-class work I'd have been completely lost in no time. In fact one electrical engineering course I took was ironically considered a weed out course, for computer science, as it was required, and was probably the most brutal (and amazing) class I've ever taken in my life.
I had basically a machine shop course in mechanical engineering in college. OK, it was a bit more than that but I had no "shop" in high school.
Certainly nothing in high school anything that would have really prepared me for a civil engineering or or chemical engineering degree.
I had actually done a little bit of fiddling around with electronics (and maybe should have majored in that). But certainly college would have been a whole different level. (With a whole lot more math which was never my strong suit.)
So, yeah, these days I think there's a different baseline assumption for CS/programming than many other majors.
Is the MOOC the same as the actual MIT course though? I went through one of the old Grimson Guttag Intro to CS courses on MIT OCW years ago, with zero programming background I found it a very gentle on-ramp with all the basics explained.
I think it was this one, unfortunately archived now. I don't know the new one
No idea how similar it was to what's taught in the classroom. Of course you have access to TAs and other students IRL. And I have no doubt that assumptions about prior exposure and skills have changed over time.
I can only report that, had you dumped me into that content with those assignments, with no prior background I'd probably have been dropping that class.
The online version was more Grimson on the algorithms and Guttag (who wrote the Python book) on a bit of the programming. But the emphasis was more on the algorithms.
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)
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.
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.
In 2004 or so, 1.00 was an intro to Java course. I took it very cynically to pad out my units; I was a course 6 senior at the time. I got side-eyed by TAs a lot.
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
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.
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.
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.
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 ;)
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.
While this comes out of CSAIL, I wouldn't ascribe too much institutional recognition to this. Given the existence of independent activities period, it's probably a reasonable place for it given MIT's setup. Other institutions have "math camp" and the like pre-classes starting.
It's probably a reasonable compromise. Good schools have limited bandwidth or interest in remedial education/hand-holding and academics don't have a lot of interest in putting together materials that will be outdated next year.
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.
Out of one side of their mouth maybe.
Out of the other, they absolutely are not telling potential undergrads that they may tolerate them but they're really focused on research.
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.
I think there are a number of ways in which financial incentives and University culture are misaligned with this reality.
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.
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...
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.
I'm also a CS guy so I can't directly challenge this on the whole, but my experiences in some classes outside of this in other domains didn't feel like they were 'comfortably' paced at all. Without extensive out-of-class work I'd have been completely lost in no time. In fact one electrical engineering course I took was ironically considered a weed out course, for computer science, as it was required, and was probably the most brutal (and amazing) class I've ever taken in my life.
I had basically a machine shop course in mechanical engineering in college. OK, it was a bit more than that but I had no "shop" in high school.
Certainly nothing in high school anything that would have really prepared me for a civil engineering or or chemical engineering degree.
I had actually done a little bit of fiddling around with electronics (and maybe should have majored in that). But certainly college would have been a whole different level. (With a whole lot more math which was never my strong suit.)
So, yeah, these days I think there's a different baseline assumption for CS/programming than many other majors.
I think it was this one, unfortunately archived now. I don't know the new one
https://ocw.mit.edu/courses/6-00-introduction-to-computer-sc...
I can only report that, had you dumped me into that content with those assignments, with no prior background I'd probably have been dropping that class.
The online version was more Grimson on the algorithms and Guttag (who wrote the Python book) on a bit of the programming. But the emphasis was more on the algorithms.
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)
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.
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.
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.
https://missing.csail.mit.edu/about/
Edit: Nvm, they comment on it. https://missing.csail.mit.edu/2026/development-environment/
For similar reasons I think arts and humanities students should take marketing and business courses.
- 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.
Totally dependent on school/department/professor policy.
Some are very strict. Others allow working together on assignments. (And then there are specific group projects.)