There aren’t many theories about how to effectively teach new computer scientists how to program. Dan’s done some analysis of this problem but was unable to come up with the perfect programming language for teaching the breadth he expected. What he did come up with was a pretty good list of languages that covered a broad range of paradigms and styles. Maybe what really needs to happen in the first year of CS is for students to learn a few languages, all of different philosophies, to get a better idea of why things are done a certain way.
I think the current school of thought for teaching CS is that it’s better to give the students a quick and dirty tool set (imperative languages) that they can build on later. Kind of like how our first spoken language is stored in one part of the brain (we’ll call it part X so I don’t have to look it up) while all the languages we learn after that are put in area Y but built on the language stored in part X. People that learn multiple languages from birth store all of that in part X so there’s more to build on for part Y. Think of it as kind of like having languages in X being in the CPU registers while Y languages are on the hard drive.
Scott Hanselman has done an awesome article about the similarities in teaching young children spoken language and teaching new CS students programming languages.
- None Found