David Malan
๐ค SpeakerAppearances Over Time
Podcast Appearances
I sense, but I would defer to others who hold these views, that there is a concern that maybe we are putting ourselves out of business or there's more of a school pride.
And I definitely saw some of that on Harvard's own campus where they're like, no, no, no, no.
We should be offering courses to our students that
that we have created and that we are teaching and not lean, for instance, on our friends down the road at MIT who have and have for decades had a larger, richer course catalog than us simply by nature of being a bigger place, at least for computer science.
And it seems silly to me not to lean on each other.
Maybe each of us can specialize a bit more.
Maybe each of us can offer slightly different modes of instruction for students.
Maybe that's a little more intimate on this campus versus that.
so as to really leverage shared resources.
I mean, this is done endlessly in research, having cross-campus collaborations.
And there's something very personal about or very fundamentally threatening, I think, about leaning on each other educationally.
And I wish people would move away from this mindset because it doesn't mean some failure of the institution to offer these courses.
It means we can do a better job offering what resources we do have, I would like to think.
Sure.
So it was not picked by me per se, but I chose to keep C in the course, certainly, since as far back as 1996 when Brian was teaching it, Professor Margot Seltzer before that, and many other faculty prior to me and them.
It is...
A wonderful foundation on which to build your understanding of how a computer works and how software is built.
It's about as close as you can get to the hardware before things devolve, at least aesthetically, into assembly code, which is much scarier looking code, I think for most people, almost everyone perhaps.
And certainly beyond that is zeros and ones, which is not going to be fun for anyone.
So C kind of strikes, I think, pedagogically this really nice balance of having English-like syntax and abstractions on top of lower-level primitives that allow you to explore procedural programming, in particular, with some constructs that are now fundamental to those kinds of languages, loops and conditions and functions and variables and return values and so forth.