Edutopia | How to Get Started Teaching Coding
A three-step plan to help teachers in any subject and any grade teach the foundations of coding.
This original post can be accessed via Edutopia on this link.
I first learned about coding and computer science (CS) in college about 20 years ago. Looking back, not much has changed in the foundational concepts or core practices in CS. What has changed is who can teach it and where it can live in the curriculum—today educators in any subject can teach coding.
For example, an English language arts teacher may teach a lesson that helps students make connections between coding with proper syntax and writing with correct grammar. An early elementary teacher may set up a project where a programmed robot travels on a floor map so that students can begin to comprehend how their lives relate to a broader community and the larger world.
Many teachers are looking for creative and practical ways to teach coding and programming. Although the two terms are often used interchangeably, there is a difference between them. Coding is typing and testing—writing code—and a coder translates a list of requirements into a programming language like Java, Python, C++, etc. Programming is broader, involving coding as part of a larger process: identifying a problem, finding the solution, coding the solution, and then testing the solution. This process requires the programmer to understand algorithms and data structures, among other things.
Teachers preparing students in this set of skills will need to get them grounded in the basics and will need to use appropriate edtech in tandem with good teaching practices. Here’s how to start in three steps.
STEP 1: GET STUDENTS GROUNDED IN CORE CODING CONCEPTS
Every language—spoken or written—has a grammar, a set of principles that define parameters for constructing a sentence or successive sentences. Similarly, coding requires coders to be able to understand and implement fundamental coding concepts using the appropriate syntax (grammar). This is a requirement, no matter the programming language.
Critical coding concepts include inputs and outputs, loops, functions, conditional statements, and variables.
STEP 2: PICK THE RIGHT TOOL FOR THE JOB
The resource you use to teach coding will need to augment your instruction, taking students beyond following step-by-step directions. Moreover, it will need to get them grounded in the core coding concepts mentioned above and allow them to see the effects of each line of code executed in real time. That will provide them with moments of success, creating confidence and a willingness to tackle more complex coding tasks.
These tools come with curriculum resources that you can adapt to your coding lessons:
Code.org: Intro to Programming, part of the CS Principles Curriculum Guide, lets you adapt lessons to help students learn programming basics by applying algorithms and abstraction to draw pictures.
littleBits Code Kit: The Code Kit offers a comprehensive solution for teaching kids to design their own games and physical inventions. It comes with over 20 hours of adaptable standards-based lessons, videos, presentation slides, an inventor log, rubrics, and code tutorials addressing key coding concepts in tandem with game-based coding.
Scratch for Educators: With a plethora of resources and tutorials, the Scratch platform provides teachers with tools for coaching students in programming interactive stories, games, and animations.
STEP 3: USE THE WORKSHOP MODEL
Most likely, all of our students will not be coding at the same level. Once we know the basics of coding and have a resource for teaching, it’s important to employ sound teaching strategies to reach them all.
For this purpose, I like to use the Workshop Model (WM) developed by Carmen Fariña and Lucy Calkins. The WM structure allows me to organize and monitor learning while helping my students become more responsible for their own mastery as they build competence in coding. Engaging them in this structure also leads to increased confidence and willingness to extend their presumed capabilities for the multilayered skill of coding.
In my adaptation of the WM, I conduct mini-lessons and allow groups of students to create programs and build their coding skills with appropriate activities for their varied levels. Teachers can facilitate learning for learners new to coding by having them participate in the following station rotations within the WM structure:
Coding with the teacher: For learners who are very new, having me model and coach by their side gives them the confidence that they too can code their first program.
Pair programming: Pair programming (PP) is a strategy used by software developers and students in CS classes for learning collaboratively and completing big and complex projects. When both partners are newbies, the PP strategy has potential pitfalls, so be sure to provide rubrics and make time for frequent teacher check-ins and student reflection.
Learning core concepts using personalized tutorials: As students gain more confidence with both the core concepts and edtech, I allow them to build further mastery independently by using tutorials that address specific coding skills (i.e., loops, functions, etc.). Again, have them use rubrics and provide frequent check-ins.
Coding is a multilayered skill that requires time, patience, effective use of edtech, and sound strategies for achieving mastery. Moreover, creating a computer scientist could take up to 25 years—it cannot happen in one class, lesson, or semester. Therefore, focus your teaching on the basics, building student capacity and getting them where they need to be, which is the rigor level appropriate to their current understanding and grade level.