Northeastern's redesign of the CS curriculum
188 comments
·January 10, 2025pclmulqdq
tiffanyh
> There is a tension here that is being understated which is that people of every major now take the intro-level CS class because programming is integral to everything.
Why doesn’t the CS department have a different intro class for CS majors and non-CS majors.
That’s a common practice in the mathematics, physics, etc. departments.
(To have harder intro classes for the students majoring in your department vs those who don’t.)
seanmcdirmid
At least when I went to school, intro CS was a weed out course for getting into the CS department in the first place, along with calculus based physics that potential engineer and physic majors also had to take.
I think these days it’s a bit different in that many schools allow high schoolers to apply directly to the CS department? But then it would be a matter of scale I guess, they usually have clinical professors run these classes because they demand full time attention.
InkCanon
Weed out courses do have various problems. Some of it is regulatory - certain public or public funded universities don't let you eliminate large portions of your cohort. Graduation rate is a part of many college rankings, so there's also an incentive to not fail.
I don't think it's completely wrong. Failing a student after he or she sunk a ton of money into it is really not ideal. IMO it seems really easy to pass prospective students the first few chapters of your CS textbook/lectures then test them as a prerequisite for enrollment, before they enrol. This would be close to free, filter out a lot of would be dropouts and just save money and effort all around.
sansnomme
They need to get rid of the concept of weed out courses. It's bad for learning. If you are paying 30-50K a year for an education, course availability should be a given. Don't use the bell curve as an excuse to deny students an education, or if you are going to use a threshold, use a fixed one, not one that limits by percentage of students. The fat cat admins and professors need to be fired. Too many schools take the students' money and plow it into research and other areas, with zero regard for undergraduate education. "You are in university now, it's sink or swim. Can't make it? Too bad." This attitude is especially prevalent in the state/public unis, especially places like Berkeley where demands exceeds supply. Your traditional private colleges like Dartmouth and Harvard don't have this problem.
addcommitpush
Are there "math weed out courses"?
klooney
At my university, they did, I don't think it's that uncommon.
layer8
Same here. The CS curriculum was theory-heavy (as it should be), and there were purely practical programming courses for the other faculties.
SilasX
Right, there’s the longstanding joke about whether you’re taking real geology vs “rocks for jocks”.
chris_wot
Costs. They don't want to have two courses teaching largely the same concepts when one will do. Short sighted, but that's how they roll.
mnky9800n
This is how physics is now. You teach an intro physics class and you have a billion engineering students all telling you what they actually need to know to be an engineer. But the truth is, it is often impossible to anticipate what a person needs to know for their future. The future is not an easy thing to predict despite recent innovations in AI and machine learning. And a student's current motivation is not necessarily the most important thing to consider when thinking about what they should be currently learning. People often change majors, career paths, etc. This is why I would rather people learn about topics that are fundamental to various fields, such as algorithms or conservation of energy or whatever, than some topical thing.
shmorkin
This exists already at Northeastern. They have a data science major and minor with a much more 'practical' intro sequence that teaches in Python. I actually TA'd for it, and many of the students were business or life sciences majors going for a data science minor. It even came with a 1-credit practicum geared towards specific domains, which students could choose from.
eitally
I live in California and I recently read an article from the perspective of Berkeley's CS department explaining why they don't take transfer credits from high schoolers who took AP CS or AP Stats -- they're just not "real" Computer Science, but rather applied programming.
Even when I was an undergrad (1995-1999) and a grad student (2008-2011) everyone knew that CS was a research science [that happened to turn out people who lucratively employable skills], and not a software engineering program, which existed separately at both schools.
User23
That uses to be called CIS. When I was at Harvard they still took the algorithms class. Yeah, it was the ezmode version, but it still covered stuff like how to build a hash table and a trie.
pseudocomposer
I went to UNC Chapel Hill, and this was already done back in 2005 there. CS major intro classes were numbered in the 400s (401, 402, etc) with a focus on data structures, basics of big-O (later refined in algorithms), etc.
CS 101, 102, etc. were the “non-major” intro CS classes and exactly what you describe here. They didn’t count towards a CS major at all. Neither would non-calculus-based physics classes.
Note that, at least at UNC, in every other department I know of, 400-series classes were generally graduate level. But UNC CS operated a bit differently.
I loved the challenge and the knowledge I gained, but it’s worth noting that CS at UNC was much, much harder than nearly any other major there (Chemistry may be the one exception).
thereisnospork
"Practical python" is undoubtedly useful to a biologist, but I wouldnt understate the utility of an intro to algorithms for technical but non CS majors.
'Algorithmic thinking' more or less doesn't exist in a lot of the classical disciplines with any degree of rigor, so a CS class is the only place a biologist is going to be exposed.
Specifically for utility, there is a very tight mapping between 'how do I search these strings' and 'how do I [most efficiently] design a set of experiments [searching for a a result]'. Both in the literal algorithms as well as the logical framework necessary to extend past trivial examples.
jart
Why can't they just take a class on shell scripting? The whole point of computer science is to automate things, because that's what gives you leverage. If you don't care about understanding computer science, at least skip to the point and enjoy the fruits. We've been using the UNIX shell for 50 years. It's not going anywhere.
antasvara
I majored in biology. A shell script would be a much more cumbersome tool for making a scatterplot, running a linear regression on a csv, etc.
The things that people are using Python for are significantly easier with Python. There are libraries designed to make these tasks super simple, and with the right IDE you wouldn't ever have to touch the shell.
jart
I put gnuplot code and python code in my shell scripts all the time.
Someone like you should think of it as a jupyter notebook that doesn't need a web browser.
LikesPwsh
Relational databases are going to be around for the next thousand years if you want something useful outside of tech.
norir
This is how bad ideas keep propagating.
ocschwar
In the 90's at MIT they solved the problem by having the civil engineering department teach a C coding class to the non-CS engineers.
There was no pretense that it was even remotely appropriate as a CS class.
unethical_ban
<specialty> for non-majors isn't radical.
"Stats for business"
"PE for physicists"
Why isn't "programming for sciences" not a thing?
analog31
"PE for physicists." Touche. ;-)
Dating myself, my college had Pascal for CS majors, and FORTRAN for physicists. The FORTRAN class was math heavy, and we had a higher level course in process control as well, plus we all took the math class in numerical analysis.
When my daughter was in college, it was Java and Python. She took Java. I had suggested to her that she could easily keep up with the CS students, which she did.
I very much favor better training in programming for scientists. Taught by a scientist. The "intro to Matlab" that many students take is really too lightweight. Also, as for languages becoming obsolete, the disciplines that I learned in the 1980s are still of value today even if the languages have changed.
avs733
>PE for physicists
You meant juggling and fencing?
A more pragmatic answer is who’s going to teach it? Someone with weak skills in the discipline? Or someone with weak skills in computing? (This is a glib answer)
Finding people at the true intersection is surprisingly hard, and those people tend to be busy.
In grad school I took and advanced statistics course in the psych department. The concepts were new to me but not to the folks in the discipline. However the math (matrix multiplication) and basic coding were easy for me and very hard for them.
There was only one person in the department who could teach it, other faculty did that type of work entirely as “clients” which just ran tools and code from others.
mywittyname
Who teaches the "<math specialty> for business" courses? IME, it was math professors.
It's not unreasonable for the biology department to come up with the common programming use-cases for their students, then have the CS department build a course around those skills.
My minor was Bioinformatics. The biology department taught foundational course like biology and genetics and the CS department taught the courses on processing data.
sarchertech
It is. When I was in school we had a matlab class for grad students in other departments.
I don’t know why you’d try to throw CS majors and Biology majors looking to cobble together scripts into the same class.
mjdiloreto
The end of an era. This is nothing less than a travesty honestly. The current (now former) curriculum at NEU was uniquely exceptional, and now it will be conformingly adequate. Anyone who complained about the difficulty or lack of "job-market applicability" of the Fundies classes entirely missed the forest for the trees. The point is the design _process_, and using Racket forced this. It also demonstrated the magic that is possible with computer science. The Dr. Racket editor has features that do not exist in any other editor (e.g. visually tracing references, and so much more). The teaching language just got out of the way and let professors teach the essentials of program design, without the burden of language idiosyncrasies. My mind was honestly blown when Olin Shivers coded the Y combinator directly and showed us how to add recursion to a language. It felt like having occult knowledge, and it made me an acolyte to computer science. I mourn the loss of this curriculum for future students, especially considering the premium price tag they now pay.
treyd
Taking Shivers' Fundies I class was mind blowing, even as a student that had been programming for several years already. They should have put him and Barzilay (who I had for PL and then later TAed under) in charge of the curriculum update.
awscherb
I always enjoy seeing Olin Shivers name come up in threads about Northeastern. I had him for Fundies and have many fond memories of his lectures, I was truly inspired. It's no exaggeration to say that class and those lectures helped me find a passion and a career I enjoy. It's a shame they're phasing out Fundies, hopefully whatever they come up with will still be able to have that same impact on young students.
patrickmay
He also wrote the best Acknowledgments section to a manual ever: https://scsh.net/docu/html/man.html
theonething
Too bad there isn't an online version that anyone can take.
WorldPeas
I spoke briefly with Felleisen at the end of this year, and sadly it seems the zoom recordings from the pandemic are lost to time. The course sites will likely stay up but the lectures were where it mattered
nonTop5CSmajor
I'm going to provide a controversial take here as CS grad from a similarly-tiered program: there is a huge chasm between top-4 cs programs and everyone else. The top 4 are obvious: Stanford, MIT, CMU, Berkeley.
Then there are the cs programs of the ivy leagues, not as strong, but usually you have a rich parent or uncle who has already speed-tracked you into a hedge fund, so lets put those aside.
I didnt go to a top-4 cs program and the reality is -- there is no longer a real job market for any cs grad outside the top-4. If it were not for ZIRP it could be there never was! There is definitely not a job market for the sheer masses graduating with cs degrees, and it will take a decade to absorb the fresh graduates.
The curriculum does not matter here, so I think all this discussion is beside the point. No curriculum stasis or change will magically lead to jobs for fresh graduates.
I say this from three perspectives
1. Reality - just ask people if they found a job (ignore nepo-hires, also ignore startup founders with nepo-vc investments)
2. What politicians say. Both Dems and Reps have tacitly (or loudly) noted that local graduates do not cut it. It used to be subtle (https://www.fisherphillips.com/en/news-insights/biden-admini...), but it isnt any longer https://www.bbc.com/news/articles/clyv7gxp02yo
3. How people act. Foreign workers want the jobs more and are willing to do anything and learn anything to get it. My office is 95% non-us workers. They work hard.
dogfishbar
Retired CS prof here (from a below (ok way-below) top-4 program). There is no longer a job market for CS grads outside of top-4? Is this true? I had no idea, as I understood it, CS major numbers are still rising.
Jtsummers
GP is just making stuff up. There are plenty of jobs for CS grads still outside the top-4. Will there be some constriction in the market? Probably, code generating LLMs are getting more popular. But there are plenty of systems that are a bit too important to leave to random code generators.
nonTop5CSmajor
You understood correctly, CS major numbers are still rising.
CS major numbers == supply
I'm speaking about jobs == demand
kcb
Your head is stuck in FAANG land.
WorldPeas
bad faith doomer. One thing you also forget to mention is that non-us workers are just that, not in the US, and that matters now that more places are putting an emphasis on in-person work.
WorldPeas
At the end of all of this I wonder what will become of such great professors like Felleisen, Hescott and Lerner. A real shame
juliangamble
The University that hosted "The Little Schemer" and all its derivatives. Those books were a delight and taught me to think about programming in a way that other languages had not. (Even if I didn't go to that University). https://prl.khoury.northeastern.edu/teaching.html
I had been to a Scheme conference in Washington, adjunct to the Clojure Conference one year, and it was attended by many undergraduates from Northeastern, (and the authors of those books that I got a photo with.)
I have to feel sympathy for those undergraduates I spoke to. They gave a strong feeling, even then (8 years ago), that it was time for the University to move on in language choice.
I had a similar experience in the late 90s when the world was picking up Java, and our University insisted on teaching in Eiffel.
tptacek
Teaching object-oriented design as fundamental computer science seems like it would have been an odd decision for 2025. I looked up the class syllabus, and it seems to have been taught in Java (fine) and makes extensive reference to design patterns (not fine).
geokon
I once asked a professor about this and the answer I got was interesting.
Basically Java and OO and Design Patterns are taught upfront because it turned out this was a huge stumbling block for a lot of people. Bigger than for instance C and pointers. Like it just doesn't click for a lot of people and they end up struggling a lot the rest of the major
So it's not that these are the most crucial concepts, but you want people to "fail fast" and have a sense if they'll succeed in the major within the first year
tptacek
Right, so... just don't teach Java and OO at all? They're not fundamental. Some of the ideas in that course are something closer to discredited.
Later
I edited "a lot of" to "some of"; I was coming on too strong.
wbl
If by discredited you mean incorporated into many of the most used languages as well as several of the hot new ones then yes.
Furthermore part of PLT is learning the past and what worked and what didn't.
dehrmann
This makes sense. You might not immediately need to design a complex hierarchy, but you'll encounter them pretty early in a lot of languages standard libraries.
weitendorf
The first time I tried to learn how to program, I was 12-13 years old and found some video from a university that started by covering Classes, Methods, and Objects.
I watched one or two lectures and it made no sense to me, so I gave up. I had no idea WTF "objects are like nouns and methods are like verbs" was trying to teach me. I just wanted to make my computer do things.
Around 14-15 I started playing around with my TI-84 calculator writing simple programs. The TI-84 used a form of BASIC where I could write a program that took INPUT and plugged it into an equation and print it to OUTPUT, and it felt so much more approachable than the neo-neo-platonist OO lectures I'd watched. From there I gradually started writing more complicated code until I eventually started to get why programmers would define functions to stop repeating themselves, or why they might implement custom types.
> So it's not that these are the most crucial concepts, but you want people to "fail fast" and have a sense if they'll succeed in the major within the first year
I'd instead posit that so many people "fail fast" with OO because they go into their class being interested in programming, but have no idea wtf is even going on with programming and drop it, because they're forced to learn all this inane trivia [0] and write all this boilerplate (define a class, methods, observability, return by value vs ref) they don't understand before they can even run a program. They think maybe they're stupid or not a good fit for programming and drop it.
IMO a better teaching language would be one that lets you opt-in to OO and functional features but also lets you write really simple programs like "take a number, multiply it, and print it". I think that's why Python is so popular these days. It helps that the lack of semicolons/curlies, optional typing, and modifiers [1] removes so many distractions and gotchas that stymie absolute novices.
I also think most CS educators do a very poor job explaining CS concepts to beginners without realizing it. "Methods are like verbs" is absolute nonsense without a moderate to large amount of computer science knowledge to contextualize it. Some of my teachers were actually pretty good, and I also don't remember much acknowledgement that programming didn't have to be this way but that the language/tool was designed that way because that abstraction comes in handy. That'd probably help a lot in retaining students who successfully suffered through their first semester of CS 101 in Java but hated it so much they decided to swear off programming.
[0] Always start your program with "public static void main(string[] args)" ! Don't worry, that'll make sense in a year, or in six years when one day on the toilet at your software engineering job you realize that it really was a static function returning void that took string[] args
[1] Static and Foo& are justifiable, although static should arguably be implicit for a beginner language. Forcing students to learn about final, const, val/var, public/private, etc. early on is just stupid. I never understood why these were actually useful, or had a good reason to use them, until I'd already graduated.
naijaboiler
Brilliant. And correct. The people who created this concepts landed there after going through similar paths like you did (i.e. they started somewhere straightforward but eventually invented these complexities out of necessity.) They understand they "why" behind it.
But somehow, in the curriculum, we expect complete noobs to just get this abstract, non-relatable concepts without any contexts.
mywittyname
There's some irony here. These courses exist because years ago, CS departments made a shift towards "marketability" in their courses at the expense of "fundamentals". So they introduced Java to replace C++ because that's the language companies hiring new grads were looking for. And now OOP and Java are not skills that companies are looking for in new grads. But instead of acknowledging the facts, the departments are lumping Java+OOP in with "fundamentals" and getting rid of it.
I'm sure if we look back further, C++ displaced some other language (pascal?) for exactly the same reason. And likely the same for the language the proceed C++. I'm just not old enough to have personal experience here.
bakuninsbart
OOP is one of the major schools of programming, significantly more widespread than functional languages. The only thing arguably used more is "simple" procedural, but even that is doubtful. Sure, in the 90s people thought OOP was the be-all-end-all, and we've moved away from that, but it still makes complete sense to teach the main different styles of programming. C and assembly are basically covered by a course on computer architecture and OSs, then teaching an intro course on both FP and OOP gives students a broader understanding on how the vast majority of program design works. Follow up courses on algorithms can then have synergy by showing how much easier/safer/faster they are to implement depending on the style.
tptacek
I reject the idea that OO is a "major school of programming"; or, if it is, that school has been largely discredited. I think you're on firmer ground if you claim that ideas from OO still inform modern programming (traits and interfaces being a good example).
I think a lot of 2025 developers would be alarmed to think that a project had started from an object-oriented design perspective.
bakuninsbart
That's a bubble thing. The vast majority of serious software engineering is done in OOP. Java, C# and C++ alone are more than half the market, and then you have Python, Ruby, Kotlin and many more. Even JS has moved largely to (bastard) classes.
Then you have data (growing above average), scripting and partially frontend that are done differently, but they are still a minority of the job market.
mixmastamyk
It's still useful sometimes. Right now I have a functional-style program I think would be easier to write if was redesigned in Mixin-style OOP. Usually happens the other way, but not always.
criddell
What's the problem with design patterns? At its core, a design pattern is just a name applied to a frequently used code pattern. It gives us a common language. I can tell you we are using a publisher-subscriber model and you know what that is without me having to be super specific.
tptacek
The concept of a design pattern is ~fine, and people have done good work applying the concept to specific programming domains (concurrency being the best example I can come up with), but "Gang-of-Four"-style design patterns are just workarounds to the limitations of the languages those authors were grappling with at the time, and are deeply silly in modern code, mostly living on today as an AbstractFactoryFactory joke.
chris_wot
If you are going to teach OO in Java, I fail to see why teaching design patterns is so awful.
tptacek
I mostly point it out as a reason why teaching OO as a fundamental is a bad idea in the first place.
andrewstuart
But OO is a fundamental, even if it isn’t longer gospel.
OO is important and if I’m three years of computer science there’s no time to teach it then you have to ask what you’d heck they are doing.
OO is everywhere and it’s an important software concept and is the right solution for certain classes of problem.
herdrick
Matthias Felleisen, architect (I think) of the current curriculum, explains to a hypothetical skeptical university administrator the virtues of it: https://felleisen.org/matthias/Thoughts/py.html
anonymouscaller
Here is Felleisen's (who I should note is retiring) views on teaching programming at NEU, which is worth a read:
https://felleisen.org/matthias/Thoughts/Developing_Developer...
randcraw
If this strategy infects CS degree curriculums widely, employers looking for more than mere coders will overlook CS majors and instead look to engineers, which is where most computing professionals came from academically before about 1980.
Engineering continues to demand that students learn principles grounded in theory (calculus and statistics and discrete math), rigorous analysis (pattern recognition and learning), and system compositionality (design using reliable components as building blocks). CS curricula largely jettisoned this approach after higher-level languages like FORTRAN and C caught on, and has retained only vestiges of old-school mathematical rigor (basic inductive proofs and algorithmic analysis (albeit dumbed down to O(n) only). In the past 20 years, CS has even given up teaching software engineering (compositionality and reliablility) as a requisite skill area. That speaks volumes about the difference that already exists between CS and engineering.
With the enormous growth in college-preparation for software careers in the past decade, it's little wonder that most students prefer a less rigorous, less formal curriculum, and that colleges will choose to meet demand where it lives. Thereafter, if employers want to hires grads with math or engineering skills, they will turn back to engineering as they did long ago. I expect programs in EE and Computer Engineering will adjust their curricula (or add minors) to fill the intellectual void that 'CS For Poets' will leave.
naijaboiler
I find myself agreeing. As a person with an engineering background that's part of an ownership team, I often find myself longing for software developers with an engineering mindset i.e think of how the components will fit, without breaking user experience.
GeoffKnauth
My son went to Northeastern ('19) and now designs programming languages and can program skillfully in ANY language. I'm glad he went to Northeastern before this announced change. I feel my money spent at Northeastern was well worth it, not because it made him employable (it did), but because it gave him critical thinking and research skills. It would be sad if too many future Northeastern grads were limited to programming in Python or whatever the mainstream language of the decade is. "Batteries included" Python is great for the workforce but it may weaken basic development skills of undergrads. I'm glad I grew up in an era (1970-80s) when what mattered was sitting down with a manual or book and picking up a language in a weekend and, working with your friends, mastering it in a few weeks or months. A favorite memory that still astonishes me: in 1983 Andy Sudduth, one of my roommates and soon Olympic rowing medalist, built his own computer (a Heathkit), and with a paper due the next day, I offered to lend him my Kaypro-II so he could use WordStar. He said, "Thanks, but I'm going to put my own operating system on it [which he developed in his OS course], then I'm going to use my own full-screen editor I wrote, and then I'm going to write my paper using that editor." "You're going to do all that by tomorrow?", I asked. "Yes." And HE DID IT.
ashton314
Hey! Guessing by your handle, your son is Alex, yes? He's done some really cool work. I particularly love his paper "Type Systems as Macros" that he wrote with Stephen Chang and Ben Greenman (my advisor now). Super cool stuff.
ben7799
The new curriculum might be worse but I'm not sure how a 4th year undergraduate should be too sure of themselves when second guessing the department.
My undergraduate degree is from RPI, I have worked with many NU grads, they are often very good, but there have been many eye opening moments for me with them in terms of how different the material they learned was and what was left for graduate school when it comes other the core mathematical fundamentals of computer science. To be fair I've run into engineers from other schools that leave all of this to graduate school too. My first internship I shared a cubicle with a graduate student at Boston University. She was taking a graduate course on algorithm proofs and the course used the same book that we had used in the major weed out class that we had in the spring of Freshman year.
"Program Design" has changed almost as often as popular programming languages during my career. Almost none of those core mathematical fundamentals have changed at all.
treyd
Would be interested on hearing more if you expanded on that point about differences in material.
ben7799
Types of automata and computability
Algorithm proofs around complexity, efficiency, etc..
At least an introduction to the design of languages, parsers, and grammars
Algorithms and concepts in the design of different database designs (not how to use specific databases)
Fundamentals of operating systems and systems programming
Some crossover with computer systems engineering courses. You must know at a basic level how logic gates are implemented, how an ALU is built, and how these blocks are built up to construct a CPU
These are the actual fundamentals of CS and they change at glacial pace compared to languages and design patterns.
nluken
I can't speak to your experiences with others from my alma mater but pretty much all of these things are covered in the core CS curriculum at NU (at least the pre-redesigned one). Systems, PL, Algorithms, Algorithmic proofs, automata, ALU design were all part of required courses, and that's before I include the elective CS courses I took.
One area where NU does fall down IMO is that they offer "combined majors" with CS and other subjects that eschew some of these courses to make room for the other half of the major, which will be an unrelated subject. This offering is a mistake because you do miss out on some key concepts. If you're working with a pure CS major, however, they were required to learn all these concepts.
fn-mote
I fourth-year undergraduate argues against the change like a professor. Honestly, this shows the strength of NEU's current (former) curriculum.
Without knowing the new curriculum, I guarantee you that one of the biggest daily complaints about the old curriculum was the requirements that they write unit tests ("check-expects"). Do you think that's going away? Hahahaha. The laugh will be on students who think they're getting something different because the label on the can changed.
ideashower
It's funny, my friends and I all entered CS around the same time (2010-2013) and I remember thinking it was weird for NEU to be using Racket. Clearly it's successful, and has proven itself to be a great place to start a CS career.
I always advocated a C based language, like C or C++. That's where my program (not NEU) began and I hated it but am grateful. We eventually moved onto Java. Later courses through my 3rd year allowed me briefly work with functional programming. We never touched Python or web frameworks until our Junior and Senior year projects, and even then it was generally voluntary and depended on the project we had proposed for our databases or algorithms classes.
What I do think CS programs should be evolving for are LLMs. Python + ChatGPT are powerful without the user knowing too much of the logic off-hand. That's a problem for new CS students who need to learn the fundamentals of logic, reasoning and programming. I don't know what languages work "less-better" with modern LLMs, all I know is that ChatGPT and Claude work exceptionally well with Python.
I suppose, as long as we keep paper exams, all hope is not lost. Maybe just a little, in my opinion.
thot_experiment
Agreed, LLMs mean that it's MORE useful and important to learn Racket and C, the LLM will help you much more with knowing the specifics of python/js/go/java or whatever human-focused language you end up working with for your job. If you want to be a stellar developer in 2025 you want to learn the things the LLM ISN'T good at, understanding the fundamentals of computer science is way more useful now than it was 5 years ago because the baseline for being good at a language is so much lower with an LLM aiding you.
rswail
None of what you talk about is computer science, it's applied programming.
Computer science is to programming in the same way that astronomy is to navigation.
How can a student "understand" LLMs without the background knowledge of computer science?
Programming courses can teach how to use LLMs, in the same way it can teach how to use Python, Java, language-de-jour.
graemep
I watched the video first lecture in the MIT course on which Structure and Interpretation of Computer Programs is based and it explains "computer science is not a science and is only incidentally to do with computers" and goes on to compare the relationship between CS and programming to that between geometry (which means "earth measurement") and surveying.
InkCanon
I'm seeing many undergrads write LLM code that they don't even understand. It's a travesty. Can't remember the exact saying, but it went like: "AI creates short development times and super long debugging"
dickfickling
I attended Northeastern from 2010-2013. Fundies (the freshman-level functional programming courses) was fundamental (ha) to my growth as a software developer. It taught me how to reason about data and how to design programs (the literal name of the textbook).
I know a lot of students hated it—frankly those were mostly the students that it seemed were only doing computer science programs because they’d heard they could make a lot of money in the field. The “real nerds” all seemed to love it, and now nearly 15 years later those are the engineers in my network who have built the most impressive systems and products.
I guess I’ll have to update my default instructions for recruiters from “automatically interview anyone with a degree from Northeastern” to add “if they graduated before 2025”
WorldPeas
I can't find a person who didn't initially make the fun-dies joke, then later come around to it, myself included. Sometimes you don't realize someone helped you until years later.
jcgrillo
> I know a lot of students hated it
That's a good thing. I don't know whether your assertion about the breakdown between "real nerds" and the other camp is accurate or not, but I think this point stands on its own regardless--learning is hard. It's uncomfortable. It's unpleasant. If it isn't, you're not being pushed hard enough. So what's the point of asking students how they feel about it? Why make strategic decisions based on those data?
I'm genuinely curious, not trolling or anything. It seems completely baffling to me that educators behave this way, and I'd really love to understand why.
hitekker
My take: if a given task is not fun, then it is work. People on average do not enjoy work. They do not like doing work, let alone doing it well. Training kids to do work well, without any pleasure, necessitates heavy accountability enforced by management, which brings a slew of its own requirements and complexities.
Schools already handle many cross-competing concerns across stakeholders (PTA, Taxpayers, Town Government, State Government), so I suspect they would want to reduce their enforcement & oversight load. They'll choose a teaching style that makes everyone happy or at least complacent, even if they know "fun is not learning".
robrenaud
My best learning was difficult, whole mind encompassing, and incredibly fun.
If you can get college students idle brains curiously contemplating the how and why of the subject, that's when the tuition is really worth it.
jcgrillo
I completely agree. The only things I consider fun are also "hard", "uncomfortable", and "unpleasant". Otherwise it's just boring.
Another way to say it is "rewarding".
NickNaraghi
Exciting to see this on HN! As a ‘15 NU alum that took the CS program & third time founder, I support the change.
Fundies 1 and 2 were great, but I have always felt that the amount of delayed gratification in NU’s CS program was much too long and incongruent with the university’s focus on experiential learning. I wanted to get my hands dirty and build something and the whole curriculum felt too academic.
Northeastern CS is world class at compilers and programming language research, so I always understood that the undergrad program would tend to be academic as a trickle down effect.
It’s a spectrum with tradeoffs, so I think balance is key. But happy to see the pendulum swing a bit and think it will be good for new grads, especially as more coding work becomes automated.
I went to Caltech when they were contemplating similar things in the CS curriculum, although the normal curriculum was less radical than Northeastern's seems to be.
There is a tension here that is being understated which is that people of every major now take the intro-level CS class because programming is integral to everything. Teaching algorithm design in that class is not particularly useful to a biologist who just wants to be able to cobble something together to analyze some data (usually in Python). As a result, the non-computer-scientists and non-software-engineers at the school would rather have a curriculum that is more "practical" and directly applies to research (or later class projects) the students might be doing.
Some time not far in the future, we are going to accept that this is not the same thing at all as computer science and give the computer scientists a curriculum that is a lot heavier on math and theory while adding elective or core courses for non-major students on programming. That will end the compromised state that intro CS courses currently sit in. Right now, there isn't enough teaching talent to run those non-core courses (because that talent is earning the big bucks doing something else).