Project-Based Learning: Learning Real World Skills Through Long-Term Collaboration

Tuesday, July 28th 2020, 8:54:49 am

Renne Castro uses Project Based Learning to teach his students more than just the fundamentals of computer science. Renne’s Bayside High School students come together in teams to work on a four-month project of their own choosing, learning to collaborate as they would in a real job. After each team identifies the societal problem they want to solve, they use computational thinking methods to determine the languages and other CS tools they will need to complete the project. The students then learn those skills—often by finding their own resources such as video tutorials—and implement them in order to develop, code, and deliver their product to a community of their peers and potential future employers.

Though this video highlights his work with twelfth graders, Renne works to integrate PBL projects at every grade level. “Project Based Learning provides a meaningful outlet in which to explore, experiment, and demonstrate CS mastery,” he says. “The product that comes from a PBL activity provides students a tangible artifact that they can put on their resume, write about on college essays and use as speaking points on interviews.”


PBL empowers students to collaborate, take ownership of their work, and put CS practices into action. PBL can be an extremely meaningful experience for students, but it takes time and flexibility to pull off in the classroom. Renne cautions you may need to compromise on instruction time and certain content in order to give students time to see their ideas through from start to finish. That compromise is worth it, he says, because of the experience and career skills that students build. But students who need extra instruction or time to practice key skills may find more value with smaller or shorter term projects.



  • Determine how you’ll help students with idea generation. Talk to other teachers in your school to see what topics they’ll be covering throughout the year so you can prepare a few examples of projects or products they’ll be able to connect to.
  • Decide how many weeks or months you’ll dedicate to the long-term project.
  • Start approaching potential experts to judge the projects at the end.


  • Before any coding work begins, challenge students to identify an unmet need within a topic they’re passionate about. Allow them the opportunity to pitch the idea and the freedom and time to form their own teams and set the tasks they’ll need to accomplish.
  • Once the projects, teams, and tasks have been set, help each team determine the CS tools they’ll need to implement their project. Let them lead the discussions so they resemble a peer-to-peer interaction more than a teacher-to-student interaction. If they’ve chosen technologies your school doesn’t teach, identify resources for them and also encourage them to find their own.
  • Guide students when they’re preparing their presentations by showing them what a successful presentation looks like.
  • Arrange a presentation day or days, complete with a judging panel.


The PBL approach to teaching CS incorporates the practices of Analyze, Prototype, and Communicate, which are represented in all four CS perspectives. Therefore, to adapt this lesson, determine how your students can Analyze, Prototype, and Communicate their product with the perspective that best matches the level they’re at currently.


  • Prepare your students. “There is a lot of work up front in terms of the preparation of expectations, project timing, and assessment,” says Renne. “This has to be communicated to the students in the beginning so they understand the scope and desired outcome of the PBL.”
  • Don’t leave assessment to the end. “Assessments must be included throughout the PBL,” says Renne, suggesting presentations, descriptions, progress reports, and code review as examples. “This ensures students stay engaged throughout the PBL.”
  • Be sensitive to the grade level and current abilities of your students. Renne suggests executing PBL with the four high school levels in the following ways:
    • Ninth grade: Challenge students to develop video games over the course of five weeks. Have students deliver a simple concept presentation. Then, allow them to figure out as a team how they will accomplish the project during the implementation phase. Finally, students will share the results of their work by demonstrating their games to the class. You can also select some students to further present to an outside audience.
    • Tenth grade: Direct students to develop a tutorial website in an “academic” area of their choice by incorporating the various web technologies they’ve learned. Expose students to more formal development tools such as wireframing and collaboration. The scope of this project will force students to take on different roles and accomplish different tasks.
    • Eleventh grade: Encourage students at this level to explore mobile app development, web development with a focus on server-side programming, and/or data science.
    • Twelfth grade: Take off the training wheels. As shown in the video, students have amassed a wealth of knowledge and experience by this point. Take on the role of mentor as your students test the freedom of bringing their own ideas to life over four months.



  • Computational thinking: Expressing problems and their solutions in ways that a computer could also execute
  • Self-paced learning: Allowing students to learn on their own time and schedule.
  • Project ideation: The process where you generate ideas and solutions through sessions such as Sketching, Prototyping, Brainstorming, etc.
  • CS practices (Analyze, Prototype, Communicate): The intertwined methods by which computer science is studied and applied.

Resource content by Renee Castro, with the assistance of the CS4All team. Video by Rook Productions. Consultation by Tythe Design and Tiny Panther. Published by CS4All.