There's been significant talk about "coding" lately -- from the second annual "Hour of Code" event hosted in December by Code.org, to countries like Denmark and England incorporating computer programming into their curriculum. Here in the U.S., there are several ways in which computer programming activities support the Common Core State Standards.
Differentiating Between "Programming" and "Coding"
When students use tools such as Code Studio, Scratch, and Tynker, what they're doing is called programming. Programming is about the logic that goes into building a program. The blocks already exist -- they just have to be placed in the correct order to get the program to work. This is the beginner level that most college computer programming students take.
Coding, on the other hand, has to do with the syntax, the fine details that allow a computer script to work. Think of coding as a spelling test where a sentence must have words correctly ordered with proper grammar mechanics. If one single thing is wrong, then the grade on the spelling test decreases. Coding is similar, for if one thing is typed incorrectly, then the code won't work.
Common Core Integration
Below are some ways in which programming supports the CCSS. Items marked with an asterisk (*) mean that integration can be modified for the same standard in different grade levels.
- In programming activities, students must persevere in problem solving.
- Use wait blocks and movement blocks in programs like Scratch and Tynker to differentiate between .01, .1, 1, and 10 seconds.
- Have students create drawings in programs that repeat a pattern. This can be done with the "repeat" (a.k.a. "loop") block. Students can demonstrate their understanding of multiplicative procedures and patterns that follow a specific rule.
4.MD.5 and 4.MD.6
5.G.1, 5.G.2, and 6.G.3
- In Scratch, choose "Backdrop" and, under "Categories," click "Other." The last backdrop in "Other" is an XY grid. Students can use this grid to graph points and draw shapes within the coordinate system.
6.NS.5, 6.NS.6, and 6.NS.7
- Have students build programs where actors (or sprites) move to specific points on a coordinate plane, based on an action (a conditional).
English Language Arts
- Have students describe what would happen if the blocks in a program went in a specific order.
- Identify cause-and-effect relationships by using "if this, then. . ." blocks.
- Locate answers to a question using keywords, sidebars, and glossaries. (Programming tools use menus and categories to organize blocks.)
- Create digital stories in programming platforms such as Scratch and Tynker, changing the scene (background) between events.
- Create tutorials on how to advance through a programming level.
W.2 and WHST.2: *K-8
- Compose a tutorial on how to advance through a level/stage, or how to animate a character.
- Write a comparative analysis, analyzing two different coding platforms or languages.
RST.3 and RST.4: *6-8
When teaching computer programming to our students, it's important to focus on the pedagogy. With a content area that is foreign to so many of us, here are seven habits to help you on your journey.
1. Get frustrated!
Show your students that you're human. When they see how you react to challenges, they'll begin to follow suit.
2. Adopt the iteration mindset.
Life is all about learning how to persevere. It's OK to make mistakes. We should be teaching our students how to learn from their mistakes.
3. Allow students to become the experts.
Give your students a chance to shine.
4. Incorporate the "ask 3 before me" method.
By having students ask others for assistance, it takes the pressure off of you. Plus, it encourages students to be interdependent on one another. (SL.3 across K-5)
5. Utilize pair programming.
In pair programming, one student operates as the driver (using the computer), and the other student operates as the navigator (instructing the driver on how to build the program). Most of the big tech companies (think: Google) utilize pair programming in order to reduce the frequency of mistakes (bugs) in a program.
6. Complete lessons before assigning them.
Try to be at least one step ahead of your students, so that if they encounter a problem that no one else in the class has seen, you can help guide them.
7. Learn keywords.
By learning the definitions of words like loop, conditional, sprite, and restitution, you're better able to explain the meaning of these words to students.
Social Media Support Networks
Following is a list of hashtags and Twitter chats in which you can participate:
On Google Plus:
Here is a crowd-sourced list of coding and programming tools, categorized by price, device, and ideal age group.
Finally, I invite you to check out my playlist for videos on computer programming in the curriculum activities.
Please share your thoughts and ideas about this post in the comments section below.