- If you’re unsure of how to start you Intro CS class, consider using Stephen Bloch’s first day of class activity. In this activity Bloch introduces the cognitive domains involved in learning to program.
- He describes these domains as being a part of the following 6 categories: mechanics, language, time management, program structure, research, and content.
- We’ve included his description of this class in it’s entirety below:
"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."