Success in Computing at Dartmouth

Sudikoff, the home of the computer science department

Sudikoff, the home of the computer science department

Four years ago, the College’s Computer Science Department, under the direction of Thomas H. Cormen, adopted and embraced a new vision for the study of computing at Dartmouth. This new vision entailed an overhaul of everything from the department’s introduction sequence, to its major structure, to its scheduling procedure. In the time since, demand for Computer Science courses has increased dramatically year after year, just after the department rolled out its new changes. We spoke with department chair Thomas Cormen and undergraduate advisor Devin Balkcom to find out how they managed it and the ways in which the success of the computer science department might serve as a model for the renovation of other academic departments.

The story begins with an external review, initiated in 2010 as part of a regular Dartmouth process every academic department undergoes, usually on about a 10-year cycle (a policy that originated under President Freedman). The Computer Science Department had last been externally reviewed when it was still part of Mathematics back in 1993, and that review committee had reaffirmed the growing belief that Computer Science should comprise its own department. Sixteen years after becoming independent, Dartmouth Computer Science’s first external review concluded in the spring of 2010. “The review committee reviewed everything we do, our graduate program, everything,” Professor Cormen recalls, “and they said, ‘You have a really nice curriculum for the 1990s.’ They actually said that! So they really wanted us to update the curriculum. And we took that as the swift kick in the pants that we needed to really make some changes.” The department got to work the following fall and determined the changes to be made.

“We wanted to really make sure that we were appealing to a broad section of Dartmouth,” Professor Balkcom explained, “because we think computer science has become extremely important. It’s a field of study that has delivered amazing things every year for the past 50 years, in a really concrete way.”

In an effort to broaden computer science’s appeal to Dartmouth students, Professor Balkcom says the CS faculty took time to ask themselves what computer science was and the type of student they wanted to reach. “One of the things that our department really is interested in is computing behind the computer. We want to think about affecting the world and how we can model real problems in the world in lots of exciting areas that go beyond traditional computer science.”

The final changes fell broadly into three categories: redesigning the intro sequence, restructuring the major, and updating course offerings for content and breadth.

The intro sequence, previously numbered 5 and 8, was switched to 1 and 10. CS 5, taught using the Java programming language, was replaced by a new CS 1 course taught in Python. “Python has its problems,” Professor Cormen notes, “but it’s a good language to start with because it doesn’t have too much scaffolding on top of it that you have to deal with. The whole ‘hello world’ program is just ‘print hello world,’ not ‘public static void main string args’ and so on.” (By “hello world,” Professor Cormen here means the conventional example of a simplest possible computer program, one that merely outputs the words “hello world.”)

But the department didn’t just change the courses’ languages, Professor Cormen emphasizes; it also changed how those languages were being used. “So when you think about the lab assignments in CS 1, we have one that’s a game, one that’s physics, one that’s kind of geography… We’ve done a parallel computing one, we’ve done crypto[graphy]… So what we’re trying to do is show people that you can apply programming to lots of different things. It’s not just about computers.”

CS 8 was also replaced by CS 10, with the Haskell programming language used in CS 8 making way for Java in CS 10. Java is a ubiquitous “object-oriented” programming language allowing for easy abstraction as well as the study and implementation of “data structures,” or strategies for storing information. Java is also the programming language used on all Android smartphones.

The department’s hope was that they could efficiently utilize their resources by maintaining a single entry point into the major and maximizing the quality of students’ early experiences. “We felt like we don’t have unlimited resources here for teaching,” Professor Cormen explains, “and rather than offering two or three different intro courses, let’s offer one and really refine it as we go along.”

Second among the areas proposed for improvement back in 2010 was the design of the major program; the format needed to be altered to make it more flexible and varied. Professor Balkcom says that, back in 2010, the true breadth of computing “wasn’t reflected in our major.” The Dartmouth major at the time was heavy on Computer Science fundamentals like algorithms, computation theory, and operating systems — “all important subjects that are really in the core of computer science and that we still offer in our majors, but if you looked at it, that squeezed out everything else,” Professor Balkcom continued.

Truth be told, Dartmouth’s Computer Science major did not look like much fun for the uninitiated back in 2010. Students were required, after prerequisites, to take Discrete Mathematics, Software Design & Implementation (an infamous CS flagship even today), Computer Architecture, Algorithms, and Theory of Computation. After that, students were further required to take either Operating Systems or Networks, either Programming Languages or Compilers, a high-level Mathematics course from a pre-approved list, one elective, and a culminating experience. Any CS major will tell you that those are not courses for the faint of heart.

“We really thought about what to do with the major,” Professor Cormen recounts, “We had a lot of discussions internally; we looked at a lot of different models.”

One model the department considered that stood out to Professor Cormen was Georgia Tech’s CS major design, in which courses are divided into “threads” with names like “Info Internetworks,” “Intelligence,” “Modeling & Simulation,” and “Theory.” Each of Georgia Tech Computer Science’s eight threads corresponds to roughly two-thirds of a typical undergraduate major, and students are required to complete two of them. One course can count toward multiple threads.

“We looked into [Georgia Tech’s model] and I really liked the idea but we couldn’t quite push it through: we didn’t have quite enough courses, we didn’t have quite enough people to teach the courses,” Professor Cormen recalls, “And of course, Georgia Tech, it’s Georgia Tech — a student takes more courses for a CS major at Georgia Tech than at Dartmouth.”

“One of the biggest points of the redesign of the major was to let students choose their own path a bit and also give really strong opportunities to explore these nontraditional and applied areas of computer science,” Professor Balkcom explains. Dartmouth CS needed to find a curriculum that could provide both foundational knowledge and curricular freedom while avoiding overzealous requirements or strain on the faculty.

Later that year, Professor Cormen made his way to Duke to visit with Owen Astrachan ‘78, a Dartmouth alumnus and Chair of Duke Computer Science’s Undergraduate Program Committee. Astrachan explained Duke’s system and detailed the long process of evolution that created it, which had stretched out over several iterations. When Professor Cormen returned to Dartmouth, he says, he told his colleagues, “This is what they did at Duke. They went through a lot of pain to get there… why don’t we think about this model?”

As an evolution of Duke’s requirements with increased flexibility, Dartmouth’s eventual new CS major required simply the following: intro sequence, two courses from each of three categories (theory & algorithms, systems & hardware, and applied computer science), any three other electives, and a culminating experience.

To help broaden and update course offerings within the three new categories, CS Professor Andrew T. Campbell suggested a new course scheduling policy. Until that point, the department chair had assigned each professor to teach three specific courses each year. Professor Campbell proposed instead that the department chair assign only two courses to each faculty member, so that each professor could choose or create her third. The new policy was an effort to increase the number of courses taught by professors within their areas of expertise, as well as the number of special topics courses offered. It has been well-received by the faculty.

Reactions to all these changes have been very positive. “One important statistic that we’re seeing is that not only are CS 1 enrollments up, but if you look at CS 10 enrollments as a percent of CS 1 enrollments — that’s up,” Professor Cormen explains. This is one reason why Dartmouth is seeing such an influx of people to the CS major, Cormen thinks: “We’re doing a really good job getting them in there and at least getting them into our second course.” Surveys of CS majors have told a similar story, with students responding very well to both the updated intro sequence and the major curriculum changes. Just one year after the CS department rolled out its changes in the fall of 2011, the number of CS majors in the declaring class had doubled. Over 280 students enrolled in an uncapped CS 1 offering last spring, more than doubling the previous enrollment record and forcing the course to be split into two sections. (A professor had to be called in from outside the department for cover.)

While pleased with the changes they’ve made, faculty members acknowledge that larger forces are also at play in these trends. There’s a joke by Andrew Appel, a Chair at Princeton, that the surge in interest in computer science began on precisely the day Lehman Brothers collapsed. But it’s not just for people who want to make money, Professor Cormen insists, “although you can.” People are also beginning to understand the widespread relevance of computer science and the potential implications of incredible progress in technology. “What you think is really cool now,” Professor Cormen jokes, “your grandchildren are going to think is ridiculous. They’re going to say, ‘You carried around a phone? You didn’t just use the chip implanted in you?’  So I think there’s a lot going on in computing, and computation is in all different fields.”

As the Computer Science Department’s intro sequence and curriculum have been overhauled, it has enabled the department to take advantage of accelerating national interest in computers. Even if ultimately the entire enrollment increase is due to national trends, Professor Balkcom notes, “the system changes have been extremely successful in handling the spike in enrollment and keeping students pleased and coming back.”

Still, the popular new program cannot fully ameliorate the impact of rising enrollment in Computer Science classes. “New faculty is a big thing, and everyone in the department knows this,” Professor Balkcom informs us, “Of course that’s true across campus, but we really feel like we have a strong need… There is a difference between a 20-person seminar like I used to teach for my Artificial Intelligence course and the 120 people who signed up last time. Different beast. And there’s a loss. No matter how clever we are, no matter how much we think about flipping the classroom, 120 is not as good as 20. So new faculty is a big thing.”

Students have been assured that the department is expanding. There will be two new professors starting next fall, having deferred their starts for a year: a post-doc and a former researcher at Disney Research Zurich, respectively. The department is also looking to hire into another position for this fall. But it’s important to remember that new faculty hiring doesn’t necessarily help on the front end, at least immediately, because most new professors don’t teach introductory courses until they have gained some teaching experience.

In the meantime, as the Computer Science Department works to be able to hire more faculty, courses have been capped to ensure class sizes do not adversely affect instruction quality. Intro courses, taught with the help of teams of undergraduate “section leaders” who lead weekly recitations and grade assignments, are capped based on lecture hall capacity, while major-level courses are capped between 40 and 70 to allow students to complete term projects and enjoy more personal time with their professor.

There are no current plans to expand the introductory sequence, according to Professor Cormen; the priority now is on continuing to improve the breadth and content of the department’s major-level courses. As it stands, there is room for 540 Dartmouth students to take CS 1 each year, or half of every incoming class.

The Computer Science Department sits at an exciting crossroads just a few years after implementing wide-ranging changes. Professor Balkcom observes, “There is also this question of evaluating continually what our department vision and goals are and where we want to be five or 10 years from now…. Where are we? Where do we go?” But he acknowledges that nothing can be taken for granted: “It’s hard to know what will happen in terms of money and donors and where the priorities of the College lie.”

Michael J. Perkins also contributed to this report.