Skip to content

Instantly share code, notes, and snippets.

@acbart
Last active August 29, 2015 14:28
Show Gist options
  • Save acbart/75e8ae0bec497da18b60 to your computer and use it in GitHub Desktop.
Save acbart/75e8ae0bec497da18b60 to your computer and use it in GitHub Desktop.
Why is computing hard to learn?
I’m not familiar with that article, but it reminds me of one of my “first day of class” lectures.
Imagine you were assigned to write a 20-page paper, by the end of the semester, on Napoleon’s invasion of Russia. What would you need to know?
[Guided classroom discussion, usually producing something like the following:]
Know about Napoleon and Russia
Know how to do library research
Know how to structure a 20-page paper so it’s coherent.
Know how to budget your time so you finish it by the end of the semester
Now suppose you were required to write this paper in Swedish, using a quill pen. What else would you need to know?
Know how to use, sharpen, dip, and blot a quill pen
Know the Swedish language — spelling, vocabulary, grammar, punctuation, idioms, etc.
That’s basically what I’m asking you to do in this course. You’ll need to learn how to use certain tools — we call them IDE’s — analogous to a quill pen. You’ll need to learn the spelling, vocabulary, grammar, punctuation, and idioms of a new language. You’ll need to know how to budget your time so you finish your programs by the due date. You’ll need to know how to structure a program so it’s coherent. You’ll need to know, when you don’t know the answers, how to find them. And you’ll need some content knowledge: if the program is about graphics on the screen, you need to know a little bit about geometry and Cartesian coordinates.
Of these six kinds of knowledge, the ones I’m really interested in are “how to structure a program” and “how to budget your time to finish programs by the due date.” The rest are necessary too, but they’re not really the subject of the course.
I encourage you, whenever you have a problem, to ask yourself which of these categories it falls into: mechanics, language, time management, program structure, research, or content.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment