ASCD Express's Tech for Teachers column, by guest columnist Jason Bedell, uses both text and a tutorial video to encourage teachers to bring web technology into their practice in simple but meaningful ways that can contribute to student engagement and learning.

As a district technology coordinator who also runs a freelance programming and web design business, I've spent a lot of time studying how programming computers can benefit students.

With many of my students, I've noticed their hunger to build something real—to have their projects have immediate application outside the classroom. Programming can give them that opportunity. Programming builds something on a computer: a website, a computer program, an app for a mobile phone, or a behavior for Lego robotics, to name a few examples. To start programming, one uses a text editor, such as Text Edit on a Mac or Notepad on Windows, and writes lines of code to perform an action using one of many computer "languages," which logically structure language so that computers can understand it.

For example, a few years ago, a student of mine, a high school junior, wanted to alter one of his handheld gaming devices. He took the device apart, installed LED lights, and figured out how to reprogram the device to make the lights pulse to the music that he played. Later, he figured out how to control the electronics in the classrooms (e.g., DVD player, projector). He did not stop when he got frustrated or had a problem, but rather kept working until he was able to find a new way to meet his goals. His goals had immediate application and significance to him and also to his friends, as he then taught them to make the modifications.

Using the web, students can get started with programming at a variety of sites. For younger students in upper elementary and middle school, a visual programming language, like Scratch from MIT, can be ideal. For slightly older students, learning web programming languages can be a good place to start: HTML, CSS, and Javascript are relatively straightforward, and they can be written for free in any text editor. In some high schools, students learn programming more formally and have produced apps for iOS and Android devices.

Codeacademy is one free website where students of middle school age and older can learn how to program code.

Reading Syntax, Applying Math

The current focus in many schools is on improving in language arts and mathematics—areas that also foster the skills needed for programming. When I've taught remedial reading, I've learned that students often rush or skim in areas where they most need to focus and read closely. In programming, whether writing one's own code or reading someone else's, reading closely becomes extremely important. If syntax (the way that a line or code is written) is even slightly off, the code won't work.

Students often develop the misconception that mathematics happen in a vacuum. It becomes something that they simply do in school as opposed to something that they need for life. Programming is not the only way to help students gain a better perspective on the value of math, but it does help students to use math to build their own projects. Depending on the grade and skill of the students, they could be using simple functions like adding, subtracting, and multiplying or, for older students, more complicated functions like transforming objects on a coordinate system when building an iOS application for an iPhone or iPod Touch. It anchors math in a useful way for students.

For example, I just finished a programming a revision of a unit design app. To show teachers what units they have created, I need to ask a database how many units the teacher has. Then, I have to calculate a loop. For each unit, I need to take the title and description and put them into a table. To do that, I need tell my function to run as long as there are units unaccounted for. So, I set a variable, x, to 0. Then, every time the unit is run, I add one number to that variable.

If a teacher had completed five units, the loop, in plain English, would read: Run the function as long as x = 5. That is a good amount of logic and math for something that is simple and that people take for granted. It reinforces inequalities, computation, and logical thinking. This is an inherent part of learning programming; it is why most colleges require advanced mathematics in their programming majors.

Persevering and Problem Solving

Programming can be accessible to everyone, but it takes effort and perseverance to resolve problems that arise. For instance, I recently spent 10 hours straight trying to solve a few problems to meet a programming deadline. Successful programming takes time. Writing a new function, page, or program is not something that students are likely to get right on the first try. I have been programming for years, but I rarely get everything right on the first try. Allowing students to program for projects that they are interested in helps develop independence as they work through their own difficulties.

When I work with students just learning programming, I like to work with a framework I call "advanced basics." Instead of trying to learn every aspect of the language, I focus on some of the most immediately useful functions and then have the students start building as soon as possible. Of course, I coach students when necessary—but when students have to find a way to make their program work, they often find creative solutions. They can find new ways to apply concepts that can go beyond what they were taught.

Lastly, because of the way most schools are set up, students often get stuck in a mentality of right and wrong. When they get back an assignment, one hopes that they reflect on what was not correct and try to improve their understanding. That is not something that happens organically. With programming, however, there really is not a correct or incorrect way of doing things. There are any number of ways to structure a program: If it does not yet work, students simply keep trying until the program functions. Trial and error helps students to learn from and correct their mistakes, both with and without coaching, until the program works in the way that they need it to work.

Programming allows students to create original solutions to real problems that they're engaged in. Through programming, students learn a lot of intangibles as well. They can hone their perseverance and their creativity. They use and reinforce content-area skills. And over time, students learn to become independent problem solvers.

Jason T. Bedell is the technology coordinator for Lakehurst School District in Ocean County, N.J. He explores how effective technology integration can deepen student learning and make the school environment more student-centered.