I first discovered computer science (CS) and coding more than 20 years ago while completing my undergraduate work. Little did I know that one day CS would be the future of education or that I would be working with others to make these skills accessible to all students.
It takes will, know-how, technology tools, practical strategies and patience to do this work. Having coached many educators in project-based learning (PBL) and engineering by design (EbD) I’ve come to realize that computer science is best integrated across content areas by teaching design and inquiry practices in tandem with CS.
In my previous role as a technology and engineering education (TEE) curriculum specialist at Richmond Public Schools (RPS), I collaborated with fellow TEE teacher Nicholas Briley to develop the coding skills of the students in our engineering classes while teaching them how to build and use electronic circuits. Here's how we did it in four steps:
Step 1: Learn the skills and the tools.
Before introducing new CS concepts and practices to students, I highly recommend being very clear about which learning objectives you want them to master. With that in mind, we had already done considerable integration in our TEE program with LEGO Mindstorms and VEX IQ kits to help kids master programming robots and learn how different components like gears, motors and sensors work. Now we needed to help them learn basic coding principles, but first we needed to learn them ourselves.
My colleague and I spent a couple of weeks after school learning to use the Code Kit by littleBits. The Code Kit is a tech tool that teaches learners basic coding principles through app tutorials while helping them apply coding skills to building games that are controlled by Google Blockly-based code.
For us, learning to code was a bit daunting because it requires time and consistency to be a good coder, and time is something that is in short supply for teachers. Also, to be a proficient coder, it's critical to learn how to develop a product, not just write code.
But we carved out time and immersed ourselves in learning the basics (input/output, functions, loops and variables). We got a little better each day, and we applied the new skills to the Code Kit design products. When we felt confident enough to use, teach and troubleshoot with the tool, we then began working with students.
Step 2: Start with computational thinking, algorithmic thinking and design.
At first, we didn’t directly tell our students that they would be learning to code in this new project. Instead, we told them they would be learning and applying new skills but within familiar contexts of electronics, engineering design and model making.
We already knew that some of our students needed assistance mastering computational thinking thought processes so we focused on helping them gain a better understanding of algorithmic thinking by instilling in them the importance of knowing and taking steps to solve a problem, which is crucial knowledge for coding.
We introduced it this way so that they wouldn’t initially focus so much on coding but more on the steps of the design (or project) that would include coding for successful implementation.
To familiarize them with the technology and coding learning environment, we allowed them to explore the Code Kit, app and videos. All were excited by the cool gadgets and electronics, but some were intimidated by the app and the unfamiliar coding tutorials.
We eased these concerns by sharing insights that Briley and I had learned to improve our own coding skills. We even modeled the use of the app by exploring its sections on the electronic whiteboard with students. And we finished by showing them a working model of a hot potato game we built and how to use the app for implementation. We also let the students know that we would be right there with them as they learned to use the tools.
Step 3: Introduce new knowledge and tools through inquiry or design.
Like many educators, we were already using engineering design as an ongoing student-centered process for helping our students construct new knowledge and technological literacy. In this new project, we allowed them to apply each step in the design process but this time we included coding.
We quickly discovered that some of the students already knew the basics even better than we did. Since we already were well versed in the use of the Code Kit, we used the app to practice effective differentiation techniques by conducting mini-lessons and providing scaffolds of the concepts our learners needed most (either individually or in groups).
Some of the mini-lessons we covered were on specific coding skills, such as looping and functions, documentation of learning and reading instructions. This technique helped to personalize learning and to assist those who needed assistance while letting the others push forward.
There was a lot of variation in our student’s mastery of the coding principles (like loops and functions) or how electronic circuits can add light, sound and or motion to design projects. The experience taught us that everyone wasn’t or didn’t need to be to be in the same place academically within the project (or any given project). I also include us – the teachers – when I say, everyone! We all learn on our own timelines, and that’s OK.
For teachers who aren’t specifically teaching kids engineering, having students employ other systematic approaches for measurement, observation, experiments (i.e., the scientific method), integration of the arts and also design thinking will heighten their levels of cognition.
When educators structure their learning environments to include design and inquiry processes consistently, we increase the development of students who are both analytical and critical thinkers. Both have the ability to innovate.
While not every learner will become a scientist or an engineer, by knowing the practices of a scientist or an engineer, all students can understand how to solve problems, how systems work, how natural phenomena behave, and how effective use of technology and their subjects connect. These skills have wide-ranging career and job applications, including technicians, operators, customer service representatives, or health and medical professionals in a career and technical education program.
Step 4: Incorporate reflection into your work with students.
A John Dewey quote that I always share with educators is, “We do not learn from experience. We learn from reflecting on experience.” Incorporating reflection into our work with students is something that we began doing at various stages of the design process. We found the practice beneficial for helping students make critical connections to other branches of knowledge, to learn from failure and also for deepening their understanding of the subject matter.
In this project, we had students reflect by writing in engineering notebooks and would often follow up with either group discussions or individual consultations (a scientific journal can serve a similar purpose). Among the reflections we asked students to make were, how could engineers apply the use of electronic tools and the coding skills to control a technological system designed to meet human needs (i.e., clean water, safe modes of transportation, green building/construction, etc.)
Student responses included:
- Coding is used by engineers to give machines a purpose or specific function.
- Engineers use electronic circuits to power everything around us.
- Engineers help make the world better by creating systems that use electronics and coding.
By helping our students connect their new learning to specific engineering careers (mechanical, electrical, etc.), and understand how they can use knowledge and tools to help others, we gained more know-how for developing design thinkers who are also global citizens (as emphasized in the ISTE Standards for Students).
Remember, computer science is fun!
Before introducing new CS content or technology tools to students, it’s essential to assess your knowledge of the content and skills needed for effective teaching as well. Once you’re set to start, make time for researching, learning, playing and testing either on your own or with a colleague. Don’t forget to have fun with your learners and also, remember that learning has no finish line! As author Tony Robbins says, “Repetition is the mother of skill!”
Jorge Valenzuela is a graduate teaching assistant and doctoral student at Old Dominion University, a national faculty of the Buck Institute for Education and a national teacher effectiveness coach with the International Technology and Engineering Educators Association (ITEEA). He is a member of the first Lead Educators Cohort for littleBits. You can connect with Jorge on Twitter @JorgeDoesPBL to continue the conversation.