January 2003
Utter Anxiety
The Soul of Programming
E Line
Sports
Q&A
Classes
From the Field
First-Person
Letters
Huskiana


THE SOUL OF PROGRAMMING

TRUSTEE PROFESSOR MATTHIAS FELLEISEN—PHILOSPHER, STEAMROLLER, ICONOCLAST—TEACHES COMPUTER PROGRAMMING. WITH A PASSION.

By Karen Feldscher

Matthias FelleisenKathi Fisler calls herself a groupie. Andrea Mutz-Mercier says she’s “absolutely a convert.” Viera Proulx is a self-proclaimed minister of propaganda, backing ideas so compelling she feels like she “died and went to heaven.”

They’re not talking ’bout a revolution.

They’re talking about a new way of teaching computer programming.

You read correctly. Maybe programming isn’t the stuff that typically kindles great passions, but Matthias Felleisen, Northeastern’s Trustee Professor of Computer Science, seems to have found a way of making people feel emotional about codes.

Codes. Not the stand-up-and-cheer footage in movies like The Lord of the Rings or Spiderman. Not the rapid-fire calculations that send jumbo jets soaring. Not the spooky virtual realities of computer games. Programming’s outcomes are widely acknowledged as plenty exciting. But the process itself? That thrill has been a harder sell for students, especially those who aren’t dyed-in-the-wool tech-weenies.

Yet, somehow, Felleisen has found a way of getting his students as psyched about the programming as they are about the product. And his startled colleagues are taking notice.

So who’s talking the Felleisen line? Well, Fisler is an assistant computer science professor at Worcester Polytechnic Institute who was also a postdoctoral researcher for Felleisen when he taught at Rice University. Mutz-Mercier is a freshman, one of Felleisen’s current students.

And Proulx is a College of Computer and Information Science colleague, who gushes when she describes Felleisen’s efforts to overhaul the way introductory computer programming is taught. Asked if she’s enjoyed working with him since he came to Northeastern a year and a half ago, she smiles broadly.

“That’s an understatement,” she says. “He’s not just a researcher; he’s not just an educator. He’s a visionary.”


Programming as “a source of joy”

What’s so original about Felleisen’s teaching methods? And—more to the point, perhaps—why do people find them so intriguing?

In a nutshell, Felleisen has turned the traditional way of teaching programming on its head. Typically, students learn the ins and outs of current programming languages first, then slowly, step-by-step, use those languages to create programs. Felleisen’s approach gets the students programming right away, using a pared-down version of a seldom-seen computer language called Scheme.

Why is this so big? Several reasons. Since Scheme is easier to learn than most computer languages, students aren’t getting bogged down in a particular complicated syntax. That means the focus can be on turning them into analytical thinkers, able to program in any language. As an added bonus, the emphasis on basic analysis draws a broader range of students to the field of computer science, making it a more accessible, less techno-nerd domain.

And by teaching so students don’t just learn the languages, they actually “get” how to program, Felleisen hopes to dramatically improve computer programmers’ skills. Better programmers mean better software. Better software means better-functioning computers. Ultimately, computer users could save time and money, and have far fewer headaches.

But Felleisen has an artist’s soul, and he wants something less pragmatic, too. He wants students to see, as he does, that programming has “incredible intrinsic beauty, comparable to that of fine arts or music,” and can be as creative an enterprise. “I believe every single person on the planet has some creative streak,” he says. “They all want to express themselves somehow. They do it by dancing and by painting. For heaven’s sake, why not by programming?

“To help people enrich their lives with an understanding of that beauty,” he says, “is much more a driving force for me than the utilitarian aspect.”

Heady stuff. Still, what wows most who use Felleisen’s programming pedagogy—he calls it “TeachScheme”—is simply how well the step-by-step approach works with students.

Take Annette Walter, eighth-grade teacher at the Bay Area Christian School in League City, Texas, who started using Felleisen’s methods after attending one of his summer workshops for high school teachers. Her students, she wrote him, “cannot wait to come to class to find out what they will learn next! I have had to distribute the notes lesson by lesson since most of them [want to] work way ahead. . . . I have had rave reviews from every single parent who has a child in my class. This class is making [students] think and problem-solve. . . . I have never taught a programming class where there was so much enthusiasm involved!”

Or talk to Daniel Matysiak, a Northeastern sophomore who tutors freshmen in Comp 1100, Felleisen’s intro computing and programming class. Matysiak knows a lot of students whose first programming experience was learning Java, a dominant programming language. And many wound up confused, he says, “really having no idea how to go about solving even the simplest problems using computers. They left the Java course without any understanding of programming, maybe even more clueless than before they started.”

Felleisen’s curriculum, Matysiak thinks, “is a lot better at teaching students how to approach programming problems and solve them. I think the students are getting it.”

