Reflection 3.6 - Approaches to Teaching Programming

A variety of general teaching approaches exist. Several of them are identified and briefly described below. You might use, know of, or find, others.

The main purpose for the readings over the next few days is that you identify one or more general approaches to teaching programming that you believe can be used to effectively teach the bulk of computer programming at the high school level. I want you thinking about each of the approaches and decide which one(s) most closely align with your teaching philosophy. That might be one or more or all of them, or perhaps something else entirely.

The task here is to reflect on the goals of programming instruction and the various approaches to teaching. Are some aspects of programming better taught using a particular approach? If so, identify those relationships.

 

Discovery Learning

Discovery learning may be most known to us through Montessori schools. For the uninitiated (e.g., me) the information at Wikipedia seems reasonable. You may already be familiar with Montessori's approach. In computer science, the original work of Seymour Papert and Logo is an example of discovery learning. Both are constructivist in nature. For more information on Papert, see Seymour Papert’s Legacy

The main teaching activity in discovery learning is identifying learning activities from which children can choose what to do and actually do with as little adult/teacher intervention as possible. Whether that works for programming is arguable.

Direct Instruction

Direct instruction is the manner in which most of us learned. It is also the manner in which I taught for most of my life. Perhaps for you to. The idea is that the system (teacher, school, state):

  • Decides upon content that needs to be addressed
  • Prepares for the presentation of information/skill
  • Provides learning activities (homework) that provides student practice on the presented information/skill

We often think of this as the lecture-method, but it seems likely that the flipped-classroom approach is a version of direct instruction. See the Vanderbilt Center for Teaching's article Flipping the Classroom for more information.

Context Oriented Approaches

There are a variety of context oriented approaches to teaching and learning. We mention two here. One is situated learning. The Wikipedia article Situated learning provides and overview and background for the general approach. A related approach focusses on realistic problems and worked examples. You can read more about that at:

 

Process Centered Approaches

Process centered approaches focus on some organizing activity as they teach programming. One clear example is POGIL; it is an entire system. A smaller example is also provided—it was developed locally.