Project Based Learning in Computer Science
Project based learning is the process of learning new skills through meaningful, real world projects. Project based learning (PBL from this point forward) was a natural and easy fit for what I wanted to do but still required a shift in how I taught my courses. Previously, I would often teach a set of skills and then assess those skills through projects. Alternative assessment is NOT project based learning. The first time I taught my version of AP CSP I followed a similar pattern. I taught my students through demonstrations of concepts while linking them to the official documentation for those skills.
When I taught MongoDB with NodeJS, I walked them through an entire project while consistently showing the students the mongoose/express docs I was taking the content from. What I found was that covering the material was not an effective way for my students to engage with the skills I wanted them to master. They churned out great projects because I have tremendous students but I could see that was the case because they put tremendous effort into researching the concepts, watching videos, and trial and error. After talking with my students I realized I had not made the impact I had hoped I would and I revisited my pedagogy for the 2020-2021 school year.
Shifting My Mindset
For the following school year I shifted my mindset and the class mindset. I framed the course to the students and myself as a research course. The students would be given the resources to learn the skills needed to build the projects they wanted to build. This was most evidently on display with my Full-Stack Project. This project was designed to teach and assess the students ability to use VueJS and Firebase with authentication and a database. Due to Covid-19 I didn't feel we could do the Node/MongoDB route and opted for the more scaffolded Firebase. The difference between the project in 2021 vs 2020 was how I choose to teach the content. In 2021 I did not teach them many of the skills needed to build the project before they started. I instead opted to teach them the basics of Vue and the basics of designing an API.
At this point the students had had me for over a year and half and already understood project design with flow-charting, story-boarding and Figma. The students were given a loose set of parameters that included accessibility and use VueJS with Firebase (including authentication and database). Each team of 4 then planned out a complete project despite not knowing how to implement many of the features they needed and wanted. Projects included an online multiplayer blackjack game, a tumblr clone, a recipe sharing app, a CMS for a school journalism team (which has now grown into a real app used in the school), a dating simulation and an escape room game. The most important part of PBL was underway, the students had real world projects that meant something to them.
Project Based Learning in Action
Once the planning stages were done the students needed some lessons and resources for using Firebase and Vue. The students were given articles or videos detailing how to set up authentication, state management, and accessing the database. I provided mini-lessons and demos on concepts they would need to implement early on. PBL isn't the absence of teacher directed lessons. PBL is the implementation of the lessons in meaningful ways as the students can immediately see the value of the lesson. Ideally, students have questions that are directly answered by the lesson you are about to do (When that happens you feel like a genius).
One day I did a mini-lesson on environment variables, another day we looked at the Firebase storage docs, one lesson was dedicated to recapping some of the key accessibility guidelines they would need to implement. The lessons didn't need to come before the project. In fact, the lessons had added meaning as they would directly answer questions the students had about how to implement the features they wanted in their apps. Many teams jumped ahead of my lessons and learned the skills in their own time before I had a chance. They were taking agency in their learning process.
The student response to the 2020-2021 school year was incredibly positive. One particular student emailed me and thanked me for "not babying her". The students appreciated designing and building the projects they wanted to build while being given the resources to do so. Reading the documentation for Firebase and Vue, seeking out the answers to their questions from Google, and working together to problem solve made the students feel more like they were developers doing their job and less like students in a high school class. PBL isn't going to replace every lesson for every skill you teach.
With standardized tests, the reality of 40 minute periods and curriculum you can hardly cover in a year it is expected some content just gets taught the traditional way. For me and my classes, the bulk of my content will always be taught through projects. My students feel comfortable solving their own issues, taking their learning into their own hands, and are ready for the realities of the college and career where critical thinking and learning on the job is key.