Or perhaps hear, see, do? I was asked about my teaching last week. What would my ideal class period look like. It was as they say a thinker. What I have been trying to do this semester was to mix things up a bit. Straight lecture tends not to work that well. At least not by itself. As one student told me “It all makes sense when you explain it but when I try to do it I get confused.” At the same time one has to explain the concepts. Right? I think so anyway. So I often start with a lecture. I try to include pictures (or at least PowerPoint slides that are more than just bare text). I take questions (love to take questions) and look at faces to see if students are getting it (or falling asleep).
Next I try to demo the code (or what ever else I am teaching). I try to make the demos interesting and interactive. I ask questions. Answer question. And generally try to make the demo more than just a different way to lecture. Seeing seems to help usually. I also take advantage of tools like the debugger to make things obvious that are usually more opaque.
Thirdly, and probably most importantly, I ask the students to do it themselves from scratch (at least the new concepts part from scratch.) I am finding that in programming the students grasp the syntax more easily than how to put the syntax to work to solve a problem. I’m trying to help there but that has been the big problem for as long as I can remember.
It’s the same way in most subjects though. Students can know all of the parts of a sentence and be able to break them down in a sentence they are given without being able to write a great sentence themselves. At least with writing they get more practice and they don’t have to start from scratch in high school.
Getting students more problem solving practice is a goal for me for the rest of the semester. I think they will soon have enough of the concepts and syntax to do interesting things with code. It is best that they learn how to thing computationally before being overwhelmed with too many “tools.” Figuring out what is enough for now is important. From a good but not exhaustive base students can start to solve problems. Later, as they finish with simple problems, they can ask about and digest more tools for the problems that are not easily solved with the tools they already have.
That’s my theory. What do you think of it?