Should We Let Students Struggle?

ACKNOWLEDGEMENT

My thanks goes to Aviva Dunsiger (web site http://adunsiger.com/, twitter @avivaloca) for prompting me to write this post. She made the following tweet:avivalocato which I repliedavivaloca_1
Aviva then expressed interest in how I had done so, hence this post.

OBSERVATIONS

The nature of the struggles that I set are governed by the subject that I happen to be teaching. The struggles needed for mathematics are quite different to those for English, for example. The subject of computer programming lends itself to making the nature its struggles easily explained.

LEARNING ACTIVITY
It is my practice to create learning activities where the goal is made explicit at the start, and the learners then have to solve a series of problems to be able to reproduce that result. For example, the goalrgb_resultcan be achieved with the following code:
private void show_colours() {
red_value.setText(String.format(“%d”,red_slider.getValue()));
green_value.setText(String.format(“%d”,green_slider.getValue()));
blue_value.setText(String.format(“%d”,blue_slider.getValue()));
show_red.setBackground(new Color(red_slider.getValue(), 0, 0));
show_green.setBackground(new Color(0, green_slider.getValue(), 0));
show_blue.setBackground(new Color(0, 0, blue_slider.getValue()));
show_rgb.setBackground(new Color(red_slider.getValue(), green_slider.getValue(), blue_slider.getValue()));
}

To present the above text to learners would simply be to over-face them. The learning activity consists of describing what each word means (for example, “setBackground” sets the background colour of something on the screen), and offering a collection of “code fragments” which they can use to build a working program. A “code fragment” can look like this:

show_blue.setBackground(new Color(0, 0, blue_slider.getValue()));

The struggle then comes down to three components:

  1. Understanding how each code fragment works internally;
  2. Working out how each code fragment contributes to the goal;
  3. Figuring out how to assemble all the code fragments into a working whole.

The learners are usually very quiet during this activity: it is rare for any learner to ask anything. The learning activity allows self-evaluation: when the learner has completed it successfully, they know immediately. The most common issue that I find in such learning activities that a learner may have mistyped something, which then affords an opportunity for a whole-class discussion on debugging. In my experience, learners always feel happy when they complete such learning activities, and one learner went to far as to shout “Hooray!” to the whole of the class when he completed it.

CONCLUSION

I suggest that this can be related to similar problem-solving issues in other subjects. Using English composition, for example, how do you want to break down and organise your ideas in a blog post so that they are presented logically and can be easily understood by your audience. And at the risk of turning this blog post in on itself, you may care to critique it for those qualities.

One thought on “Should We Let Students Struggle?

  1. Thanks for the blog post, Phil! It’s very interesting to see how teachers help students “embrace the struggle.” As someone that’s never really taught coding before, I’m trying to think of examples of how people would do this in other subject areas. I do really like the idea of “building the struggle into the lessons.” I hope others share what they do.

    Thanks again for the post!
    Aviva

Leave a Reply

Your email address will not be published. Required fields are marked *