Search This Blog

Thursday, August 15, 2019

Raspberry Pi Troubleshooting Printable

I noticed among my colleagues in the last couple of years that a barrier for them in getting started with the Raspberry Pi is not knowing how to troubleshoot common issues that arise in the classroom. I also discovered while using the Pi with my elementary students that I often need a quick reference sheet for them to use when doing their own troubleshooting. For my students, it takes too much time during our school day to try and navigate the web to find the help they need mid-project.

And so, I decided to put together a printable 1-pager of common issues that both teachers and students can quickly reference when working with the Raspberry Pi in school. Feedback welcomed!
(you can also access this document via Piktochart)


Tuesday, August 13, 2019

Elementary CS through the lens of design thinking

A couple of weeks ago, Andrew Collins (inspired by an article on the CSforAll website) asked the Picademy community whether anyone is using design thinking methods with students in their programming and digital making work. As an educator at a school centered around design thinking mindsets (Campbell School of Innovation), I am excited about the impact of design thinking in our programming and making work.

In the last couple of years I've tried to move beyond simply offering "color by numbers" programming lessons. Rather, a number of the programming and digital making lessons in my classes are now centered around solving a real problem or designing for a "user".

Some background on design thinking...

Design thinking is an iterative and creative problem solving method that has been in play in the business world for several decades and has really been made popular in recent decades by IDEO and the Stanford d.School. It's only been in about the last 10 years (if that) that design thinking has made it's way into education and K-12 classrooms.

CSI design model
The thing that really makes design thinking unique from other design processes is the focus on "human-centered" design-- the empathy piece of the puzzle. Rather than designing what we think someone might like, we engage in needs analysis and empathy mapping to fully understand our audience and then design for their needs.

The design model that we created for, and use at, CSI is the Seek, Learn, Lead circular model. Using this model, we challenge our students to become opportunity seekers, innovators and reflective designers and makers.

My 1st design + programming project 

I've always been a fan of project-based programming lessons, but during the 2017-18 school year I wanted to up the ante a bit. So I partnered with talented art teacher, Kimiyo Cordero, and my creative TOSA colleague at the time, Misty Kluesner, to develop a project that challenged a group of middle school art students to learn some programming with the goal of creating a piece of art for an authentic audience. We asked students how they might create a statement piece about the environment for an audience of their peers and families by simulating the aurora with recycled materials and LEDs. (more details about the Aurora Borealis project available here)

Most of the students had zero experience coding and couldn't fathom the relationship between programming and art. But knowing that the plan was to make something unique for an authentic audience, they hesitantly agreed to give it a try. Over the course of about 5 class periods I introduced our group of 7th and 8th graders to physical computing using the Raspberry Pi, Sense HAT and lots and lots of loose LEDs. It didn't take long for students to begin experimenting with their programs to create more interesting lighting effects to potentially use in their sculptures and paintings.

Knowing they were creating their work for someone other than their teachers inspired them to invest more thought and energy into learning and making, and inspired me to develop more design-focused computer science content in order to bring empathy and meaning to our project-based programming lessons.

Learning CS through the design process


1. CS lessons are designed around opportunities/problems

2nd grade design brainstorm
This happens one of two ways in my classroom. Since we are, to an extent, still training our 2nd graders to seek out opportunities for design, this doesn't always come naturally or quickly. As such, my teaching team and I will sometimes already have a project in mind and will use a guided inquiry or brainstorm model to lead students to believe that they came up with the idea. 

For example, one of the NGSS 2nd grade performance expectations is for students to make observations of plants and animals in different habitats, and my grade level team thought, 'wouldn't it be fun to find a way to authentically observe nature in our local urban habitat?' A perfect opportunity to incorporate some digital making with our Raspberry Pi computers! Unfortunately, this was not a question that students had posed as of yet, so we led a little guided brainstorm session during which we asked students to help us come up with ideas for safely and respectfully observing urban wildlife on campus. As students built on each others' ideas, we, as a class, eventually landed on trying to build and program a camera that would take pictures of animals as they set off a motion sensor nearby. 

