Mill Industries

Two Wholes of the Brain

An article on the decline in science majors in the New York Times yesterday paints a pretty gloomy picture of the state of undergraduate science programs in US universities.

But it ends on a very positive note -- by discussing my alma mater, Worcester Polytechnic Institute. Everything it says about WPI is exactly how I've evangelized the school to friends and strangers for years. Emphasis mine:

[WPI] has taken the idea of projects to heart. While it still expects students to push their way through standard engineering and science classes, it ripped up its traditional curriculum in the 1970s to make room for extensive research, design and social-service projects by juniors and seniors, including many conducted on trips with professors overseas. In 2007, it added optional first-year projects — which a quarter of its freshmen do — focused on world problems like hunger or disease.

“That kind of early engagement, and letting them see they can work on something that is interesting and important, is a big deal,” says Arthur C. Heinricher, the dean of undergraduate studies. “That hooks students.”

There's more to it than this: everything about WPI's system is designed to bring out the best in people.

It's a tech school, but instead of requiring students to take a wide smattering of liberal arts courses, it asks every student to take classes in the area they love most, and come up with a capstone project of their own design and work on it in place of a normal class. By the end of your second year at WPI, you've found a professor, developed a relationship with them, and discovered that you're capable of producing something of substance, something no one else would have done. Mine was a combo philosophy/music paper on whether or not computer-aided composition reduces human expression (it doesn't). My friend Adam's was a music concert.

This experience is amplified in the years to follow - every student must do a project with an intentionally broad mandate to help society with technology (takes the place of 3 classes, either self- or professor-directed), and then finally do a large self-directed project in one's major. For the first one, I went to Venice and studied how to improve the structural integrity of its bell towers, and for the last one, my friend Travis and I built an AI system to help people create sound patches on synthesizers without knowing anything about how to program sound.

I wish I'd been around to do a project on world problems in my freshman year. Maybe I would have done something that I could use in my current work.

WPI does more than just not calculate GPA. In order to graduate with "high honors" from WPI, you need to get an A on each of the 3 projects above, and score 19 A's in your normal courses. Achieve three out of those four criteria, and you graduate with "honors". It's not easy! No one ever talks about averaging your grades. As the article mentions, your first three failed courses don't even appear on your transcript, just to give you some added incentive to take some risks during your time there.

Despite WPI's wonderful project system, their courses suffer from the same problems so many universities have: their curriculum is far divorced from the real world, and they weed people out.

I took all of one class at WPI that even peripherally relates to the professional work I've done over the past 6 years. It was a class called "Webware", and it was about the Internet. It was run by an adjunct professor, wasn't given many resources, and was the only class that helped you understand and contribute to the most important technological invention in connecting humans to other humans.

After taking it, I was filled with energy, and promptly made my first ever blog, from scratch. It had no database, and ran entirely on regular expressions, insane deer language. Since WPI at no time ever taught you to work with a real database, only how to draw cylinders on chalkboards and muse on their frosty materialistic relationships, that was all I had. When I graduated WPI, I felt wildly underprepared and uncompetitive for the kind of work I wanted. I taught myself some PHP and MySQL in a rush, after graduation, and eventually landed some work doing just that.

That was 2004 -- maybe(?) they could be forgiven. But 7 years later: there is still only "Webware", meant to encompass all things Web. The course catalog for 2011-2012 describes a set of 20 "educational outcomes", none of which mention the Internet or the Web at all. I do not understand this. While there are many worlds of working with computers that don't involve the Internet specifically, offering a single class is ... not proportional to its importance to the field. Why don't they allow students who adore the Web to use that adoration to catapult themselves through their studies?

More recently, they changed their freshman curriculum so that the first language students must work with is Scheme, an academic variant of Lisp, a dead language designed for computers and not people. It was the most unpleasant class I took in my second year (if eventually rewarding), and the work bears no resemblance to one's experience after college.

In the real world, tremendous importance is placed on computer languages that map naturally to the human brain, and reduce cognitive dissonance. This is supposed to be fun, because when it is, work gets done a lot faster, and enterprises succeed. When so many freshmen come in not knowing any of this, leaving them with the impression that computer science work consists of unnatural drudgery abandons talent.

It's the crystallization of the problem described early on in the same article:

The National Science Board, a public advisory body, warned in the mid-1980s that students were losing sight of why they wanted to be scientists and engineers in the first place. Research confirmed in the 1990s that students learn more by grappling with open-ended problems, like creating a computer game or designing an alternative energy system, than listening to lectures. While the National Science Foundation went on to finance pilot courses that employed interactive projects, when the money dried up, so did most of the courses. Lecture classes are far cheaper to produce, and top professors are focused on bringing in research grants, not teaching undergraduates.

In 2005, the National Academy of Engineering concluded that “scattered interventions” had not resulted in widespread change. “Treating the freshman year as a ‘sink or swim’ experience and accepting attrition as inevitable,” it said, “is both unfair to students and wasteful of resources and faculty time.”

Universities have ignored this advice for 30 years because the professors simply don't believe most people are cut out for the work, that there's nothing that can be done to change it, and that discovering early on who they are is a good thing. The curriculum is specifically designed to target the students who may begin with only casual interest, or who have certain cognitive weaknesses, and convince those students to go find something more their speed. This is real and devastating elitism.

What I think WPI as an institution understands, but which many of its professors (and department heads) do not, is that students' emotional connection to their work is as important as their intellectual compatibility with it. Strength in one can make up for weakness in the other. You can't succeed without at least some of both.

WPI does better than any other school I'm aware of in incubating students' passions, and giving them that all-important hook. I'm proud to see the New York Times share that in their reporting. Though WPI is not an exception to the nation's science education ills, it's walking in the right direction -- a direction more of our schools should share.

  1. Anthony

    http://boston.craigslist.org/search/sof?query=prolog

  2. Anthony

    Here's my less snarky and less taggy comment:

    Really have to disagree with your take on Scheme. It's vastly better than C++ or Java for an intro class. I know there was a Scheme cabal in the department at WPI and I guess they finally won. MIT 6.001, the gold standard of intro to CS courses, was Scheme for along time.

    Of course they've switched to Python now.

    What do you think would be the ideal undergraduate program to produce effective, real world software developers?

  3. Eric Mill

    Python, Ruby, or even JavaScript would make much better intro languages than Scheme (or C++, or Java). High level, dynamically typed languages that are in real use everywhere, are highly Google-able and StackOverflow-able, and leave the student able to make something useful and public immediately afterwards.

    Let me also say that I don't think it's WPI's job to swing so far over into practice that they simply turn out what industry demands of them. What I'm not seeing is the department acknowledging what the rest of the world is doing at all, or incorporating the profession's best ideas. It's agonizing to think of how long it will take for the Database Systems courses to mention the possibility of non-relational databases.

    Though also not good for an opening class, I actually adored Prolog -- it was mind bending in a very playful way. I even opened up one of my homework assignments not too long ago, to savor the memory. When the proposal to axe Prolog from the curriculum entirely came up in the CS department, I wrote a letter to Kathi Fisler (in charge of the decision) arguing against it. I lost. :(

  4. Anthony

    Again, really have to disagree wrt Ruby and JavaScript, which are both absolute messes in terms of language design. Python, while saddled with its share of dumb, has a simple and consistent syntax so that you can learn fundamentals without getting tripped up on syntax. That was always one of the arguments in favor of Lisp/Scheme.

    I don't really know why programs are so loathe to move towards practice from theory, or even if they should.

    If you told the people in the park that practicing Tai Chi isn't going to help them in a bar fight, they'd probably just smile. They get it.

  5. Eric Mill

    Whether Ruby or JavaScript are as consistent as Python is irrelevant to me. Ruby and JS are easy to teach (I've taught people both of them). I've found that Ruby is especially attractive to people who haven't done much programming before, a perfectly acceptable place for a CS first-year to be in. All three languages provide the "hook": after (or while) you're learning, you can go and make something in this right now.

    For an introductory class in a field that hemorrhages freshmen all over the country, I don't think there's anything more important.

    You're caricaturing my stance here a bit; I don't think the program should focus entirely on practice, but I do think it is out of balance. Making CS approachable to the uninitiated and making sure graduating seniors have actually used at least a couple of real world technologies should be doable without losing WPI's emphasis on theory.