Showing posts with label algorithmic thinking. algebraic thinking. Show all posts
Showing posts with label algorithmic thinking. algebraic thinking. Show all posts

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?