In my classroom, I introduce students to the engineering design process. This approach fosters a practical understanding of how to tackle complex problems systematically. Applying this process to my own teaching practice allowed me to address my Problem of Practice (PoP) with a structured framework, enhancing both my instructional design and the learning experience for my students. This blog reflects on the design process undertaken to create an accessible curriculum for teaching programming functions, guided by the Stanford Design Thinking modes, encompassing Empathize, Define, Ideate, Prototype, and Test. Throughout this process, I aimed to refine instructional strategies to effectively engage students in understanding functions, a fundamental yet challenging programming concept.
Empathize
The Empathize stage began with observing and understanding students' struggles with programming functions. Through empathy interviews and classroom observations, I identified that students often found the abstract nature of functions, parameters, and arguments difficult to grasp. This insight was crucial, as it highlighted the need for a curriculum that breaks down complex concepts into relatable, manageable steps. By entering the students' world, I recognized the importance of using familiar analogies and interactive activities to foster understanding.
Define
In the Define mode, I articulated the core problem: students struggle with comprehending functions due to the curriculum's lack of relatable examples and engaging activities. Using the Why-How Ladder, I delved deeper into this issue, identifying the root cause as the curriculum's failure to provide sufficient scaffolding and hands-on practice. This analysis led to a clear problem statement: to design a curriculum that integrates interactive, game-based learning to simplify the understanding of functions.
Ideate
During the Ideate phase, I brainstormed various approaches to make learning functions more accessible. This included integrating interactive tools, such as replit, visual studio code and creating lesson slides that emphasized key vocabulary and syntax. The goal was to develop a curriculum that not only teaches the technical aspects of functions but also connects them to real-world applications through engaging activities.
Prototype
The Prototyping stage involved creating lesson slides focused on teaching and assessing vocabulary terms, an unplugged activity where students defined their own functions on a whiteboard, and a "Functions Box" extension activity (see testing video below). These components were designed to reinforce understanding through varied learning modes. The prototype was tested with a small group of students, providing valuable feedback on the effectiveness of these instructional strategies.
Test
During the testing process, outlined in my testing report, I observed students engaging with the prototype. The feedback revealed that students could successfully label parts of a function and appreciated the addition of a song analogy for function calls. However, it became evident that additional scaffolding was needed. In response, I implemented a "We Do" section to guide students through defining and naming a function collaboratively. This iterative development highlighted the importance of empathy in instructional design—adapting strategies based on student feedback to meet their needs effectively.
Reflection on the Design Process
The design process was a journey of continuous learning and adaptation. Each mode contributed to a deeper understanding of the students' needs and the challenges they face in learning programming functions. Empathy played a pivotal role, guiding design decisions that prioritized student perspectives and experiences. The Why-How Ladder was instrumental in identifying root causes and directing the design towards solutions that address fundamental learning challenges.
Conclusion
Through the application of design thinking, I developed a curriculum that aims to make learning functions more accessible and engaging. By integrating interactive activities, relatable analogies, and incremental scaffolding, the curriculum supports students’ diverse background knowledge and fosters independent problem-solving skills. This process reinforces the transformative power of empathy and design thinking in educational settings, ensuring that instructional strategies are tailored to meet the unique needs of every student.