On a university level, what makes for a good computer science curriculum?
One of the most common career paths for a computer science major is as a software developer. An effective university curriculum must prepare computer science students with the skills needed to be successful in their careers as developers.
The field of software development, however, changes faster than the Boston weather. A curriculum focused on current industry trends risks becoming obsolete before students even graduate. So how can Northeastern teach students skills that will stand the test of time? The university, which recently announced it would completely overhaul its curriculum, must carefully and thoughtfully consider this question.
A good computer science curriculum must emphasize fundamental principles that are widely applicable, enabling students to easily adapt to new technologies in the field they are entering. It must teach students how to think about software and how to problem-solve.
This is exactly what Northeastern’s current curriculum strives to do. Fundamentals of Computer Science, or “Fundies,” as it is popularly known, teaches systematic program design through the design recipe, which provides a consistent formula for tackling unfamiliar problems. The design recipe breaks down a problem into small, achievable steps, of which the first few require students to think carefully about the problem before writing code to solve it. Core classes such as Fundies 1, Fundies 2, Object-Oriented Design and Software Development focus on training students to reason about code, rather than to mindlessly write it.
Of course, the curriculum is not perfect; no curriculum will ever be. But students’ criticisms of these courses often fundamentally misunderstand their purpose.
I have often heard computer science students complain that Fundies 1 teaches Racket instead of a “useful language” like Python. But the point of Fundies is not to teach Racket — it is to teach program design skills that can be applied using any programming language. Racket is just the tool it uses to do so. A student who does well in Fundies will have no difficulty applying the same skills to Python or any other language. And with how fast the tech industry changes, is it really worth having a course that teaches just Python when tomorrow, some other language might dominate the industry? Our current curriculum focuses on timeless principles rather than fleeting trends.
But now, during the worst tech job market in over two decades, Khoury College of Computer Sciences plans to abandon the approach that has consistently equipped its graduates for success. The college’s proposed overhaul will phase out Fundies 1, Fundies 2, and Object-Oriented Design, replacing them with entirely new courses.
The new courses will primarily teach Python, and the college claims it is an added bonus that Python “is currently the most requested language by co-op employers.” But we should not teach a language simply because it is currently popular in industry — we must choose a language with real pedagogical merit. Racket was chosen because it has “teaching languages” that can gradually introduce features as students are taught the relevant design principles. While the new curriculum begins in Pyret, which is similarly designed for teaching purposes, it will quickly transition to Python in the first course. Python does not have anything similar — students must be taught complex features upfront, before they learn the design skills to cleanly and effectively use those features.
Additionally, Khoury said students will be allowed to place out of the new courses with AP Computer Science credit. The current curriculum does not allow this for a good reason: The AP courses do not teach systematic design skills and thus are not equivalent to our introductory courses. Fundies 1 and 2 provide practice applying design principles to small problems, preparing students to design larger pieces of software in Object-Oriented Design and Software Development, as well as on co-op. If students are allowed to skip the introductory courses, they will struggle to succeed in more advanced courses and in their career.
Taken together, the announced changes make it clear that while Khoury may pay lip service to the design recipe, it is not committed to maintaining systematic program design as a central aspect of the curriculum. This is a grave mistake. The program design skills that our current curriculum emphasizes are “what distinguishes a garage programmer from a serious software developer,” in the words of the Fundies 1 textbook. If Khoury abandons its design-oriented curriculum, it will fail in its duty to properly prepare students for their careers as serious software developers.
It seems a major impetus for this change is a desire to make the core curriculum easier. I know one professor who has been telling students that the college wants to reduce the number of students who withdraw from Fundies 2 and Object-Oriented Design. While this is an understandable sentiment, it would be a mistake to remove the most important parts of the curriculum to do so.
As a former teaching assistant, or TA, for Object-Oriented Design, I have seen many students struggle through the class. But I have also seen those same students become better programmers because of what they learn in that class. The “code swap” at the end of the semester, where students are required to build upon other students’ code, is one of the assignments students struggle most with — but it teaches them how to work in a codebase written by someone else, which they will have to do throughout their careers. Additionally, for many students, the class provides their first experience working on a large software project, much like those they will work on during their co-ops. Watering down the curriculum would not benefit these students. Is the purpose of a university to hand out grades or to educate students?
At the very least, Khoury administrators should consult with experienced teaching assistants about any planned changes to the core curriculum. TAs have a unique perspective — we have taken these courses ourselves and have also helped other students succeed. We know firsthand what works, and we can help ensure the core principles are not compromised while allowing for changes that benefit students.
I love Northeastern and have never regretted my decision to attend college here. But if Khoury abandons the valuable principles of the current curriculum, I will not be able to recommend in good conscience that prospective computer science majors apply here. I will not be able to recommend in good conscience that employers hire software developers from here. If Khoury makes these changes, it will be the beginning of the end of Northeastern’s computer science program.
Derek Kaplan is a fourth-year computer science major. He can be reached at [email protected].