Software Freedom/Computation

The goal of this section is to introduce students to the idea of software and hardware and to the basic concepts and practice of computation and programming.

Explorations and Activities
The following activities or explorations might help students explore and discover key concepts in this section. Each is framed in terms of the key questions it raises.

Large parts of this process can be skipped or augmented if the students already have a programming background through other means.

Exploration: What Are Computers?
An introductory activity or discussion that asks students to define and discuss computers.

Students should be asked to discuss their preconceptions (and misconceptions) of computers as as group. Discussion might be prompted with questions including any of the following:


 * What do computers do? What do they not do?
 * What can computers do? What can't they do?
 * How are computes similar to and different from other types of machines?
 * How are computers similar to or different from calculators?

Ideally, this discussion should lead students to identify computers with information processing. It should lead them to think critically about the role of computers as information storage, processing, and control machines.

Activity: First Steps In Programming
An activity that walks students through the use of a simple programming tool.

Rather than writing yet another Introduction to Programming curriculum, this set of activities will be best served by borrowing from and using another curriculum.

Ideal programming environments and curriculum should be simple, short, an accessible. Many students without programming experience will be best suited by a visual programming tool. The ultimate goal is to introduce students to the concepts and practice of computation and programming and not the concepts of source code, object code, or the mechanics of writing in a particular language. Ideal choices of languages and environments might include any of the following:


 * Squeak
 * Scratch
 * StarLogo

In addition the process of teaching the students the first steps of writing a computer program, students should be asked to present and compare their projects to the class. Discussion on these programs should be encouraged and students should be prompted to connect their work to the practice of programming and computers more generally -- as discussed in the exploration above.

Key Concepts
Students should be able to connect work in this section to their previous explorations of information. Additionally, they should walk away from this section with:


 * The ability to write a simple program in a programming language like Squeak, Scratch or StarLogo.
 * Some introductory skill or familiarity at using the tools and methods of computation and programming.
 * Knowledge and awareness by each student that they have reprogrammed their computer to do something that it could not do before or without their intervention. In other words, knowledge of the computer as a computing machine and their own ability to become the director of that machine.