Northeastern doesn't teach CS like everyone else. Let's keep it that way.
Background
Northeastern is proposing the replacement of its "How To Design Programs"-based curriculum in favor of the sort of Python-based curriculum common at other universities (for example, UMass). This shortsighted decision will substantially harm Northeastern's co-op program (which is already reeling from the current economic crash) by teaching students the exact set of skills that ChatGPT can do best. Given the tech job market crash, one would think that administrators at other universities should be thinking about changing their curriculum to teach students skills that are less easily replaced. It is baffling to see Northeastern considering a change that would put us in the same unenviable position.
About me
I am a fourth-year CS+Math major graduating in Spring 2025. I am currently taking Software Development with Professor Felleisen.
What makes Northeastern CS special
Fundies evens the playing field.
The main advantage of using an explicit teaching language is that in general, most people coming in will not have knowledge of the language. Using BSL means that not even the syntax will be familiar -- within the context of programming. Instead, BSL resembles algebra, which is something that any high school graduate should be familiar with. On contrast, the revised curriculum will have the half of students who already know Python bored out of their minds for their first two semesters of college. The other half with no programming experience are likely to feel intimidated by a substantially more complex syntax and development environment (configuring PyCharm/VsCode, using the terminal, debugger configs). These things have no bearing on a person's ability to design software, or think in a programmatic manner. If we give the false impression that this is what software engineering is, then the only people who will stick with the program will be those with prior experience. This goes directly against the college's stated mission of expanding access to computer science to people who may not already have a background in the field.
We already have this curriculum in the DS track
The data science track already has courses that teach Python. This is fine: data science is not computer science, so they have different tools to solve different problems. Creating what is essentially duplicate classes of a different major should be an indication to administrators that they are making a mistake, and overlooking that the fundamental purpose of a CS degree should not be teaching a programming language, but rather how to approach large problems and solve them in a systematic manner.
Academic integrity
A key factor for any curriculum's success is that the students actually complete it themselves. It is likely that absent the constraints of the design recipe, it will be difficult to construct any assignments that can't be completed with ChatGPT. There was a substantial amount of cheating using ChatGPT when Northeastern used Kotlin for the NUin variant of Fundies 1 last year. ChatGPT has an even larger corpus of Python code, so it would likely be even more successful with this change to the curriculum. This isn't a problem that can or should be solved with more aggressive enforcement or steeper penalties -- it is evidence that what is being taught is not going to be relevant in the workforce and is going to make us first in the line when it comes time for layoffs. Generative AI finding the design recipe challenging should be an indication that Northeastern is on the right track and teaching students skills that can't be as easily replaced.
Intellectual rigor
Python is a scripting language. You write out steps; the computer executes them. This paradigm is not going to be substantially challenging or revolutionary to anyone. On the other, functional programming is less intuitive, but still incredibly important. ReactJS bears striking similarities to Big Bang. MongoDB aggregations are essentially S-expressions. Higher-order functions and first-class functions are useful enough that they have been incorporated into even object-oriented languages like Java. Kotlin and Rust are growing in popularity as replacements for Java and C++. Techniques that may become very relevant in the future, such as formal verification, rely on a strong background in functional programming in order to teach tools like Lean and ACL2s. If students are never exposed to this paradigm, it is going to be substantially more difficult for them to pick up on functional programming when they encounter it in the workplace than it would be for them to pick up Python.