A: A frequently asked question!
C is just about as close to a computer's hardware as you can get before you have(which would be too arcane, I think, for an introductory course like CS50). In C, there's no magic. If you want something to be somewhere in memory, you have to put it there yourself. If you want a hash table, you have to implement it yourself. The result by term's end, we hope, is that students understand how things work from the bottom up and, better yet, can explain as much. C is also a small language that, by mid-semester, students have seen nearly all of (except for, e.g., and ).
C also affords us an opportunity, very early on, to explore topics like buffer overflows (and security more generally), which still underlie today's exploits all too frequently!
Among the downsides of C, of course, are these same upsides. It's all too easy to access some memory you shouldn't. And if you want a hash table, you have to implement it yourself! And it's harder with C to assign problem sets early on in the term that are as engaging as they might otherwise be with, say, Python or Java, both of which offer many more (higher-level) features. But not impossible!
The net effect of these choices, we hope, is that at term's end a student will not say "I learned C" but, rather, "I learned how to program."
A: Each year, CS50 changes in some non-trivial way, sometimes curricularly, sometimes technologically (and, more recently, !), and so each year is somehow different from the last. Those changes certainly keep me motivated and interested. Or, to be fair, perhaps I initiate those changes to keep me motivated and interested!
The course's students and staff, of course, change each year, and each new class brings new ideas and personalities to the course. The course's problem sets are constantly evolving, as are the demonstrations we try out in lectures. The paradigms we teach (not so much in C but in web programming) are changing with time. The course's infrastructure is frequently updated, asto, most recently, . Over time, we've introduced the CS50 Fair (2008), the CS50 Hackathon (2010), and CS50 Puzzle Day (2011). Whereas we once shot the course in 4:3 SD, we now shoot the course in 2.39:1 4K. (And coming in Fall 2016 is CS50 VR.) For quite some time, CS50 was offered only at Harvard College on campus, but it's now available beyond, and soon via .
So I daresay, every year, CS50 is anything but the same!