Touch sensor wildlife camera with Pibrella and MakeyMakey
The second method of lesson design requires a little bit of a willingness on the teacher's part to not overly plan for a class. While I do keep my "intro to physical computing" and "intro to coding" lessons well planned ahead, for the most part, I want to design our programming and making lessons around an opportunity for design that we've determined as a class. I may have generic outline for a lesson ready to go, but the details are added as students identify learning needs specific to their desired "make". For example, I'd originally thought we'd use motion sensors on the wildlife cameras, but students had a great idea to attract animals toward the cameras with food dishes. We ended up using my original "intro to PiCamera" lesson but then ended up adding a mini-lesson on Makey Makey to the mix so students could add a simple touch sensor instead.

2. Projects are empathy-based

The heart of design thinking is empathy. Design thinking helps students develop a mindset of innovating for the purpose of improving the lives of, and helping, others. Approaching computer science instruction through the lens of design thinking has inspired many of my young students to want to learn even more about programming and digital making as they discover just what you can create once you learn some basic electronics, coding and computer science skills. While they have fun playing games to learn on Code.org, it's when they are challenged to create for someone else that my students really push their thinking.

Auto pet feeder prototype with motor & ExplorerHAT
During our Innovators Hour course last Winter, I asked my group of 2nd-4th graders, as part of their culminating project, to look for a design opportunity in their home, school or community. They would then use their new programming and electronics skills to create a prototype to present at our Innovation Fair in the Spring. Students' ideas ranged from at art bot for a sibling that loves art, to an automatic pet feeder to help their busy family with chores, to a math study app for a friend, to a robot "reseeder" for California's wildfire scorched forests, to a button press "signal machine" for me so that I wouldn't have to stress my voice trying to get the classes attention during our hectic maker projects.

Thinking empathetically in design also transfers into other areas of their lives. Once students begin to develop a mindset for understanding other people, their motivations and their needs, they begin to think that way more often in their social lives as well. Giving them specific skills for understanding others in design means they also now have those specific skills to draw from when communicating with friends, settling conflicts or learning to understand someone else's unique characteristics or abilities.

Watch rapid prototype

3. Rapid prototyping & personalized learning through "authentic" builds

Students are highly engaged in computer science through design thinking because they are learning programming while creating authentic artifacts. Even my 2nd graders, with their introductory skills in programming and digital making can at least create "rapid prototypes" that mimic what their final device would look like. Rapid prototyping is the process of quickly creating a physical mock up of the design solution that you've envisioned. Sometimes my students come up with some really great ideas-- like the wallet scanner that a student wanted to build for his dad so that he'd never again be surprised that it was time for a trip to the ATM-- but don't yet have the skills (and, often, neither do I) to build a working model. However, students can create a rapid digital prototype that showcases what it is that their invention would do.

Google Classroom for personalized resources
Students also tend to be self-motivated during this process to research ways that they can most accurately prototype their idea, leading to new programming and electronics learning along the way and truly personalizing the learning experience for each student. Yes, it can be challenging at first for me when I'm trying to help 20-25 students with each of their own unique creations. However, instead of trying to teach each and every one of them how to make what they want to make, I shift to providing lessons on research and online learning strategies. I used Google Classroom to push out YouTube videos, websites and my Raspberry Pi activity cards to groups based on their skills they were trying to learn. I also connected teams that were working on similar skills so that they could support each other in learning what they needed to learn in order to complete their custom projects.

4. Reflect, Iterate & Develop Patience

Beyond prototyping an initial solution to a problem, design thinking also involves testing an idea, receiving feedback from a user and developing 2nd, 3rd, 4th, etc. iterations of the prototype to continually improve the original idea. This can involve a lot of patience... something that elementary aged students don't always have. Teaching students to be precise in their work, reflect on their work and iterate to improve has been much more successful in our design work than simply asking them to go back and fix their errors on a rote worksheet.

Early in the school year, during last year's primary election season, we studied government with our 2nd graders and talked about the importance of voting. We also read an article about how slow it can be for votes to be counted and the effect that has on the election process. Students then brainstormed ideas for "speeding up" the vote counting process and decided on creating a voting app because it could automatically calculate votes as people submitted.

At the start of the school year, most of our 2nd graders had little to no coding experience, so the work we started in Scratch at this point was complicated and at times frustrating. That being said, not a single student gave up on the project. They worked with each other to learn and fix their bugs, several made creative changes to their projects that made them unique from our class project, and some spent the entire school year continuing to iterate and improve upon their app as they learn more programming during the year. This kind of commitment to improving a project is unlike anything I'd ever seen before in my 10 years of teaching! For me, this was a testament to the impact that design thinking has on not just computer science instruction, but on learning in general.