Sunday, December 16, 2012

Algorithmic Thinking

   I have just finished teaching a two-unit college course in programming for middle school and secondary math teachers. Over the years I have used BASIC, Logo, Pascal, and the version of BASIC Texas Instruments uses in their programmable calculators. The last two times I have taught the course I have used Scratch. No matter what the programming language, I have found that many math teachers have a difficult time learning to program. I have pondered this phenomenon for years because in my mind, programming should be easy for math teachers.
   Over the last few years I have created a structure that I use in the course for every programming project. I insist on participants following the seven steps of algorithmic thinking. Doing this has helped participants in my course understand that programming is not a single skill, it's a set of skills.
The Stages of Algorithmic Thinking

                       Purpose: to create machine* understandable algorithms that solve a specific problem
            First, Do the Math with Paper & Pencil Part
                                    Analyze the problem

            Next, Do the Algebraic Thinking Part
                                    Identify the Variables
                                    Determine the relationships between the variables

            And Finally, Do the Algorithmic Thinking Part
                                    Create a Logic Flow diagram
                                    Translate the relationships (math syntax) à (computer syntax)
                                    [the syntax of every computer language is fixed and can not be violated)
                                    Combine the pieces of code (into the algorithm that solves the problem)
                                    Test the algorithm (debug)

*machine = any device controlled by digital logic [computer, smart phone, etc.]

Algorithmic Thinking Takes Place within a Problem-solving Environment

   If you teach programming for nonprofessionals, what structure do you use?

1 comment:

  1. Technology is everywhere in the modern world and continues to develop at an astonishing rate. Coding already plays a key part in this technological evolution and will become increasingly important in light of new robotics and automated technologies. Coding has become literacy fundamental in the digital age, and it is important for kids to know the basics and be able to work with and understand the technology around them. Having children learn coding at a young age prepares them for the future. So, if they have flair for it and then programming also can be taught to them. Coding helps children with communication, creativity, math, writing, and confidence. Thanks for sharing the list of books to learn programming.