Software Freedom/Context

The goal of this section is to encourage students to think of computation as a tool that has built their computer system and that, now that is demystified and -- to some extent -- brought under student's control, has demystified their system more generally.

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

Exploration: What is Software?
A project or discussion that prompts students to discuss "software" and its role on their computer.

Questions might include:


 * What is software? What is hardware? How do the two differ?
 * What is an Operating System? What are applications?
 * Is the software that runs on their computer fundamentally different than the software they wrote in Squeak in Software Freedom/Computation? Why or why not?

Exploration: Extending Software
''An activity where students are shown how to script, build upon, or change an element or set of elements of their operating system and its applications. Students should be allowed some time to work on this then should present their modifications of their system to class.''

Ideally, the students should be able to transfer and share their changes with other students. One intriguing possibility is to create a space fo iterative development where students can improve on each others projects and ideas and work together to combine creations with important synthetic possibilities.

At some point (perhaps in a different activity), the instructor should explain and demonstrate the way that all software in a computer can be changed via this method -- although access to change somethings can be turned off. The details (e.g., source code, binary code, compilation, obfuscation, etc.) need not be dealt with explicitly.

Students should be encouraged to discuss the limits of what they can and cannot change about their system.

Key Concepts
Students could walk away from this section with:


 * Hands on experience changing something about their computer that, normally, they would assume as static.
 * The ability to imagine themselves taking a design role in their operating system and in taking over some important piece of development.
 * Reflection, on some level, of the fact that they have transcended their role as the "consumer" of software.