THE SOUL OF PROGRAMMING
TRUSTEE PROFESSOR MATTHIAS FELLEISENPHILOSPHER, STEAMROLLER, ICONOCLASTTEACHES COMPUTER PROGRAMMING. WITH A PASSION.
By Karen Feldscher
Kathi Fisler calls herself a groupie. Andrea Mutz-Mercier says shes 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.
Theyre not talking bout a revolution.
Theyre talking about a new way of teaching computer programming.
You read correctly. Maybe programming isnt the stuff that typically kindles great passions, but Matthias Felleisen, Northeasterns 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. Programmings outcomes are widely acknowledged as plenty exciting. But the process itself? That thrill has been a harder sell for students, especially those who arent 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 whos 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 Felleisens current students.
And Proulx is a College of Computer and Information Science colleague, who gushes when she describes Felleisens efforts to overhaul the way introductory computer programming is taught. Asked if shes enjoyed working with him since he came to Northeastern a year and a half ago, she smiles broadly.
Thats an understatement, she says. Hes not just a researcher; hes not just an educator. Hes a visionary.
Programming as a source of joy
Whats so original about Felleisens teaching methods? Andmore to the point, perhapswhy 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. Felleisens 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 arent 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 dont 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 artists 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 heavens 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 Felleisens programming pedagogyhe calls it TeachSchemeis 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 Felleisens 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, Felleisens 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.
Felleisens 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
Felleisens 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 questionshe doesnt lecture in the traditional senseuntil they come up with their own answers. And hes created software that does the same thing, so that as students move through the recipe on their computers at home, theyre 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 unwieldyits 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 fashionableJava, C++, anything along those lineswhat you do is this, he says, grabbing a red marker and scribbling all over a short word hes 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, thats two lines in algebra. Its 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 dont focus on the grammar of the language. We focus on getting the meaning across.
Its clear Felleisens students appreciate the approach. Hes a really good teacher, says freshman Ernie Grindle. In an overview, you dont necessarily expect a taste of programming. But were getting actual programming, so when we learn other languages, well understand the theory of what we do.
After four years of high school programming, Mutz-Mercier didnt think she needed Felleisens 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, Im learning so much in class. The way hes 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 whos taught her fair share of introductory programming, Felleisens 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 thathis 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 Felleisens approach is that the ideas come through with more clarity, says another longtime Northeastern computer science professor, Richard Rasala. Its a very good idea to start with Scheme. When students get to Java, they will know how to think out of the box.
Worcester Polytechnics Fisler recalls her introduction to the Felleisen formula: My first contact with Matthias was personalhe was my husbands 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 Matthiass students were male, except for a group of four high school girls taking the course. My husband mentioned they werent 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. Ive been a groupie ever since.
Fisler thinks Felleisens 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, were 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. Were 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: Were trying to build a world-class freshman year that will be a model for other institutions, Finkelstein says.
Creating classroom conversions
Though Felleisen knew there were drawbacks in the way programming is typically taught, it wasnt 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 arewe meet with two hundred of the finest minds in the world, we do great stuffand, on the average, it takes thirty years for our ideas to get into education and industry. And its all because computer science is very much a fashion industry.
At that point, Java wasnt 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, Ill prove to you its not. I said it sort of in jest.
Then I looked at him and said, I really am going to show you. Im going to create a pilot project and push our research out into the real world. Im 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 youve ever come up with, and were going to follow it.
As news of Felleisens 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 19921993 academic year, he taught it the traditional way; only 7 out of the 70 students in his class were women. By 19951996, after his new methods had been implemented, there were 60 womenand the overall class roster had leapt to 150.
Felleisen clearly loves talking about the classs unexpected popularity. Ill 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 couldnt 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 wouldve been a computer science major. I love [double underline] it! . . . This is the only class at Rice Ive never gotten bored in. . . . This is what I expected from a college education at Riceits 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 wasnt 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 convertscalling themselves PLT, for programming languages theorycreated 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 dont want to make money. I want to make ideas, he explains.
A couple of years ago, Felleisen got a hefty grant$1.9 millionfrom 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 Felleisens 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. Were 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
Felleisens 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 isnt 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 hes 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 cant 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 Felleisens ideas are, they havent always been welcomed with open arms. To some extent, this is because they challenge more established ways of introducing programming.
Theres still a group of people who dont 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 theyve been taught.
Some people have resented using languages that are not popular, because nobodys looking for Scheme programmers. Everybody wants Java programmers, Proulx says. But Matthiass approach transfers to using Java.
In the early going, Felleisen was definitely irked when his Rice colleagues werent interested in learning more about his revolutionary ideas. I didnt tolerate it that my colleagues didnt want to even look at the material, he says. They condemned it simply because there was a certain word associated with itScheme. They thought Scheme was unfashionable. Therefore they thought we shouldnt teach it. They never checked out exactly what we did.
But he wasnt 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. Felleisens persistence led Vardi to give him a nicknameSabra, 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 Felleisens 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 its a wonderful cause.
Felleisens unrelenting confidence sounds cocky at first, but listen further and he sounds more like a kid in the candy store, excited about what hes discovered, bursting to tell everyone the good news. And, for the life of him, he cant fathom why everyone else doesnt see things the way he does.
Students sometimes find Felleisens single-mindedness a challenging hurdle. When he taught software design last spring, some of them wound up in Finkelsteins office in tears, saying they couldnt handle Felleisens 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. Hes one of those people that, if you work with his level of intensity, youll get a lot out of him.
Felleisen admits his teaching style is brutalhis word. I call it tough love, he says.
In the classroom, his passion is on high display. One dreary October morning, with the seasons first slushy snow covering the campus, somber Comp 1100 students stare at a happy, energetic Felleisen, eager to convince his charges of programmings 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 dont ask you to regurgitate knowledge, he announces. We ask you to think.
Hes engaging and convincing, and the students are obviously paying close attention. His strong one-two punchideas plus persuasivenessearns 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 Felleisens posse are thrilled to be on the bandwagon, Fisler says. Theres definitely this sense of Were part of something here.
I dont want to use the word cult, but there is a family of people who believe in this, and theyre happy to be in the family. And they promote it. A lot.