Syllabus for Classics of Computer Science
canvas.harvard.edu
canvas.harvard.edu
I've seen shit like this in every field...
"Books every historian should have read."
"Books every English professor should have read."
"Books every psychoneuroendocrinologist should have read."
They're all a collection of shit that someone, somewhere - usually with an inflated self of self - feels qualified to tell you and every other person that they should have read.
You know what you should have read? Papers you find interesting that advance your understanding for the problems you face. Understand I'm not saying that every list everywhere is a load of horseshit that you need to ignore - I'm not. I'm saying be wary of all-encompassing "lists" of "things" you "should" do / know / read / experience.
EDIT: LOL, stealth edit on the title... from "Papers every computer scientist should read" to "Syllabus for Classics of Computer Science".
Well... at least the pretension took a backseat. :)
That's a weird example. There is an actual western canon and you're probably a bad english professor if you aren't familar with it.
MRB's was the first I attended, at RICON 2013:
https://michaelrbernste.in/2013/11/19/distributed-systems-ar...
I wasn't lucky enough to catch it live, but Bret Victor's classic "The Future of Programming" is worth watching if you haven't already:
And I might as well plug my own talk about the CS papers on logical time, not nearly on the caliber of the above:
https://blog.acolyer.org/2016/12/29/my-new-years-resolution-...
The Wikipedia article describes it thusly:
> Petzold annotates Alan Turing's paper "On Computable Numbers, with an Application to the Entscheidungsproblem". The book takes readers sentence by sentence through Turing's paper, providing explanations, further examples, corrections, and biographical information.
But the latest paper listed is from 1986. Has there really been no fundamental CS progress in ~four decades?
I am surprised to have read a surprising number of those (25-30%) but I've had thirty-five years to do so. Yes I read a bunch -- perhaps half of that number -- in graduate seminars decades ago so that helped, but if you tried to read them all at once you'd be overwhelmed and miss a lot of the significance.
Also almost all were published before 1980 which implies the faculty might have been in school around then too.
More generally, this seems like an undergrad course. Isn't the point of an undergrad degree to give broad foundational instruction that can be further built on? What better way then to see how we got to the present.
> Does a roboticist need to understand lambda calculus?
Reading a single paper and understanding something is very different. Understanding it, is a bit much. Knowing the very vaugest of an introduction to the subject by reading a single very foundational paper, they might benefit from that. At the very least, they should know how to read and understand a paper in an adjacent field to their own (this is an undergrad class after all)
> This course examines papers every computer scientist should have read, from the 1930s to the present. It is meant to be a synthesizing experience for advanced students in computer science: a way for them to see the field as a whole, not through a survey, but by reliving the experience of its creation. The idea is to create a unified view of the field of computer science, for students who already know something about it, by replaying its entire evolution at an accelerated frame rate.
Which is not a bad idea. Many computer scientists, programmers, and software engineers have an ahistorical understanding of CS. See the discussion the other day when someone claimed "software engineering" is only 20-30 years old. They aren't a one-off, though probably not the majority. A significant number of people in this field don't know the history of it: how it was developed, what dead ends were hit, what dead ends turned out not to be dead ends (often once we got fast enough hardware), etc.
Similar to the ethics course in many engineering/science curricula, it's something that seems a bit superfluous but turns out to add a great deal of value if students can be bothered to explore it.
>>> Learning Objectives:
>>> To identify the major subfields of computer science, their intellectual family tree, and the major figures and works of their birth and infancy.
To be able to place current computer science research in the context of its intellectual lineage.
To be able to present to an audience of educated but non-specialist computer scientists some of the major ideas of computer science in a way that is succinct and easy to understand.
To be able to critique constructively similar presentations by others.