How Might I Structure My CS Lesson as Project-Based Learning?

Tuesday, July 28th 2020, 9:47:14 pm

One of the most engaging elements of computer science (CS) is the ability, in most platforms, for students to immediately see the results of their work. This lends itself to project-based learning by providing a constant and efficient testing ground for new ideas. Additionally, students are much more likely to understand and apply concepts if they can use their knowledge to effect change in the real world.

In the following sections we will:

  • Explain briefly project-based education in CS.
  • Highlight aspects that you should include in your project-based learning (PBL) classroom.
  • Detail some best practices for implementing CS in your classroom.
  • Provide a list of resources to help you plan your CS PBL units.

PBL in CS Education

PBL is a student-centered pedagogy in which students learn about a subject through the experience of completing an open-ended project. Watch this video from the Buck Institute to get a quick overview if you’ve never implemented PBL in the classroom. Students learn both CS practices and concepts when they’re engaged in open-ended CS projects.

For example, during a meaningful CS unit, you may ask students to create a website communicating what they recently learned about a subject. During the unit, students can engage in all three CS practices:

  • Prototype a website.
  • Analyze each others websites to provide feedback.
  • Communicate their thinking, challenges, and iterations.

Benefits of PBL in CS Education

Students authentically utilize computing practices and multiple computing concepts by engaging in goal-oriented approaches. They apply skills learned in lessons, model relevant industry problem-solving, and provide space for multiple pathways to a given solution. You may also have students collaborate during this project, which if done well, adds authenticity to the task. Furthermore, the autonomy and accountability for project completion can give students control and accountability for their learning.  

By using this PBL-focused approach, students from a wide spectrum of abilities and approaches can achieve success in CS. For these reasons and more, we recommend that all CS units or courses be PBL focused or contain strong elements of PBL.

What Should Be Included in PBL?

Great projects have challenging problems or questions, give students time and independence to drive their projects while providing helpful boundaries, and provide opportunities for students to share and talk about their work with peers and or visitors.


Choose or write a driving question that students will understand and that achieves the following:

  • Sustains students’ interest during the project and challenges them to go beyond.
  • Includes multiple solutions.
  • Engages students in higher-level thinking.
  • Directs students toward the project’s goals and objectives.
  • Addresses authentic concerns (for example, where is the content being taught used in the real world?).
  • Connects to real-world and authentic problems and issues.

This first step can be the most important and most difficult. The Buck Institute for Education has a YouTube channel devoted to PBL that may prove useful to you as grapple with designing your projects.


Students should be given some freedom in the artifact or product they are creating. Practically speaking, it may be helpful to limit the potential products. Here are some examples you may use to help limit your classroom’s scope:

  • Newscasts
  • Computer applications
  • Websites
  • Slideshows
  • Videos
  • Digital scrapbooks
  • Flowcharts
  • Computer databases

Start off small. If you and your students haven’t engaged in PBL together, it is best to start with a short project, such as a five-day project.

  • Have one topic: a driving question.
  • The audience for the end product of the project should be limited and relevant to the students. Audience examples may be the classroom, the school, or the community.


Be sure to step back when problems, challenges, or questions arise to allow students to take the lead. You should provide time for students to independently drive the production of their projects and give them an opportunity to present their products—ensuring that students of different backgrounds and comfort levels are offered different ways to express themselves to the class.


Giving students time to present their products is the first step to sharing. A post-project review of the different solutions that students or groups found with structured reflection, discussion, and questioning highlights the underlying CS practices and concepts behind each solution. It is our hope that students gain an understanding of how open-ended problems are solved and what the application of CS practices and concepts will be. There are many ways to do a post-project review, but here are a few examples to get you thinking:

  • Science fairs or showcases in the classroom or on a larger scale in your school.
  • Presentations to peers or to visitors from outside the classroom—perhaps visitors who are connected to the project topic.
  • Gallery walks in the classroom where students view or use each other projects perhaps with a structured reflection guide or prompts to offer written feedback or suggestions.

Best Practices for Implementing PBL in a CS Classroom

Here are some practices we use in our CS classrooms. This is by no means an exhaustive list, but there are aspects that we feel will support authentic project-based learning in different classroom contexts.

  • Assigning daily tasks.
  • Structuring student collaboration.
  • Taking time for self-reflection.


In our experience, we have found that assigning a specific project task to students each day works well because it ensures they are able to stay on task throughout the project. Here’s a sample five-day plan:

  • Day 1: Students begin research and assign a graphic organizer to complete.
  • Day 2: Students imagine project ideas individually and share them in the gallery walk to form idea-driven groups.
  • Day 3: Students assign roles, find/collect materials or assets they need to build their project, and sketch or flowchart the different steps or states in the project.
  • Day 4: Students write code for their projects that represents each step or state in their project. For example, if it’s a game, students create all the characters, stages, win state, and end-game state.
  • Day 5: Students connect each step in the project with code that allows the user to interact with the program in a meaningful way. For example, if it’s a game, students add controls that let the user play the game.

Assessing daily tasks may be more complicated than in other classrooms because students’ projects may be at different points of completion, or products may look different. Here are three strategies we’ve used:

  • Collect and grade daily tasks as a classwork assignment. Make this expectation clear when assigning the task.
  • Walk around from group to group and gather data.
  • Ask students to log progress in a project log that includes reflection questions.


Project-based learning is made more authentic when students are working in groups. Here are some of our best practices.

  • Assign students in groups of three to four per project.
  • Have each student group develop a graphic organizer. A graphic organizer is useful to educators as an artifact for collecting and setting expectations against, and it is helpful to students for structured thinking. Graphic organizers can be used daily. Example components could include:
    • The real-world problem students are tasked to address.
    • A space to brainstorm solutions.
    • What research they found or should look for.
    • Potential software they can use.
    • The pros and cons of their solutions or findings
    • How they might implement their solution.
  • Ask each student group to review and agree to a team contract. (See the following example.) Team contracts can be distributed as traditional contracts done on paper, or students can use Google Forms. The goal of the team contract is to clearly set expectations so that students can self-assess their progress. There are other ways of communicating expectations, but we like the contract because it mirrors the real world.
Sample team contract. Click image for Google document version
  • What subject are you creating the product for?
  • What platform are you using to create the platform?
  • What software are you using?

Taking Time for Self-Reflection

Self-reflection asks students to recall, synthesize, and make inferences about their work. This is great for students’ learning, but it is also extremely helpful when assessing students. The sample reflection form below has a range of prompts and questions that can be used at the end of a project. Some may also be adapted for more daily or weekly self-reflection. View the Self-Reflection on Project Work document for an example.


Do you have more questions about PBL or want resources to help you think through things that we didn’t address? Check out these resources for tutorials, videos, worksheets, and more:


  • CS education lends itself well to project-based learning because students need time to puzzle through issues. Structure PBL days with clear, understandable daily tasks that can be communicated while still giving students time to work.
  • PBL can make learning authentic when done with open-ended driven questions and students working in teams.
  • Make time for self-reflection that lets student synthesize their work with CS practices and concepts.

Resource content by Tim Feimer, with the assistance of the CS4All team. Consultation by Tythe Design and Tiny Panther. Published by CS4All.