In this edition I would like to address a question which all students, whether they are studying mathematics, another STEM(1) field or just understand that critical technical thinking is an important skill in the ever more technical society in which we live.
Isn't it enough to study how to use computer applications for school and business?
It is certainly very important for students to be comfortable using computers for their work and for their own enjoyment, and to have a good comprehension of what common applications do and how to use them well. Much of the basic curriculum focuses on this aspect on computing. In our experience, however, it is also important to teach programming, an entirely different aspect of computing, for several reasons.
Programming is an empowering experience; students learn to recognize how the computer is instructed to do things and can be shaped to perform whatever task is necessary. This helps students feel more comfortable with computers, solidifying the understanding that they are truly in control of the computer.
Programming is challenging, and success requires skills in deduction, problem solving, and learning how to put together powerful and complex solutions built out of simple pieces. Students learn how to diagnose their own errors and how to solve them in a deterministic setting with tools at their disposal that will help them succeed. These skills help students to become better problem solvers in a general sense, applying deductive skills and the ability to analyze results relative to their changes to problems in computing and problems in the world at large.
Along with this challenge, programming is very fun and rewarding. Students will feel the thrill of solving a difficult problem, the satisfaction of discovering a bug that has eluded them for some time, the excitement at viewing the completed, functioning result, and the joy of having their own work mold the computer into a useful tool. Though there is frustration in programming, students also report that success in the face of these challenges is very rewarding. The overall result is that students find programming to be a fun experience.