After University of Utah humanities professor Terry Butler took a workshop based on TeachScheme, he wrote Felleisen a fan letter, calling the experience “transformative.” Butler says he left “convinced that programming relies on ways of thinking that are not prominently (if at all) available in other disciplines . . . and they can be learned by just about anyone willing to work hard. I regard learning how to design programs as a fundamental discipline, just like mathematics, the physical sciences, reading, and language study.

“To me,” Butler adds, sounding like a true acolyte, “programming is a source of joy . . . deeply, wonderfully satisfying creative work.”


Learn the basics, not BASIC

Felleisen in the classroomFelleisen’s students “get” programming because he teaches them to solve problems on their own, using what he calls a “design recipe,” a six-step process for writing directions for the computer. Students list all the relevant information they have, outline the problem they want to solve, give examples, write an organizational chart, and use the chart to solve the problem. As a last step, they must validate their work.

Even in class, the design recipe structures the interaction. Felleisen peppers his students with questions—he doesn’t lecture in the traditional sense—until they come up with their own answers. And he’s created software that does the same thing, so that as students move through the recipe on their computers at home, they’re prompted by familiar queries.

The computer language students use is a variant of the three-decades-old language known as Scheme, invented in 1974 by MIT researchers Gerald Sussman and Guy Steele. Scheme fell out of favor in the 1990s because it was considered unwieldy—its structure required a computer to perform some commands repeatedly, thus hindering program speed. Today, Felleisen says, “those problems have been overcome.”

To demonstrate why his version of Scheme works better for beginning programmers than other languages do, Felleisen takes math as a point of reference. Scheme, he contends, is like algebra: It states relationships simply, using only the most necessary terms. And the only notations it uses are parentheses.

“If you choose a language that is currently fashionable—Java, C++, anything along those lines—what you do is this,” he says, grabbing a red marker and scribbling all over a short word he’s written on a board in his Egan building office. “You pour ketchup over caviar.”

Scheme is different. “If you want to say that the relationship between ‘x’ and ‘y’ is ‘f,’ that’s two lines in algebra. It’s also two lines in Scheme. In Java, you have to add ‘public, static, void, main, left paren, String args, left bracket, right bracket, right paren, left brace, right brace’ before you say anything else. Is that making it clear?” he says, slapping down the marker for emphasis.

“With our very minimalistic programming language, using only a very small portion of Scheme, we can get so far,” Felleisen says. “We don’t focus on the grammar of the language. We focus on getting the meaning across.”

It’s clear Felleisen’s students appreciate the approach. “He’s a really good teacher,” says freshman Ernie Grindle. “In an overview, you don’t necessarily expect a taste of programming. But we’re getting actual programming, so when we learn other languages, we’ll understand the theory of what we do.”

After four years of high school programming, Mutz-Mercier didn’t think she needed Felleisen’s introductory overview; she signed up only because her adviser convinced her to. Now, she says, “I absolutely love it. Anybody who had taken programming before at first thought his method was ridiculous. But now it makes sense. Even though I know the fundamentals, I’m learning so much in class. The way he’s teaching is so much easier to understand.”

Yet Felleisen may find his most enthusiastic fans among those who know the most about programming: his colleagues.

For Proulx, a twenty-five-year Northeastern veteran who’s taught her fair share of introductory programming, Felleisen’s approach is a breath of fresh air. “He makes it possible for students with very minimal mathematical background to learn how to program computers,” she says.

“Not only that—his method also introduces a very careful structure for analytical thinking and problem solving that can be transferred to other fields, such as the social sciences, economics, even writing a paper,” says Proulx. “His approach is forcing people to learn how to think rather than just follow a cookbook approach.”

“The advantage of Felleisen’s approach is that the ideas come through with more clarity,” says another longtime Northeastern computer science professor, Richard Rasala. “It’s a very good idea to start with Scheme. When students get to Java, they will know how to think out of the box.”

Worcester Polytechnic’s Fisler recalls her introduction to the Felleisen formula: “My first contact with Matthias was personal—he was my husband’s PhD adviser. When I got to Rice, it was the first year they were running the program, and they had a combination of teachers and students taking the course at the same time. All Matthias’s students were male, except for a group of four high school girls taking the course. My husband mentioned they weren’t talking to the girls effectively. So I offered to help.

“I sat in on the first lecture Matthias gave,” Fisler says, “and it just blew me away. It made me rethink the whole way I view my discipline. And I thought, If it can do this for me, someone who already has a PhD, then think what it can do for kids who are just starting to see this. I’ve been a groupie ever since.”

Fisler thinks Felleisen’s work toward making programming accessible to all is particularly important, given how the field has changed over the past decade. “Most current professors started programming when the only people in computer science were other geeks,” she says. “But, with the whole Internet boom, the digital revolution, we’re getting kids from a huge array of backgrounds.

