Search This Blog

Saturday, February 6, 2021

Personalized Programming Pathways: developing student-led learning in CS & coding

I'm trying to rethink the way that I teach my students about coding. I've always been a fan of a project-based approach over any other, and this year I started thinking about how I might also make that experience more personalized to my students' interests and needs. 

Having spent nearly a year teaching 2nd grade online during this pandemic, personalizing the learning experience feels even more important now than ever before. I am constantly seeking out ways to motivate, inspire and engage a group of 7 and 8 year olds who are all having to do this school thing more on their own than ever before.

Design Challenge

Most recently, my latest experiment was to pose a programming design challenge to a group of my more advanced learners. In math, we've been spending a lot of time on strategies for adding and subtracting 2-digit numbers and I noticed that a majority of my students were still having trouble mastering their early facts (sums/subtraction within 20), which is then getting in the way of their work with larger numbers. 

So, the problem that I posed to my programming groups was: "design a math video game to help other 1st & 2nd grade students practice their math facts".

Process

Honestly, I'm figuring out this process as we go. I knew a group of my students needed something more challenging to work on, I knew they enjoyed the coding we'd done so far this year, and I wanted there to be a design element since we are a design-focused TK-8 school. Most of the decisions I've made about the process have happened on the fly (i.e. the night before the next assignment or the day of). Here's what we've come up with so far:

  • Sketch out or storyboard a plan for your game with pencil & paper
    • Label what the user will see on the screen
    • Label what the user will have to do or accomplish
    • Label any buttons or interactive elements you think you might want to have
  • Conference with teacher about your plan
    • Think about what coding and design skills you already have
    • Create a list of skills you need to learn in order to move forward with your game
  • Complete coding mini-lessons
    • Skills assigned to individual students based on their requests
  • Use what's learned in mini-lessons to build out video game prototype in Scratch

Personalized Coding Pathways


I conferenced with each student individually to review their plans and determine what skills they already knew and what coding & design skills they would need to learn in order to realize their project. I was impressed to see that they were able to identify quite a few skills that would better help them to create what they wanted. They didn't necessarily use all of  the coding terminology in their descriptions, but I went ahead and added the vocabulary terms as we went along.

After meeting with each student, I looked for patterns in their requests and I've started developing mini-lessons and challenges to help them learn and practice new skills. 

My lesson design plans:
  • Keep it short to ensure that students are able to maintain attention and so as not to overwhelm their cognitive load for new material. 
  • Package each mini-lesson into a "hyperdoc" format with UDL design principles in mind-- text option, video option, lots of visuals-- so they all have different ways of accessing the new content. 
  • At the end of each mini-lesson, students complete a mini-make to demonstrate understanding (by following along with a video example & customizing as they like). 

So far students have completed mini-lessons (in Scratch) on:
  • Using the ask/answer blocks 
  • Using selection/conditional statements (if/then/else blocks)
  • Creating & using a score keeping variable 
  • Creating & using lists
  • Creating a game timer (coming soon with the help of another wonderful educator in Canada, Andrew McDonald)
  • Creating a side-scrolling effect in game (coming soon)

So far, so good. Students have maintained engagement and are starting to incorporate their new programming skills into the actual games that they want to build. 

Additional Personalization Plans


1) Build out collection of mini-lessons

As students start building out their final game prototypes, we'll continue to revisit their individual learning needs and I can create additional mini-lessons based on those evolving needs. Ideally, I can accumulate a collection of mini-lessons that can be used with future classes and hopefully in the CS class I'm designing and opening at our school site next year.

2) Badging

In the future, I'd also like to add a gamified element to the learning process to help students celebrate their learning, track their growth, and identify peer "experts" that they can learn with and from. 

This year I successfully launched a digital skills badging system with my 2nd graders, and in years past I used a similar badging system in a cross-grade level digital making/programming explore class for 2nd-4th graders. I'd like to combine and expand on the badging system to use in my CS classes in the future.

 

3) Peer & Self-assessment process

I'd also like to embed more self- assessment and possibly peer assessment in the process. In our online format this year I've lost momentum with the self-assessment process that had become such a regular routine in the classroom. I am still using learning targets to help students clearly identify the specific goal they are working toward, but trying to get back to a self-assessment process to support more reflection on their learning and next steps.

CS learning targets example