April 29, 2013

An Easier CS Curriculum Isn’t a Better CS Curriculum

Print More

There’s no doubt that since I’ve come to Cornell, I’ve become far better at computer science. But I’ve also noticed an unwelcome trend. The CS curriculum, for some reason, is becoming easier. While the hard courses are still pretty hard, easier courses such as the prerequisite CS 1110 and CS 2110 have been made easier.

Before this year, CS 1110 had been “Introduction to Computing Using Java”, but since then it has become “Introduction to Computing Using Python”.  It’s true that both involve basic instruction in programming.  However, while I certainly don’t know as much about programming languages as the professors who made this decision, I think I’m right to claim that Python is a less “hardcore” programming language.  Among other things, new programmers starting with Python seldom develop an awareness of type-checking and often find it hard to believe that you can’t just “run” your program.

As a result of changing CS 1110, CS 2110 assumes no prior experience in Java. Before, students taking 2110 were required to know basic Java so that they could focus more on things that actually matter, like data structures, algorithms and software engineering practices.

But since students are now coming from a Python background, the course staff has to spend a lot of time helping  students transition from a dynamic-type language to a static-type language. This isn’t a trivial transition.

Many of the 2110 T.A.s that I know have commented on how hard it can be to explain to some students why, for example, a class can probably be useful. It’s worrisome that students in the spring in general seem less prepared than the students in the fall, a sentiment echoed by many TAs who have interacted with both groups.

So if these courses are supposed to be introductory, why isn’t it a good thing that they’re easy?

Last semester, I tried to learn the most basic music concepts, but I failed miserably. I left the class relieved, knowing that music wasn’t for me and glad that I’m pursuing a career in computer science. That’s exactly what I wanted to get out of an introductory course.

In the same way, while I love to see students give computer science a shot, it’s not going to be for everyone. The point of an introductory course, in my opinion, is about separating the students who will enjoy and do well in this particular subject from those who won’t. In this sense, CS 1110 and 2110 are failing. They just aren’t hard enough, and they’re wasting the time of students who won’t end up majoring in computer science.

Let’s not be afraid of making our introductory classes hard. Let’s not be afraid of telling students, directly, that they aren’t likely to enjoy a particular subject. After all, we want to help everyone discover his or her true passion. By making something seem easier than it really is, we’re not doing anyone any favors.

Original Author: Derek Chiang