This is the second day of a three-lesson sequence in which we attempt to show the "art" of programming and introduce the connection between programming and algorithms. In the previous lesson, we established the need for a common language to express algorithms to avoid ambiguity in how instructions would be interpreted. In this lesson, we continue to establish the connection between programming and algorithms, with more emphasis on the "art" of algorithms.

First, students are presented with a new task for the “human machine” - to write a set of instructions to identify the smallest (lowest value) card in a row of cards on the table. Once again we try to establish a set of fundamental commands for doing this and develop a more formal set of “low-level” commands for manipulating playing cards. Students are presented with a "Human Machine Language" that includes five commands and then must figure out how to use these primitive commands to “program” the same algorithm.

At the conclusion, several points about programming can be made, namely:

1. Different algorithms can be developed to solve the same problem.

2. Different programs can be written to implement the same algorithm.

Students will be able to:

- trace programs written in the "Human Machine Language".

- develop an algorithm to find the smallest playing card in a row of cards

- express an algorithm in the "Human Machine Language".

- identify the properties of sequencing, selection, and iteration the "Human Machine Language".

- evaluate the correctness of algorithms expressed in the "Human Machine Language".

*Note: You will need to create a free account on code.org before you can view this resource.*