“Students want to know about programming because computers are involved in everything,” Fisler says. “So the students we need to teach now are not all computer-oriented people. And the kind of curriculum Matthias has developed is a general introduction you can follow if you understand basic mathematics.”

Computer and information science dean Larry Finkelstein agrees Felleisen is addressing a key issue in computer science education. “You go to these research conferences, and the biggest question is ‘How are you teaching your freshmen?’” Finkelstein says. “Traditionally, in computer science, in technical disciplines nationwide, forty percent of students who enter leave by the end of their first year. We’re taking a gamble with this method, but I believe computer programming is not that hard to learn.”

He also believes the gamble is well worth taking: “We’re trying to build a world-class freshman year that will be a model for other institutions,” Finkelstein says.


Creating classroom conversions

Felleisen at chalkboardThough Felleisen knew there were drawbacks in the way programming is typically taught, it wasn’t until January 1995 that he was inspired to fix them. Light dawned as he chatted with a graduate student during a flight back from a San Francisco conference.

“I had an epiphany,” he recalls. “My student asked me, ‘What do you not like about your job?’ And I said, ‘Here we are—we meet with two hundred of the finest minds in the world, we do great stuff—and, on the average, it takes thirty years for our ideas to get into education and industry. And it’s all because computer science is very much a fashion industry.’

“At that point, Java wasn’t around yet,” Felleisen says, “and it was very frustrating to see how dumb things that were fashionable had such a disproportionate impact in our area. The student said that was because BASIC is easier to teach than other programming languages. And I said, ‘No, I’ll prove to you it’s not.’ I said it sort of in jest.

“Then I looked at him and said, ‘I really am going to show you. I’m going to create a pilot project and push our research out into the real world. I’m going to start teaching the freshman course differently.’

“I was in the middle of teaching the course then,” Felleisen continues. “I had no software, no curriculum, no nothing. But I had ideas on how to do it better. So I did it, and the response of my students was just great. The undergraduates were blown away. And my graduate students, every single one of them, said, ‘This is the best thing you’ve ever come up with, and we’re going to follow it.’”

As news of Felleisen’s teaching method spread, the intro computing and programming course at Rice more than doubled in size. Women students, in particular, responded to the new approach. The first time Felleisen taught Scheme, in the 1992–1993 academic year, he taught it the traditional way; only 7 out of the 70 students in his class were women. By 1995–1996, after his new methods had been implemented, there were 60 women—and the overall class roster had leapt to 150.

Felleisen clearly loves talking about the class’s unexpected popularity. “I’ll tell you what it was like. Imagine my not being able to step anywhere in the classroom except for a narrow strip in front of the blackboard. I couldn’t walk through the aisle. I felt like I was stuck. The fire marshal moved me into another room,” he says, laughing.

The students crowding into those classrooms were equally enthusiastic. One wrote in her course evaluation, “If I had discovered this class within my first two years at Rice, I would’ve been a computer science major. I love [double underline] it! . . . This is the only class at Rice I’ve never gotten bored in. . . . This is what I expected from a college education at Rice—it’s great to get it even though I had to wait till my fifth year.

“Keep up the good work!” she added. And drew a smiley face.

Once Felleisen saw the fruits of his teaching method, he wasn’t content with revamping his own courses, or even all the other intro computing courses at Rice. He wanted to export his method to other universities. And every high school.

“Programming is math,” he says. “If programming is done properly, it has the potential to become an effective replacement for math. The way math is taught, textbooks do the creative part; most of the time, you just follow rules. But when you do programming, you do the creative part.”

He recruited grad students, postdocs, and colleagues to help spread the word. With seed money from Exxon, the Felleisen converts—calling themselves “PLT,” for “programming languages theory”—created a summer workshop to train teachers to use Scheme. With a grant of about $400,000 from the U.S. Department of Energy, Felleisen developed software, curriculum materials, and web servers. With the help of three graduate students, he wrote a book called How to Design Programs and put the entire text up on the web, for free. “I don’t want to make money. I want to make ideas,” he explains.

A couple of years ago, Felleisen got a hefty grant—$1.9 million—from the National Science Foundation. A big chunk of that money funds the summer workshops, which now draw about eighty teachers every year, and generate rave reviews and excited graduates proudly wearing their “PLT Scheme” T-shirts out into the world. The rest of the grant money pays for curriculum support from PhD students, software updates, and other Scheme workshops at additional sites.

These other workshop sites, by the way, include some big-name schools, where some of Felleisen’s former grad students and postdocs work: Yale, Utah, UC Irvine, Cal Tech, and Georgia Tech, to name a few. “Other universities are looking to Northeastern for information,” Felleisen says.

