Live data from Hacker News

Northeastern's redesign of the CS curriculum

huntnewsnu.com

91–100 of 189 posts

Re: Northeastern's redesign of the CS curriculum

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

Re: Northeastern's redesign of the CS curriculum

#92
post #35

I’m wondering if neighboring competitor schools who offer python classes are the reason for the change since more students would actually consider attending a different school due to having a stronger post experience and skills gained.

I don't think Northeastern is worried about attracting applicants, they were the 8th most applied-to school in the US last year, with nearly 100K applicants. And CS is one of their most popular programs. I think the more likely cause is pressure from their co-op program's partner employers to make the intro curriculum more 'practical' (i.e. outsourcing training from the employer to school). It's beneficial in the sho…

My biggest worry is that maybe the co-op program for CS became a "low interest rate" phenomenon over the years from ~2009-2020 and now they don't want to take gambles on students that likely need to grow into the role. It's not enough, and they treat it like a regular internship program.

Re: Northeastern's redesign of the CS curriculum

#93
post #62
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).

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…

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.

Re: Northeastern's redesign of the CS curriculum

#94
Skimmed it quickly and saw it taught Racket to teach programming design.

I've worked at a coding bootcamp in 2017. And I have to say, I was a bit jealous. Where I was learning through methods at university that were a bit quaint, my students learned JS with the latest frameworks. And sure, you can argue whether the length of 3 months is enough, but they were surely getting a better education. What they learned in 3 months, took me at least 6 months to a year in terms of how useful it is.

The thing is, especially as a beginner, learning any programming language will give you similar difficulties (glossing over some nuances). So why not just learn a practical one?

I think once a student has had a practical programming course under their belt, only after that should more esoteric languages come to showcase certain concepts. I believe that they'd be more motivated to learn them as they're more into the groove of programming.

And this is coming from someone that has programmed 2 years in Pharo.

Re: Northeastern's redesign of the CS curriculum

#95

i'm a dropout just do horrible coding for fun can anyone explain why CS programs are adamant about not teaching on the job skills? like databases, web, embedded, security plus theory

Pretty much every class that focused on "on the job skills" when I went to university (2008-2014) either at my university or from looking at coursework available elsewhere (I might have considered jumping universities for non-educational reasons) was either outdated or useless within few years. If I were to redo it I'd prefer to have even more "esoteric" tech involved and more theory and fundamentals.

And not because they were outdated and useless when the course started, though some did have issues. I think the least outdated "on the job applicable" material is Java fundamentals, and that's because you can still write Java 6 basic stuff in current JDK - a lot of the interesting and powerful stuff we learnt is no longer available in JDK though.

OTOH, fundamental principles - algorithms, including set logic in RDBMSes, low-level programming (which to annoyance of some was done in SPARC assembly or random assembly designed just for given assignment), robotics using programming stack and parts that were never seen outside university, various in-depth studies on different theoretical or scientific areas - all of that is material I use to this day in many different jobs when it allows me to understand and reason in ways I couldn't before I joined university - and I already "knew" how to program then.

BTW, within the 5 years I spent at university, "javascript on the server" turned from niche use cases within some stacks, usually running Mozilla Rhino, into complete new ecosystem that was surviving its first big fork and was becoming used in big projects, Android went from one phone "who knows" to pretty mature platform holding half the world with 64bit CPUs, tablets and first wearables, similar evolution for iOS, in fact arguably over my entire university time we had explosion of "you can now make mobile apps easier" to "mobile app developer is lucrative" all the way to "you're probably not going to make much money as solo developer anymore".

Re: Northeastern's redesign of the CS curriculum

#96

Earlier quoted context omitted.

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

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…

Are there "math weed out courses"?

Re: Northeastern's redesign of the CS curriculum

#97

Skimmed it quickly and saw it taught Racket to teach programming design. I've worked at a coding bootcamp in 2017. And I have to say, I was a bit jealous. Where I was learning through methods at university that were a bit quaint, my students learned JS with the latest frameworks. And sure, you can argue whether the length of 3 months is enough, but they were surely getting a better education. What they learned in 3 m…

What?

Re: Northeastern's redesign of the CS curriculum

#98
>we should not teach something just because it's a useful skill, we should teach our favorite dogma that we believe is totally more useful than a system built up through decades of practical experience, guys really.

At least "Racket" is aptly named.

Re: Northeastern's redesign of the CS curriculum

#99
post #65

Earlier quoted context omitted.

I mostly point it out as a reason why teaching OO as a fundamental is a bad idea in the first place.

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.

Re: Northeastern's redesign of the CS curriculum

#100
post #75

Earlier quoted context omitted.

It's stunning to work with fresh out of college cs grads and... having to take 10 minutes to explain how git works, why we use source control, and then every day fielding questions about git, merges, and fixing merge conflicts etc as the get up to speed. I realize there is a learning curve as someone fresh out of school but also there should be some basic job training using free versions of tools like git and sql. Th…

These are tools! You don't go to university to learn how to use git. Besides, tools that come and go. You can pick these up along the way. You can make their use a part of coursework, but this is not what you go to university to study! That's the point. CS curricula are supposed to teach you deep skills and principles, not how to fiddle around with git.

If your CS degree never requires you to write a program complex enough to warrant version control you should get your money back. I agree that the theory is more important and tools should not be focused on, but exercising the theory you have learnt is extremely rewarding.
Post reply on HN