Showing posts with label problem-solving. Show all posts
Showing posts with label problem-solving. Show all posts

Friday, November 13, 2015

Factorial


   This project computes Factorial N written as N!
   Here is the definition of Factorial N.
    Writing code is not a one-step process. Over the years I've found that breaking the coding process into three parts helps students understand that first of all, coding is an exercise in problem-solving and breaking the coding problem into a series of smaller problems is the most efficient method for coding.
   Here are the three Parts and seven Steps I encourage students to use when coding.
   I Do the Math with Paper & Pencil Part
     • (1) Analyze the problem
   II Do the Algebraic Thinking Part
     • (2) Identify the variables
     • (3) Determine the relationships between the variables
   III Do the Algorithmic Thinking Part
     • (4) Create a Logic Flow diagram
     • (5) Translate the relationships (math syntax) into (computer
             syntax)
     • (6) Combine the pieces of code (into the algorithm that solves
        the problem)
     • (7) Test the algorithm (debug)
   I describe in detail how to apply this method to the problem of coding a Factorial algorithm in a six-page document. Any interested reader can obtain a copy of this copyright-free document in pdf format by sending an email to grandadscience@gmail.com
   Here is the opening screen of the project. The user is asked to input N! The number 11 was typed into the blue-lined box at the bottom of the screen.
   In this picture the computation of 11! is reported as 39,916,800.
   This project can be viewed and downloaded by clicking on the following link to the Scratch web site.
https://scratch.mit.edu/projects/87399897/

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?