Finkelstein puts it another way. “We’re bringing to Northeastern the same level of quality that is being offered at institutions where the average SAT score is two hundred points higher,” he says. “Our goal is to give students the same amount of discipline and rigor that students at some of the top universities in the country get.”


A stubborn aversion to “no”

Felleisen’s colleagues admire how he keeps his teaching and research so closely connected. Felleisen is expert in describing, understanding, and improving programming languages. And his version of Scheme isn’t just for students; he uses it himself to design his web pages.

“Making web pages is typically very complicated,” Proulx explains. “He has created a mechanism for doing it with Scheme that makes the whole job much easier. All the web pages for his courses are updated regularly, on the fly. Building web pages is a piece of cake for him. And he’s using this godforsaken language nobody thinks has a commercial application. I think [the Scheme adherents] are finally going to convince the world this is a language you can use for commercial programming.”

“He is a person whose research and teaching are so intertwined, they really can’t be separated,” says Finkelstein. “He takes high-level research ideas and reduces them to simple, important concepts that freshmen need to know. And in the course of his teaching, he gets new research ideas.”

As impressive as Felleisen’s ideas are, they haven’t always been welcomed with open arms. To some extent, this is because they challenge more established ways of introducing programming.

“There’s still a group of people who don’t see why this matters,” says Fisler. “They think, ‘I learned to program in such-and-such a way, so anybody can learn in such-and-such a way.’ Teachers are guilty of teaching the way they’ve been taught.”

“Some people have resented using languages that are not popular, because nobody’s looking for Scheme programmers. Everybody wants Java programmers,” Proulx says. “But Matthias’s approach transfers to using Java.”

In the early going, Felleisen was definitely irked when his Rice colleagues weren’t interested in learning more about his revolutionary ideas. “I didn’t tolerate it that my colleagues didn’t want to even look at the material,” he says. “They condemned it simply because there was a certain word associated with it—Scheme. They thought Scheme was unfashionable. Therefore they thought we shouldn’t teach it. They never checked out exactly what we did.”

But he wasn’t about to take no for an answer. Not his style. So he bugged his department chair at Rice, Moshe Vardi, until Vardi asked other faculty members to sit in on the new course. Felleisen’s persistence led Vardi to give him a nickname—“Sabra,” the Hebrew word for “prickly pear.”

Felleisen is the first to admit his fervent belief in his own methods can sometimes turn people off, but, in typical fashion, he laughs it off. “We had pretty tough arguments,” he says of Vardi. “But he turned around. Every single one of my colleagues did, too.”

For his part, Vardi says he was always supportive of Felleisen’s ideas. “But Matthias tends to see the world in black-and-white,” he says. “He was a wonderful faculty member, but he wrote to the NSF like he was going to cure cancer using his approach. I told him he was overhyping it, that he was going to turn people off. But it’s a wonderful cause.”

Felleisen’s unrelenting confidence sounds cocky at first, but listen further and he sounds more like a kid in the candy store, excited about what he’s discovered, bursting to tell everyone the good news. And, for the life of him, he can’t fathom why everyone else doesn’t see things the way he does.

Students sometimes find Felleisen’s single-mindedness a challenging hurdle. When he taught software design last spring, some of them wound up in Finkelstein’s office in tears, saying they couldn’t handle Felleisen’s high expectations and driving style.

“But they loved what he was doing,” Finkelstein says. “And the students got in there and slugged it out, and a lot of them got through the tears and actually succeeded. He’s one of those people that, if you work with his level of intensity, you’ll get a lot out of him.”

Felleisen admits his teaching style is “brutal”—his word. “I call it ‘tough love,’” he says.

In the classroom, his passion is on high display. One dreary October morning, with the season’s first slushy snow covering the campus, somber Comp 1100 students stare at a happy, energetic Felleisen, eager to convince his charges of programming’s beauty.

Lean and quick, he paces the Shillman Hall classroom, giving students one minute here, two minutes there, to come up with answers to problems. “We don’t ask you to regurgitate knowledge,” he announces. “We ask you to think.”

He’s engaging and convincing, and the students are obviously paying close attention. His strong one-two punch—ideas plus persuasiveness—earns Felleisen wide respect and admiration. And enlists a small army of people ready to preach the attractions of programming to any who will listen.

Says Proulx, “He has tremendous people skills in creating teams of followers. He is never alone in what he is doing. He runs TeachScheme workshops for high school teachers, who then teach other teachers. He works with graduate students and colleagues throughout the country. To teach the intro course, we have a team of about seventeen people.”

And the members of Felleisen’s posse are thrilled to be on the bandwagon, Fisler says. “There’s definitely this sense of ‘We’re part of something here.’

“I don’t want to use the word ‘cult,’ but there is a family of people who believe in this, and they’re happy to be in the family. And they promote it. A lot.”