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?