Posted: Thu, 03/23/2017 - 8:06 am EDT
What I found somewhat surprising during my training for Exploring Computer Science and Computer Science Principles courses was the lack of instruction in flowcharting for students. Like many others who took the training, I had been teaching in other subject areas and my computer programming background was obtained during an earlier time in my life when I was engaged in a different career. Unlike my own academic experience when I first learned to program, there is a great emphasis today on using a variety of unplugged activities with students. When I learned programming in the 1980s, the only unplugged activity was creating a flowchart.
I have to admit that that some of my favorite lessons in computer science never involve the use of a computer. There were several that struck a memorable chord with my students in the Exploring Computer Science course. The first compared different views of data. Groups of students were given an image, list of items, or a wordle—each describing the same set of information. My students were struck at the differences in information gleaned from the various data sources. Some of the best teaching moments are found when the students come together and compare their data. It reminds them that no one form of data representation is truly complete.
Another memorable lesson was Muddy City, which used a picture to study minimal spanning trees. My students enjoyed the competitive element as they compared with other groups to see who could connect all of the houses with the least number of blocks. Both of these lessons share some great CS teaching techniques. Having students work in groups to solve problems enhances their collaboration skills. Muddy City, in particular, is a great introduction to algorithms since students need to develop a specific, step by step process to optimize their answers. Our first exploration of algorithms was the “make a peanut butter and jelly sandwich” lesson. Certainly any lesson that ended with a snack was well received by my students.
Old School Programming Instruction
Teaching your students to write and read flowcharts can be a valuable addition to the lessons you use. Flowcharts provide a simple way to express program design. They are also a good tool for the visual learner to plan loops and other control structures that their programs will utilize. Thinking about how code should behave is a critical skill for beginning programmers to develop. Many of the troubleshooting that I have needed to perform with my students centers not on syntax, but on program logic. Having students appreciate the correct sequence of programming statements will help them write code that is more readable and functional.
When I took my first course in Fortran 77 way back in the mid-1980s, we were always told that we should construct a flowchart before writing a single line of code. My instructor wanted to make sure that we had a basic understanding of what our program was supposed to do prior to declaring the first variable or writing the first subroutine. While the systems I worked on were not steam-driven, my programs were always designed first with a flow chart, hand written on Fortran coding sheets, input on punched cards, and finally run on an IBM mainframe. It took time for the program to execute and the resulting output to be placed on a counter to be checked. If there was an error, I had to pull the problem punch card out of the stack, rekey the command on a new card, and submit the program once again. This entire process would be very time-consuming and troubleshooting errors often required multiple attempts to get the code running properly.
Writing a flowchart requires nothing more than blank paper and a pencil. Certainly a ruler and other basic drawing tools can be helpful. I still have my green flowchart template that made creating the basic symbols seen in the image quick and easy.
Flowcharts have not disappeared from the education landscape. The illustration below has been used by my students when we were doing basic troubleshooting of computer hardware. Flowcharts and decision trees are used in many other disciplines as well.
At my school, you see flowcharts being used in biology, math, and other disciplines. Biology students use flowcharts to learn about photosynthesis. Math students can use flowcharts for solving equations.
Of course the internet has a great number of sites you can use. Draw.io is online and free. If you want to install and download a program, consider Dia Diagram Editor. It is available for Windows, Mac, and Linux under the GNU Public License.
What types of “old school” lessons do you use with your students? Please share your ideas with others in the CS for All Teachers community!
Neil Plotnick (firstname.lastname@example.org) works at Everett High School, an urban district located just north of Boston. In 2015, he was a recipient of the Presidential Award for Excellence for Math and Science Teaching (PAEMST). He has taught Exploring Computer Science and was a pilot site for the AP Computer Science Principles course developed by Code.org during the 2015-16 academic year.
A young Neal Plotnick coding back in the 80s
Everett High School class materials