What started as a germ of a idea over a year ago in this post titled - The Ideal Technology/CS Curriculum for Middle School and caught the eye of ISTE's Anita McAnear, editor of Learning and Leading with Technology (L&L) and national program chair of NECC, has now appeared as a full length article in the November 2009 issue of L&L. (Yes, it does take that long for the submission, review, approval, editing, and final publication process at L&L. I first submitted the article in November 2008, it was approved in Jan 2009, sent to me for revisions in April 2009, final edited version sent to me for review in August 2009 with a promised publication date of November 2009!!) Thanks Anita, ISTE & L&L!
Computer Science Not Just For Big Kids
It is sad more than surprising that computer science, which has been a bona fide discipline for over half a century now, has found little to no space in K-12 curricula. As a result, most students go through their school years naively equating computer science to simply computers or computer programming. As the Dutch computer scientist Edsger Dijkstra said, “Computer science is no more about computers than astronomy is about telescopes.”
Computer science is the study of the theoretical foundations of information and computation. Given the amount of exposure students get to the science of the physical, living and non-living world, it does not make sense to completely ignore a science that governs much of the technology and the nature of the “form” in which we transact information on a day-to-day basis in our techno-saturated lives.
In addition to a basic understanding of the essential definition of what computer science is, students can and should also get exposure to some of the foundational elements of the science of computing which gel well with the broader goals of 21st-century learning. These elements include algorithmic thinking, Boolean logic, functional abstraction, and data organization and management. Problem-solving, critical thinking, and information organization and management can be reinforced through delving into these aspects of computer science. The wonderful thing is that most of these concepts of computer science build on mathematics, and some of them on school-level mathematics.
The advantage of this early exposure to the fundamental elements of computer science is that it will give high school students who opt for courses in programming a more solid foundation of algorithmic thinking and data structures—the basic nuts and bolts of the mechanics of computer programming. Additionally, it will give students a better sense of their own interest in this field, supported by a better understanding of the science itself.
Here are a few ways to incorporate these concepts into the curriculum.
Algorithmic ThinkingSimply put, an algorithm is a well- defined set of steps required to complete a task. It is essential to understanding how and why information technology systems work as they do.
Detailed task breakdown is an important aspect of algorithmic thinking. In my robotics workshops, I usually devote a session or two to algorithmic thinking before I introduce students to programming. One fun exercise involves writing a set of detailed steps in plain English to guide a blindfolded student partner to perform a certain task. I often weave ideas of exception handling, iterations, and conditional actions into this exercise. Writing “pseudo code” in this manner also helps expose students to an essential skill that programmers often employ when they embark on a new program that requires them to think through the algorithm before they start to code the program.
Fortunately, we have access to programming environments that make it easy for teachers to drive these ideas home. For example, Alice (www.alice.org) is an excellent tool to support the development of algorithmic thinking, as is Scratch from MIT Media Lab (scratch.mit.edu). The visual feedback that students get from Alice and Scratch allows them to relate the program to the action they see on the screen and helps them refine their programs, an essential part of problem solving and programming. Earlier environments such as LOGO also helped achieve those goals in addition to allowing children to easily experiment with ideas of repetition, functions and subroutines, parameter passing, and even recursion.
Algorithmic thinking helps students make that step from problem to program. This involves being able to define and state a problem clearly; break the problem into smaller, more manageable subproblems; and describe the solution in a well-defined set of steps. . This is an important skill that students can transfer to problem-solving situations in other subjects too.
Boolean Logic for Critical ThinkingBoolean logic (or Boolean algebra) is a form of symbolic logic that is the basis of the arithmetic of computers. George Boole’s pioneering work in this field was published in the book An Investigation of the Laws of Thought, which describes how the logic of human thought can be reduced to a few simple, general, logical “operations” (much like the basic operations of mathematics).
Students can be introduced to the idea of logic in language arts or mathematics. Premises, conditional sentences, denials, and drawing inferences from sets of everyday sentences can form a soft introduction to the idea of logic even before introducing symbols and operations. Here is an example:
If the Giants beat the Dodgers, then the Giants win the pennant.
If he is out, then the Giants beat the Dodgers.
He is out.
What is the conclusion?
The beauty of Boolean logic lies in the simplicity of its operations: and, or, and not. When I was first exposed to the ideas of symbolic logic, I remember thinking that this was a mighty useful way for people of any age to learn how to think and argue logically as well as to find fallacies not only in political arguments but also in day-to-day arguments with parents, siblings, friends, and peers. This could certainly be one way to teach children to think critically and analytically.
Data Structures and DatabasesData structures go hand in hand with algorithms as an essential aspect of programming. Simply put, data is the stuff that is manipulated or worked on by operations and expressions in a program. To enable this process of manipulation, computer scientists organize this data in structures known as arrays, lists, trees, tables, stacks, queues and “heaps.” A database, similarly, is an organized collection of data, usually stored as records in tables.
Fortunately, we have access to spreadsheet software such as Microsoft Excel and database management software such as Microsoft Access that could be used to introduce students to the fundamentals of data structures for organization and management. Free or low-cost alternatives of such software are also available.
Spreadsheets can teach students how to organize data in simple, intuitive ways for easy access and retrieval. Children should be encouraged to use spreadsheets often and for a variety of data-organization tasks. For example, students could list and organize websites they visit for a school project or while researching a topic. Have students add keywords or tags to another column in the spreadsheet. They can organize the website data in separate worksheets for different units in a subject so that the organization helps delineate data that doesn’t necessarily belong together while still keeping related materials together. Spreadsheets can also be used for storing and organizing data for planning field trips or events, or for data collected in science or social studies projects. Google Spreadsheets allow several students to work on the same spreadsheet.
Teachers should also use spreadsheets to introduce students to the idea of sorting and ordering data. When does it make sense to sort or order data, and when is unordered data just as useable? Will sorting help future storage and retrieval? If so, how should the data be sorted? Such questions will get students thinking about the basics of organizing data in ways that make manipulation easy.
Students in middle school who have been exposed to spreadsheets could graduate to databases with a database management tool like Microsoft Access. Through the process of database design, students learn to analyze the information they are working with and identify the underlying dimensions of the content to organize it for meaningful search and retrieval. They learn to identify relationships between different types of data. Through the act of simple database querying, students can bring to bear their knowledge of Boolean logic and constructs such as and, or, and not while getting a sense of how the process of Internet search is conducted.
Teachers can get their students to engage in simple projects with clearly defined goals. A database that helps retrieve children’s books in the library by genre is one example. Such a project would require students to analyze the nature or elements of the data to be organized, design the database, populate the tables with data, and, finally, formulate and run simple queries. Database design also helps students build analytical, critical-thinking, and problem-solving skills.
At a time when we all grapple with a surfeit of data and information, being able to classify and organize it for sense-making as well as easy and intuitive access and retrieval is certainly a skill that children of this Information Age should develop early in school.
All three skills and concepts described above—algorithmic thinking, Boolean logic, and data structures— could be easily integrated into the elementary and middle school math, language arts, social studies, science, and technology curriculum, and would work well to expose students to a few basic ideas of the “science of computing.”
Reprinted with permission from Learning & Leading with Technology, November 2009, Vol. 37 No. 3; Copyright 2009, ISTE (International Society for Technology in Education).firstname.lastname@example.org, www.iste.org. All rights reserved.
Kids programming environments mentioned in the article: