Wednesday, May 18, 2011

Serving Non-Majors in CS Classes

At the end of the year, I gave a short in-house presentation highlighting some aspects of the state of CS at Harvard.  In gathering data, one thing that struck me -- and I highlighted in our presentation -- is that most of the students taking our classes are not majoring (or, in Harvard-speak, concentrating) in computer science.

This shouldn't have been a big surprise -- if you look at the number of concentrators and then do the math this pretty much had to have been the case -- but it was a surprise to me how large and widespread the effect was.  Sure, our intro programming classes are filled with non-majors.  That's not hard to figure out, given we had about 500 people taking our first semester intro programming class this year.  We have LOTS more economics majors than CS majors in that class.  But even in my Algorithms and Data Structures, which I think of as core CS, only about 1/2 the class was CS majors.  (Lots of math, applied math, physics, as well as several from other majors.)  In some of our classes that are designed more to be outreach classes, like our courses on visualization and user interfaces, only about 1/3 of the class is CS majors, and others are from all over the campus.

This is, I think a great thing.  I'd like Harvard applied math, math, physics, engineering, government, statistics, sociology, economics, and English majors to leave Harvard with some strong foundations in CS.  The question is, how should we in CS at Harvard think about it?  One idea is that there's certainly room for us to attract more majors into CS at Harvard, and we're certainly working on that.  But another idea is that we should be looking for opportunities to teach classes that are both good for our majors and can appeal broadly to others as well.  Harvard offers something like minors (call "secondaries") which requires only a small number of classes;  another measure of success for us would be if we can significantly increase the number of CS secondaries.

Along these lines, David Parkes will be offering his version of an undergraduate Econ-CS course for the first time next year.  I expect it will be a very popular offering, for CS majors and others.   



Anonymous said...

I find this fascinating because, to the best of my knowledge, this is not the case at most other schools. (At least it is not the case where I teach, a top-20 department much larger than yours.) I wonder what your department, and Harvard at large (because I'm sure that must play a role as well), are doing differently to encourage so many non-majors to take your classes.

Anonymous said...

It's really great that so many people are taking your algos course. Programming is something most technical people will have to do in their post-student lives--computers are ubiquitous and making them do what you need is a highly valued skill for all sorts of work.

I was a student something like 5-7 years ago. Though I majored in math, it's now clear to me that CS124 was the most useful class I took in terms of developing skills for "real world" problems. When I do recruiting, I even tell people that CS124 is my most recommended class.

While it's true 90% of real-world programming is plumbing, having a solid understanding of algos for the other 10% makes the difference between performant and useless programs!

Michael Mitzenmacher said...

Thanks most recent anonymous. It's always nice to hear from students who have found the class useful -- especially from students a few years out!