Hacker News new | ask | show | jobs
by dawnofdusk 321 days ago
I think the solution is to have, as is the case in math/physics, an honors intro CS sequence compared to the regular intro CS class. The latter would be the recommendation for all non-CS majors, and the former would be for CS majors. I've always thought that those who are focusing on more vocational training should not be in what is called the CS program, maybe there are other majors called "software development" or "data science" or the like. Undeniably most prospective CS students are not aiming to go into academia, but we shouldn't adapt to this majority and then leave behind those who do want to do more academic things.

My background is in physics, where this sort of dual-track curriculum is well-established, and the physics taught to physics majors is very different from that taught to engineers. Unfortunately the difference is often boiled down to rigor or difficulty (and this will be reinforced if it's physics professors that have to teach both of the tracks), but in reality it is a value-neutral split which is based on pragmatism. CS should have one too.

3 comments

We did end up making this switch later on due to growing class sizes anyway. That certainly helps focusing the class. We ended up focusing on computation more for the CS sequence and on the nuts and bolts of getting a program working for the non-CS sequeunce.

But my rationale for moving to Python still stands. In fact, I know several brilliant ML researchers who write code that would never come close to making it to production. The things we optimize for are different. Production code in a tech company needs to be readable, maintainable, explainable, and scalable. An ML researcher's code needs to support their research. These different perspectives are still why I think focusing on a wider appeal language like Python over something like Scheme still makes sense.

FWIW our CS program mandated a programming languages class and the first third of the class was taught in Scheme.

>FWIW our CS program mandated a programming languages class and the first third of the class was taught in Scheme.

This is important but doesn't replace having a dual-track intro sequence. The reason one has "physics for physics majors" isn't because physics majors need to learn some of this complicated stuff ASAP. They definitely don't, and I don't doubt students in the program will eventually get a well-rounded education. But it's a good idea to give incoming students a taste of what the field is like as soon as possible, so they can see if they like it or not. (Essentially it's a "weeder", but for the students' sake so they can self-select on interest and not just instructional staff's sake of being elitist.) Probably some (but not all) professors/postdocs/grad students would scramble to teach the more advanced sequence as it is likely more engaging for them than the current intro curriculum.

To be clear I don't think an advanced intro CS can't be in Python on principle, but such a class probably introduces multiple languages to some degree: they could be toy assembly languages or real ones in addition to the majority of the course content in Python.

Similarly for math. I had to take a linear algebra class as a math major that was mostly populated by engineering majors and it was painful (given that they were allergic to proofs).
I could never understand the proof allergy. To be honest I find it was easier for me to perform well in proof based classes rather than “here’s an algorithm, apply it” type. The main reason was that it was harder for me to make mistakes while constructing a proof in comparison to applying an algorithm and making calculations by hand.

I acknowledge high schools are notorious in omitting the introduction to proof techniques but it’s a one time hurdle and you end up with a good stuff in your toolbox.

Brown CS actually does this! Accelerated Intro to CS is taught in Racket, I believe.