There are several ways to start learning about code, and each offers something a little different. Not all coding sites are created equal, and not every site or initiative works for every teacher or learner. A playful, introductory experience might not satisfy a teacher looking for a civic-minded coding experience, while an in-depth tutorial on programming games might not be the best starting place for a kid interested in web design. For novices, there are many ways to enter the coding ecosystem.
Online coding lessons
<Here’s Where to go/>
Several sites offer free, online, self-paced lessons to help you learn text-based code—coding in the raw, so to speak. Sites like Codecademy and Khan Academy offer free instruction, while others, like Treehouse (teamtreehouse.com provide free trials and subscription plans. Typically, several “lessons” introduce related ideas in a “unit”—such as how to build a simple webpage—and then ask you to write code you can check against a lesson’s right answer. Never be afraid to look at a site’s forums for help or to search online for a solution that escapes you.
It’s very common to learn to code by looking at working code and figuring out how and why it works. Most professional programmers work this way. Sites such as the Mozilla Developer Network (developer.mozilla.org/en-US), Stack Overflow (stackoverflow.com), and W3Schools (w3schools.com) offer different kinds of support, including crowdsourced answers to questions and reference information on standards in different languages and platforms.
Although the quality of lessons can be inconsistent, messing around on Codecademy or a similar site is an inexpensive way to learn the basics of programming, and how universal concepts transfer. Sites like CodePen (codepen.io) offer more experienced learners a multi-window development environment in which they can program and see the results of their work as they code for the web.
If coding with text seems too daunting at first, try Scratch, a visual drag-and-drop programming language from MIT’s Media Lab and Lifelong Kindergarten project. By assembling interlocking puzzle pieces of code, you can build animations, programs, and games that rival anything coded by hand.
Pencil Code is another online, visual programming app that lets learners move between Scratch-like coding blocks and text-based code. Incorporating tutorials, drawing, music, and interactive storytelling, Pencil Code is especially user-friendly.
Sometimes we need to see something happen in order to understand how it works. Physical computing is a great introduction to programming for beginners who may be confused about how cause-and-effect play out on a computer screen. It combines material objects with digital code to produce tangible projects that impact the “real world.”
Kim Wilkens, founder of Tech-Girls, a volunteer organization for girls and young women promoting gender equality in tech, says that physical computing helps “to get kids coding. Many students love the idea of building, but don’t have the same interest in coding until they experience writing the code that brings their creation to life.”
Popular DIY kits like Arduino (arduino.cc), Hummingbird (hummingbirdkit.com), and LEGO WeDo (http://ow.ly/LHuDB) let builders create circuits, robots, and physical storytelling scenes that are controlled by code and exported to the “build” via USB cable.
The Arduino microprocessor powers a variety of projects, from blinking lights to WiFi-enabled servers. Hummingbird robots feature robust servos and motors that can be programmed using Scratch, its spin-off Snap! (snap.berkeley.edu), or other visual programming apps like Ardublock (blog.ardublock.com) and CREATE Labs Visual Programmer (http://ow.ly/LRmXd).
LEGO WeDo sets let users build scenes from stories that become physically animated by code, and serve as an entry to more complex robotics construction sets from LEGO and other manufacturers, such as Vex (vexrobotics.com).
Face-to-face coding workshops
If you prefer to learn coding face-to-face with mentors and peers, you can look for a “code club” near home.
Black Girls Code (blackgirlscode.com) hosts workshops and development jams that teach participants how to make webpages, games, and other multimedia projects using code. You can find events in metropolitan areas like Atlanta, Dallas, Detroit, New York City, and San Francisco (http://ow.ly/LHuPW).
MOUSE (mouse.org) and Digital Harbor (digitalharbor.org) are youth development programs that help train student technologists to be human-centered designers who help people design solutions to real-world problems.
Coder Dojo (coderdojo.com), started in Ireland, runs volunteer-led coding workshops around the world. Parents attend with children and learn with them or help out with administrative tasks. You can find dojos near you on the organization’s website (coderdojo.com/attend).
Pursuitery (pursuitery.com), recently updated, is an online community of organizers and mentors who facilitate connected learning workshops around users’ passions, such as Minecraft and Scratch. Pursuitery grows out of the HOMAGO (“hanging out, messing around, and geeking out”) movement and brings mentors and learners together online around common interests. While digitally mediated, workshops and hangouts are still face-to-face online and help to create real-world and real-time connections.
Professional learning networks on social media sites like Twitter are also great resources for learning opportunities.
Teaching with Scratch
Coding can teach traditional academic content in myriad ways. On a platform like Scratch, for instance, a teacher could have students code visual characters, called “sprites,” draw a triangle by deciding how far the sprite travels on each triangle side and the angle of its turns. They could demonstrate understanding of how triangles work—the ways in which their interior angles and sides relate to one another.
As a next step, kids could program user inputs so that another “player” could type in three angles and three lengths to form a triangle. Kids could share their Scratch programs with one another and then show their understandings of triangles by playing each other’s triangle-drawing games. As students learn to code more complex programs, they could add checking and scorekeeping mechanisms to award players for creating triangles in as few tries as possible.
Here are ideas for more advanced projects.
• Code a model of the solar system in which planet sprites travel in circular or ellipsoid orbits around the sun.
• Write a script that lets a player define a circular or elliptical orbit and then animate it on the screen. Create a chemical bonding game.
• Design a city for lowest possible traffic congestion and program to animate public transportation routes featuring different shapes from math class.
• Retell a story as an animation or decision-making game and add a scoring mechanic to represent your subjective view of characters’ actions, good and bad. Invite a teacher or another student to play and critique your analysis and evaluation of the characters through a game review.
Remixing, forking, and more
Scratch is currently web-native: you can create a free account and program online. You can also share your programs and remix other community members’ works. When you save a program, you can tag it to categorize it by content or even by the mechanics of your code. That makes it easy to find examples of others’ code to include in your animation or game. For example, if you wanted to learn how to keep score in a game or move a sprite around the screen, you could search other people’s Scratch programs for “keeping score” or “arrow-key movement” to remix into your own project.
Scratch users can also comment on one another’s work and “fork” it for remix. When you fork a program, you create a new version of it for your own use. Each project has a “remix tree” that grows more branches and leaves as more people fork your code. Kids working in your library or class can learn and draw inspiration from one another as they go.
Check out the “coding is for everybody” Scratch course on connectedlearning.tv