From my own experience programming, I believe that practicing programming can help with both mathematics and literacy understanding. Having taught reading and language arts classes for several years, close reading is a skill that does not come naturally to many students. Programming forces students slow down, both when reading and when writing, and pay close attention. They need to be attentive to words, syntax, and the relationships between words. These skills definitely translate back to reading and understanding in more traditional contexts.
Furthermore, all programming languages are based on logic and applied mathematics. This sounds complicated, but it really is not. It reinforces basic concepts that can serve students very well in many contexts. For example, last week, I was writing an application that required drawing something on the screen. To do this, I had to put in the coordinates on a Cartesian coordinate system. This was the first time I had used a Cartesian coordinate system outside of a school setting. There are many such examples that both reinforce mathematical concepts and show students their value outside of math class.
Having a sound understanding of logic, as well, can help students tremendously in any class. Logic is an understanding of how to reason, a way to figure out what makes sense. For example, a typical construct that students may see could look like this:
if (variable < 5) {
Do something
} else {
Do something else
}
This is a very simple construct. It simply means, if a variable is less that 5, do something. lf the variable is 5 or more, do something else. Helping students to have an understanding of reasoning will serve them very well.
Lastly, Ira Socol made a great point in one of his recent posts. Programming helps students get away from a paradigm in which there is a right and a wrong answer. When you write code, it either works or it doesn’t work. It allows students to creatively problem solve and to safely learn through failure. There is often no single way to solve a programming problem. Students may have to fail several times before they find a method that works. This is a daily fact of life for me (I spend a lot of time writing applications and websites). Every time something does not work, I learn something else. There may be a more elegant or efficient solution, but allowing students to solve problems in different ways and learn from each other can be invaluable. Creativity, problem solving, and perseverance may not be in the curricula, but they are certainly worth teaching.
I think that these skills can serve students well. It gives them a vehicle to concretely apply concepts from other classes and to do something meaningful with it. Simultaneously, they can be pursuing their own passions, finding new ways to solve problems, and reinforcing content area skills. What do you think? Is it worthwhile to teach programming to middle school students (11-14 years old)? If you have done so, have you had success and what languages did you focus on?