In Defense of Fundies

by Owen Duckham

While I had heard rumors of a potential curriculum change for a large part of this semester, now that there has been some more concrete information available, I feel the need to write this blog post.

To be clear, I strongly oppose these curriculum changes. In this post, I am referring to the proposed removal of Fundies I, Fundies II, OOD, and Software Development (CS2500, CS2510, CS3500, and CS4500 respectively) from the curriculum. I believe that the How to Design Programs (HtDP) curriculum is invaluable to students, and these changes would undermine both the quality of education and the academic rigor of the computer science program at Khoury College.

In this post, when I refer to the fundies curriculum I am referring to the core sequence of classes, Fundies 1–4 (F1, F2, OOD, swdev), in which principles of designing programs is progressively taught.

I will outline my reasons for this stance below, and I will update this post to refine my thoughts and as I gain more information.

Why do I care

I'm a second-year computer science major. Last year I took accelerated section of CS2500 and CS2510, as well as CS3500 over the summer. I am currently taking CS4400 (Programming Languages) and plan to take CS6410 (Compilers) in the Spring. I would also like to take CS4500 (Software Development) in the future but that will not not be possible if the proposed changes are implemented.

I have also been a Teaching Assistant for CS2500 for the Spring, Summer 1, and Fall 2024 semesters, and will likely be a TA for Logic and Computation (CS2800) in the spring. This gives me insight into how a wide variety of students benefit from the curriculum.

It's not about Racket

The Racket student languages used in Fundies 1 are in no way the focus of the course. That isn't to say that having specially designed languages for the curriculum isn't useful but its not a game changer. The current fundies curriculum could certainly be taught in Python, albeit with more you'll learn what this actually means later, but still manageable. Arguably, using a more industry standard language would worsen the experience for beginner programmers for reasons I think Matthias Felleisen articulates well:

"A compiler and the run-time system articulate error messages under the assumption that the programmer knows the entire language... Reducing the size of the language improves its error messages."

Rather my main concern is about the motivation behind moving to python-like languages—especially if intention is to introduce a "industry relevant" language rather than truly improving the curriculum. The fundies curriculum teaches something much more valuable than a language, it teaches you how to model data, reason with it and solve problem with it, and how to do so in a well-designed fashion. There is nothing more relevant to the industry than these skills. Once these fundamentals are mastered, picking up more "relevant" languages become trivial.

AP Credit

Along with the potential annihilation of the current core CS curriculum, there are proposed change to allow AP Computer Science A credit to count towards the first class of the new curriculum. This in itself is highly alarming, to put it nicely the APCSA curriculum barely scratches the surface of what the current fundies curriculum covers and allowing it to take place as a substitute either means that:

  1. The new curriculum will be greatly watered down, reducing the depth and rigor that have made the current program so effective at preparing students for both academia and industry.
  2. The majority of incoming students will miss crucial foundational concepts in design, abstraction, and problem-solving, leaving them unprepared for advanced courses and professional challenges.

This is by far my biggest concern. I have faith that our professors are able to still write new curriculums that still use systemic design, however if we are allowing these courses to be easily skipped, students will not benefit.