What’s generally good for you vs what meets a need: Balancing explicit instruction vs problem/project-based learning in computer science classes

September 16, 2019 at 7:00 am 6 comments

Lauren Margulieux has posted another of her exceptionally interesting journal article summaries (see post here). Her post summarizes recent article asking which is more effective: Direct instruction or learning through problem-solving-first (like in project-based learning or problem-based learning — or just about any introductory computer science course in any school anywhere)? Direct instruction won by a wide margin.

Lauren points out that there are lots of conditions when problem-solving-first might make sense. In more advanced classes where students have lots of expertise, we should use a different teaching strategy than what we use in introductory classes. When the subject matter isn’t cognitively complex (e.g., memorizing vocabulary words), there is advantages to having the students try to figure it out themselves first. Neither of these conditions are true for introductory computer science.

This is an on-going discussion in computing education. Felienne Hermans had a keynote at the 2019 RStudio Conference where she made an argument for explicit direct instruction (see link here). I made an argument for direct instruction in Blog@CACM last November (see post here). Back in 2017, I recommended balancing direct instruction and projects (see post here), because projects are clearly more motivating and authentic for computer science students, while the literature suggest that direct instruction leads to better learning — even of problem-solving skills.

Lately, I’ve been thinking about this question with a health metaphor. Let me try it here:

Everybody should exercise, right? Exercise provides a wide variety of benefits (listed in a fascinating blog post from Freakonomics from this June), including cardiovascular improvements, better aging, better sleep, and less stress. But if you have a heart problem, you’re going to get treatment for that, right? If you’re having high cholesterol, you should continue to exercise (or even increase it), but you might also be prescribed a statin.  If you have a specific need (like a vitamin deficiency), you address that need.

Students in computing should work on projects. It’s authentic, it’s motivating, and there are likely a wide range of benefits. But if you want to gain specific skills, e.g., you want to achieve learning objectives, teach those directly. Don’t just assign a big project and hope that they learn the right things there. If you want to see specific improvement in specific areas, teach those. So sure, assign projects — but in balance. Meet the students’ needs AND give them opportunities to practice project skills.

And when you teach explicitly: Always, ALWAYS, ALWAYS use active learning techniques like peer instruction. It’s simply unethical to lecture without active learning.

Entry filed under: Uncategorized. Tags: , , .

Come talk about the Role of Authentic STEM Learning Experiences in Developing Interest and Competencies for Technology and Computing #STEMforCompTech Upcoming NSF Computing Education Workshops from Jeff Forbes

6 Comments Add your own

  • 1. Briana Morrison  |  September 16, 2019 at 12:07 pm

    THIS. Also compare to learning to play a musical instrument. Yes, some do learn on their own (by ear, learning some song they want to play), but do they have the foundational knowledge? How long does it take them to learn the next song? Can they read music? Couldn’t they also learn by being given direct instruction where they learn to read music, learn foundational knowledge AND learn to play the song they want? Yes, they may have to start with Twinkle, Twinkle Little Star, but given the right instruction (and goal) they will also get to the song they want to play (perhaps simplified) but they will also be able to play so many more…

  • 2. Josh Sheldon  |  September 19, 2019 at 11:10 am

    Absolutely – nicely written

    • 3. Josh Sheldon  |  September 19, 2019 at 11:12 am

      Also, was just having a very similar discussion with a friend also in the Learning Sciences (and from a constructionist school) about the need to play scales (many times) until they’re built into muscle memory.

  • 4. Holly  |  October 25, 2019 at 3:51 am

    I’m a massive fan of the PRIM method (from Sue Sentance)
    Either in the classroom or in private tuition, we start with looking at my code, then they adapt it, and once they have confidence they find themselves creating their own. It still bemuses me that we’re teaching what is in essence a language in this topic (albeit a logical math based one) and we don’t engage with our MFL colleagues who have a great system for scaffolding.

    • 5. Mark Guzdial  |  October 25, 2019 at 8:04 pm

      Holly, could you explain the term “MFL”?

      • 6. Holly  |  October 26, 2019 at 3:24 am

        Yes, sorry – Modern Foreign Languages


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,185 other subscribers


Recent Posts

Blog Stats

  • 2,060,401 hits
September 2019

CS Teaching Tips

%d bloggers like this: