Get Started Teaching Coding in 3 Steps

By Jorge Valenzuela

Young student learning to code in Scratch.

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.

Core coding concepts include the following:

  • Inputs: Users must be able to send information into programs they are interacting with. This can be done with various input devices or feeds. The most common are text files, striking keys on a keyboard or a data feed from a game controller with a motion sensor.
  • Outputs: Once data is inputted into a program, it will need to output responses. Responses are typically outputted to a screen via text or graphics, data to other applications or sound to a device. Printed documents are also output.
  • Loops: A programming structure used in programs to repeat a sequence of instructions until a specific condition is met. The two types of loops students should know how to use are counting loops and conditional loops (while loop and for loop).
  • Functions: Refers to a section of a program that performs a particular task, and in this context, a function represents a procedure or routine that contains instructions used for output from its input.
  • Conditional statements (logic): The ability to apply this concept makes programming powerful — as it enables the capability in applications to test variables against a value and act in a specific way if the condition is met by it (the variable) or differently if it is not. An example of this can be a logic statement for an operation that is evaluated to be either true or false. If and if/else statements are also an example of conditional statements and are the most common syntax across programming languages.
  • Variables: Refers to a storage space in memory that can hold value and can be stored and changed in a computer program. A variable changing can depend on either conditions or the information given to the program. Variable types can be expressed as characters, character strings, numeric values, memory addresses and even objects.

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.
  • Pitsco Education: Teach everyone to code with several systems designed for all classroom levels — KUBO Robotics, Code Cube, Smart Buddies and the Shape Robotics Fable Learning System.

STEP 3: USE A Good Teaching Strategy

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 draw inspiration from the Workshop Model (WM) developed by Carmen Fariña and Lucy Calkins (for enhancing literacy). 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.

Image by — GSE Digital Reading and Writing Workshop 2015

In my adaptation of the WM, I use station rotations (during ‘Student Work Time — see above graphic) to 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.

This article was originally posted on this link.

If you like this work, please give it some claps, follow our publication and share this with your friends and colleagues.

Jorge Valenzuela is a teacher at Old Dominion University and the lead coach at Lifelong Learning Defined. Additionally, he is a national faculty of PBLWorks and a lead educator for littleBits. His work is aimed at helping educators understand and implement computational thinking, computer science, STEM, and project-based learning.

You can connect with Jorge @JorgeDoesPBL via Twitter and Instagram to continue the conversation.

--

--

Jorge Valenzuela
Lifelong Learning Defined in Computer Science Education

Jorge Valenzuela is a well-regarded and nationally recognized performance and education coach, author, and speaker at Lifelong Learning Defined.