Project based learning is one of the most powerful things that can be used to help people new to programming understand the concepts that they need to be successful. I think one of the biggest failings that programming teachers have is that they teaching programming from an objective-based approach.
Loops, Arrays, Events, etc…all of these things are taught in a “silo” and not integrated together to show the student how they connect to other structures. Teachers want students to show mastery a particular topic such as If Statements, but don’t show how If Statements can be used in various ways. We’re not showing the student the whole picture and with programming, the whole picture is important to see how the problem is being solved.
So what is project based learning?
Project Based Learning is a teaching method in which students gain knowledge and skills by working for an extended period of time to investigate and respond to a complex question, problem, or challenge. This is taught using a few principals:
Significant Content – At its core, the project is focused on teaching students important knowledge and skills, derived from standards and key concepts at the heart of academic subjects.
In-Depth Inquiry – Students are engaged in an extended, rigorous process of asking questions, using resources, and developing answers.
Driving Question – Project work is focused by an open-ended question that students understand and find intriguing, which captures their task or frames their exploration.
Critique and Revision – The project includes processes for students to give and receive feedback on the quality of their work, leading them to make revisions or conduct further inquiry.
Public Audience – Students present their work to other people, beyond their classmates and teacher.
Sounds simple right?
So in programming we need to give students the whole picture so they can be prepared for the in-depth study that will take place. We need to focus on letting them drive the process and choose a topic that they find interesting. We have to be presenting our students with timely feedback and critique and we need to encourage students to show their work to a wider audience.
Project based learning has been widely used in education for years but it appears to be a foreign concept in programming education. This is one of the basic foundational ideas that I used to found C# Learning so that students can learn programming from this more focused approach that helps point the student down the path of real learning and not just memorization or frustration.