A Problem-Based Learning Approach to Teaching Design in CS1
Abstract
Design skills are increasingly recognized as a core competency for software
professionals. Unfortunately, these skills are difficult to teach because
design requires freedom and open-ended thinking, but new designers require a
structured process to keep them from being overwhelmed by possibilities. We
scaffolded this by creating worksheets for every Design Thinking step, and
embedding them in a PowerPoint deck on which students can collaborate. We
present our experience teaching a team design project course to 200
first-year-university students, taking them from user interviews to functional
prototypes. To challenge and support every student in a class where high school
programming experience ranged from zero hours to three computer science
courses, we gave teams the option of developing single-user or multi-user
(distributed) web applications, using two Event-Driven Programming frameworks.
We identified common failure modes from previous years, and developed the
scaffolded approach and problem definition to avoid them. The techniques
developed include using a "game matrix" for structured brainstorming and
developing projects that require students to empathize with users very
different from themselves. We present quantitative and qualitative evidence
from surveys and focus groups that show how these strategies impacted learning,
and the extent to which students' awareness of the strategies led to the
development of metacognitive abilities.