The CS department Branches Out
Anne Rogers and Todd Dupont Start New Undergraduate Class
Computers often seem to work like magic to those who haven't spent their lives studying computer science. For Anne Rogers, Associate Professor in Computer Science, this is a major problem. How can a person, she asks, be well educated without understanding computers?
"Computers are everywhere and its not a good idea to think of them as magic. You can't walk ten feet without passing one," she points out. But her thinking was not reflected in the undergraduate course catalogue. The courses were not geared toward students who were simply curious about computer science and how it related to them, or their fields of study.
So she and Todd Dupont, Professor in Mathematics and Computer Science, teamed up to spread the computer science love and show students how fun computing can be.
The question was how to ensure access to computer science classes to non-computer science majors, and with the pair's enthusiasm for teaching, the answer became clear: a new class.
Rogers and Dupont explained in their course proposal that computer science is increasingly important to students in both the physical and the social sciences and that all undergraduates deserve quality computational instruction geared towards them, but more importantly, as the eager professors can't resist pointing out, the fun that comes with computing.
The result is Computer Science with Applications 1&2 (CMSC 121-122), a two-course series beginning fall quarter taught jointly by Profs. Rogers and Dupont. The new course will focus on introductory-level computer science but will draw heavily on applications from other fields such as economics, physics, and mathematics.
This new class hopes to fill what the professors considered a gap in the computer science course catalogue. Previous introductory classes were either courses for majors in computer science, or basic classes that didn't cover enough material to proceed with the curriculum.
The professors feared that the lack of an appropriate introductory course would dissuade students from pursuing computer science, especially students whose focus is in other fields or those intimidated by a course filled with CS majors. The student that will be near perfect for the class, says Rogers, will be a student who hopes to apply computer science in their own field.
"The goal is, on the intellectual side, to help [students] think through computations and help them understand that computer science isn't just programming and that there are real ideas that are easy to understand. On the computational side, there are students like economics students. We want to have them give robust answers in a reasonable amount of time; to say, oh I have to do this thing for a class, I'll just write this program, " says Rogers.
The course will teach topics from programming, computational math and other areas in computer science. The computational math component, Dupont's specialty, will feature approximation methods, monte carlo techniques, topics from linear algebra and differential equations. Rogers will take up the rest of the teaching, dealing with the programming topics, the theoretical computer science topics, such as computation theory and networks, and computer architecture.
One of Rogers' hopes is to elucidate what goes on inside a computer. "A lot of students have no idea of what goes on beyond their browser and desktop," she says. "When you explain what a processor actually does, it demystifies it."
Instead of using the Scheme programing language, as done in current introductory courses (CMSC 151, 161), the programming component of Computer Science with Applications will primarily teach the Java programming language, but also introduce the C programming language.
“The syntaxes [of Java and C] are similar. Java has interfaces and toolboxes and so forth that make it easy to use and we'll be using things that draw pictures, things that make sound, as well as things that put out text,” says Dupont.
Dupont promises that the assignments will be interesting, citing his four decades of teaching experience as proof that he knows how to write engaging assignments.
The weekly assignments primarily rely on applications from biology, economics, mathematics, physics, and even the social sciences. A typical problem might manipulate matrices to rotate images, or, as Rogers puts it, color "really cool pictures" by finding roots to polynomial equations.
One computational biology problem compares the amino acid sequences in DNA chains to see how similar the chains are.
Rogers explains: "You can do a similarity score and ask if they are the same at every point. But a more useful score is how many insertions or deletions I will have to do to get them to same. I.e., you have a gap, or a replacement. So you can score how big is the gap, how much are you willing to throw out to eliminate the gap. It's a real problem. It's not that hard, once you understand a string."
The professors hope that the course will work best for scientifically-minded, and not neccessarily mathematically gifted, students who have had little computer science experience, but, warns Dupont jokingly, “This is intended for people who aren't afraid of programming.”
Despite being an introductory course for non-majors, the course fits in with the computer science undergraduate degree program. Upon successful completion of Computer Science with Applications, students will have learned enough of the C programing language, data structures, and machine architecture to competently continue the computer science curriculum without having to retake another introductory course (CMSC 151-152 or CMSC 161-162).
For those students interested in computer science studies but concerned by the workload demanded by classes intended for students majoring in computer science, Computer Science with Applications offers a terrific compromise. The professors plan on working hard to keep the demands of the course down to a reasonable burden, unlike what they do with their honors sections.
Says Dupont, “With Honors [students], I don't mind pressing them, whereas in this course, it's University of Chicago, so of course they're going to work, but it's not designed to be a sort of macho class where only few will survive."
And because Computer Science with Applications teaches rigorous quantitative thinking, the class fulfills what many think of as the College's Core mathematics requirement. “What CS does for students is that it ... provides a way of thinking that might not come to until later because it involves precision of thought, precision of planning," explains Dupont. "You can't write a program if you're not precise. Programs have to be done in a way where things fit, so there's a pattern of thought which is useful, which is why courses in CS are allowed to fulfill quantitative reasoning part of the Core.”
The idea to create the class was conceived out of a love for computer science and a desire to share that enthusiasm with as many students as possible. “We are enthusiastic and we'd like to teach a lot of people,” he says. “Both Anne and I are enthusiastic about computing. We like it. We write code, we like doing it, we think its useful and we would like to share our enthusiasm with other people."
"It's very empowering for the students to learn how to program," says Rogers. "It's really cool when they can do things that they haven't before. I really like that. It's very nice to have students get the chance to figure out whether computing is interesting for them."
She adds that she has a suspicion that they will in fact discover that computing is interesting and maybe even fun.

