Live data from Hacker News

Northeastern's redesign of the CS curriculum

huntnewsnu.com

111–120 of 189 posts

Re: Northeastern's redesign of the CS curriculum

#111

Earlier quoted context omitted.

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…

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 pro…

Doing weed out courses on purpose I think is elitist and unnecessary, but computer science does require understanding of some hard topics. Linear algebra, theoretical computer science and the like may have very high failure rates, but are a necessary pre-requisite to become a computer scientist.

Re: Northeastern's redesign of the CS curriculum

#112
post #99

Earlier quoted context omitted.

I disagree? The point of a CS degree isn't to prepare you for the 20 years of stale J2EE code your first job is going to throw at you, and object-oriented design is pretty out of fashion.

>> and object-oriented design is pretty out of fashion OO isn't debunked and its not out of fashion. All that's happened is that it's no longer gospel that "the only way to program is OO". I write code that has all sorts of styles and approaches that fit the task at hand and sometimes the right tool for the job is OO. I get the sense you're saying that OO has been proven to be hokum and no one should learn it or do i…

You’re assuming an exaggeration of their point. The question at hand is whether OO is so fundamental as the backbone of a computer science 101 course. This doesn’t preclude much of what you said.

Re: Northeastern's redesign of the CS curriculum

#113

Earlier quoted context omitted.

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…

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…

Ideally people who can't handle the course should get filtered out before being accepted to the college, so they don't waste any money. But since it's impossible to filter reliable at that stage, surely it makes sense to also filter early on in the course. (from the perspective of the student. If the college wants to take more of their money they could still direct them to a different, easier/more suitable subject).

Re: Northeastern's redesign of the CS curriculum

#114

Earlier quoted context omitted.

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 pro…

Doing weed out courses on purpose I think is elitist and unnecessary, but computer science does require understanding of some hard topics. Linear algebra, theoretical computer science and the like may have very high failure rates, but are a necessary pre-requisite to become a computer scientist.

I wouldn’t say linear algebra is a necessity to being a computer scientist. At least, not the full linear algebra content. Knowing matrix math is enough.

Re: Northeastern's redesign of the CS curriculum

#115
post #99

Earlier quoted context omitted.

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.

I disagree? The point of a CS degree isn't to prepare you for the 20 years of stale J2EE code your first job is going to throw at you, and object-oriented design is pretty out of fashion.

OO is one of many paradigms to take while programming. Between functional programming, C-style subroutine programming, and OO, or the more recent amalgamations of those, you pick whatever suits your problem best. It's perfectly useful to teach, even if you dislike OO programming. I don't like writing for outdated programming designs like Scheme or LISP either, but that doesn't mean they don't have anything useful to teach.

OO is out of fashion just like blockchains and NFTs are out of fashion, and the same way AI will fall out of fashion in the future. The huge hype around it will die and what's left covers the few useful scenarios.

Re: Northeastern's redesign of the CS curriculum

#116

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 ju…

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.

Re: Northeastern's redesign of the CS curriculum

#117
post #99

Earlier quoted context omitted.

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.

I disagree? The point of a CS degree isn't to prepare you for the 20 years of stale J2EE code your first job is going to throw at you, and object-oriented design is pretty out of fashion.

What programming job are you getting in the next few years that understanding oo isn’t important?

Inheritance, polymorphism and encapsulation inform every major professional programming language and framework (except c). Even go which in many ways is active response to oo uses most of those concepts extensively. One major challenge of people programming in go is how to adapt the familiar patterns to it.

Now I’d probably not teach the whole GoF as an exercise in cataloging patterns but teaching a few of the most common while showing the concept of patterns (probably the least well understood concept in development) seems sensible.

Re: Northeastern's redesign of the CS curriculum

#118
post #99

Earlier quoted context omitted.

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.

I disagree? The point of a CS degree isn't to prepare you for the 20 years of stale J2EE code your first job is going to throw at you, and object-oriented design is pretty out of fashion.

People are still writing OO code today, they way the industry stands it looks like people will still be writing OO code for at least the next decade. Maybe the next 20 years, even.

I understand that not every developer is a big fan of OO but that doesn't mean we can ignore it.

Re: Northeastern's redesign of the CS curriculum

#119
post #56

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).

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.

Re: Northeastern's redesign of the CS curriculum

#120
post #91
post #53

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 oth…

Would be interested on hearing more if you expanded on that point about differences in material.

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.

Post reply on HN