Showing posts with label coding. Show all posts
Showing posts with label coding. 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/

Tuesday, April 15, 2014

Angle Mouse and Other Scratch Geometry Projects

   Years ago I was asked to teach Benjamin Bloom's Taxonomy of Learning Domains to teachers. If I had to pick the one most important statement in the taxonomy it would be this; the ability to paraphrase is a test of comprehension. In other words, the more ways I can state a concept (paraphrase) the better I understand (comprehend) the concept.
   For example, consider the Distance Formula from analytic geometry.
   Is the ability to use the above formula in a Scratch program that computes the distance between an ant and the mouse-pointer a test of the programmer's comprehension  of the formula? That is, the Scratch program is a paraphrase of the distance formula. I've answered that question in the affirmative because I know how to express the formula in code that Scratch understands.
   Watch this short video that will hopefully convince you that the project is truly a paraphrase of the distance formula. As the mouse-pointer is moved, the distance between it and the ant is continuously updated.

   The Ant Chases the Mouse-pointer project can be viewed and downloaded at 
http://scratch.mit.edu/projects/16266075/
   Here is a second example. This Scratch project is an effort to dynamically 'explain' the angle concept. The project is dynamic because it actually constructs the requested angle.


   This project can also be viewed and downloaded at the following link.
http://scratch.mit.edu/projects/16793255/
  Now a third and final example. This project is also dynamic in that it constructs the perpendicular to a point chosen at random on a line segment. Watch this short video.

   Click on this link to view or download the Perpendicular project.
http://scratch.mit.edu/projects/20186064/
   What do you think? Is programming (coding) a higher-level cognitive process than just memorizing a definition? As you can probably guess, I answered that question for myself a long time ago and I want learners, of all ages, to share the joy I experience when I successfully code a program.