The Pioneer Project
A Critical Look at the Use of Distance Collaboration, Virtual Learning Environment, and Use of Open Source in Education


Cristiana Assumpcao
Teachers College, Columbia University
December, 1999


www.projectpioneer.com

  1. Introduction
  2. Pedagogical Theories Applied in the Proposed Activity
  3. Benefits and Limitations of the Online Environment for Collaboration
  4. Simulation as a Learning Tool – Lessons from another model
  5. Bibliography
  6. Appendix

1. Introduction

 

What is the Pioneer Project?

 

Goals:

·        Implement decentralized research method (work collaboratively)

·        Analyze the efficiency and applicability of distance collaboration (different countries)

·        Create an interdisciplinary project approach to curriculum development, creating a more relevant and efficient curriculum.

·        Integrate emerging (open source) and high-end technology in the educational arena.

·        Develop an online learning environment.

·        Study the role of technology in enhancing and promoting ongoing learning.

 

Research Question:

 

Below is an excerpt of a dialogue between myself (asking the questions) and Jecel M. Assumpção Jr. (answering them, sometimes seriously, sometimes playfully). This dialogue reflects some very important aspects of the role technology is playing in our project, and consequently in the learning activity. It shows the types of research that can be done both collaboratively and long distance. It also reflects how the medium allows for easy access to stored information, where I could just use the emails directly and include the information in this analysis. It also allows for easy access to metacognitive activities, where I can organize my ideas and reflect on them, both individually and collectively, allowing them to grow and develop.

Due to the collaborative nature of this project (six team leaders, each one with their own specialty), my initial ideas have been greatly enhanced and enriched. Each project leader has contributed to the idea pool, as well as helped guide students as they develop their work. We hope this project becomes a model for technology integration in a more modern educational setting, where new pedagogies will start having a larger role in our student’s educational process.

 

These are some of the initial questions we asked ourselves, in starting this project:

 

·        (CMA) Can open source become a new tool in designing interdisciplinary, situated based, real life projects that can integrate into the curriculum?

 

·        (Jecel) To be "interdisciplinary", the programming part must not be too intrusive in order not to scare off those with less technical interests.

 

·        (CMA) (Study the use of Self as a programming tool to encourage student's thinking at higher levels).

 

·        (Jecel) Self is meant to stimulate people with less abstract mindsets (you can *see* the objects right there on the screen, and not just imagine them from looking at the source text).

 

·        (CMA) Will it promote higher level thinking skills, augment student learning?

 

·        (Jecel) Programming is the most natural environment for learning certain "powerful ideas". It provides a vocabulary for mental processes and helps people to actively think about learning strategies.

 

·        (CMA) Model collaborative learning using technology in what it best lends itself? Adequate the activities to the medium?

 

·        (Jecel) The computer can mimic any existing or imagined media (paper, LP records, TV, etc..). With an infinitely malleable media, I see no reason to adapt the activities to it except for the limits of our imaginations.

 

·        (Jecel) In the past, this wasn't quite true - the technology was limited and couldn't do all was wanted. That phase ended in the early 90s.

 

·        (CMA) Focus: pedagogical aspect - integrating technology into the curriculum.

 

·        (CMA) Outcome: Curriculum integrating new technology in a new way (not merely adjusting it to the traditional uses). Online unit geared towards distance learning and online collaboration. Open ended and not content based. A tool that students can use to promote problem-solving skills, decision-making and research methodology.

 

·        (CMA) Assessment: Measure student skills before and after.

 

·        (Jecel) Objective measurement is *very* hard. List of facts = easy. Skills = nearly impossible.

 

·        (CMA) Qualitative analysis. Self-assessment through rubrics. If students reached a functional model of a colony.

 

·        (Jecel) Careful - mistakes are better learning experiences than successes! A non-working colony might mean a failure or it might not.

 

·        (CMA) Scalability of the unit - if it can be used in the classrooms, not just as an after school activity.

 

·        (Jecel) Not without major changes in the classrooms.

 

·        (CMA) How can I measure success?

 

·        (Jecel) If the students come back for more :-)

 

·        (CMA) In what ways is this innovative?

 

·        (Jecel) Students haven't had a chance to build their own tools since the early phase of the PARC Smalltalk project in 1974... Time to try again!

 

·        (CMA) How can this prepare students with better real world skills?

 

·        (Jecel) They might very well be building a colony in Mars in 2030 ;-)

 

·        (CMA) To what point does the medium influence and mold student thinking and learning?

 

·        (Jecel) Quite a lot! "If all you have is a hammer, everything looks like a nail".

 

·        (CMA) How can I encourage students to become independent learners?

 

·        (Jecel) Learn to let go. Don't be frustrated if things go in unplanned directions.

 

·        (CMA) Seekers and analyzers of information?

 

·        (Jecel) Don't spoon feed them all the facts they need for the next task.

 

·        (CMA) Action takers?

 

·        (Jecel) I don't think that can be taught. It certainly can be discouraged by making kids sit quietly in a desk for several hours every day.

 

·        (CMA) How can I measure their capability to transfer knowledge to a new context?

 

·        (Jecel) time_to_learn(new_context) < time_to_learn(old_context)

 

Once we had established our initial research questions, we worked together to search for research that would support our initial hypothesis and statements. In this paper I will be referring to the results of that research, citing the authors and their findings, all of which support Jecel’s answers. This also is a result of distance collaboration (very much facilitated by the presence of the web) and easy access to data (stored information, as many papers were readily available on the web as well).

This collaboration will improve even further once access to high bandwidth becomes more widespread. It will allow for even deeper levels of collaboration, such as allowing two users in different countries do browse the web together by sharing the same computer screen, while talking to each other and seeing each other on video. They will be easily able to collaborate on documents and other applications; such as it is now possible with Microsoft Netmeeting. Even with the lower bandwidth we have today, we have already been working using this tool.

One of the main goals of the Pioneer Project is to integrate such collaborative and research tools into everyday educational activities. Through the Mars Millennium Project we hope to create a very friendly collaborative user environment that will empower the students to become real researchers and programmers. The research I have found supports us in this pursuit. One example is the question below, by Harris. It is a question that should be always asked, no matter what the medium being used:

 

·        Will this use of the Internet enable students to do something that they COULDN"T before? Will it allow students to do something that they COULD do before, but BETTER? (Harris, 1998) These are questions we are constantly asking ourselves. We don’t want to use technology for the sake of technology itself. We want technology to be a tool to empower students, not to control them. 

 

Environment Created - Implementation

 

·        The Website: http://www.projectpioneer.com

·        Task: Webquest format - Constructivism at work

 

We chose the WebQuest format, due to the fact that it lends itself to an interdisciplinary approach, as well as authentic learning situation, where the students become researchers. The students are challenged to work together to solve a common problem, where each one contributes with a unique amount of knowledge, being that one becomes dependent on the expertise of the other. This is a strategy that makes perfect use of what the Internet has to offer today, both as a communication and collaboration tool, as well as a research tool. Our goal was perfectly summarized in yet another email I received from one of the major specialists in the integration of the Internet in the classroom: “The ultimate goal is, through the use of WebQuests and other tools, to develop students capable of posing and solving their own essential questions, and proceeding without the benefit of scaffolding. Going beyond WebQuests means that students would recognize that any problem must be attacked from multiple perspectives. They would have the skills to recognize the critical roles necessary to solve a particular problem. They would define their own roles, locate their own resources, and form the questions that would allow them to pursue their role. Then they would develop individual expertise based on their roles, come back to the group, and the process of problem-solving, share what they had learned, and together construct a new body of knowledge that may not have existed before.” (Wolinsky, 1999)

 

Thinking skills that a longer term WebQuest activity might require include these (from Marzano, 1992): comparing, classifying, inducing, deducing, analyzing errors, constructing support, abstraction, analyzing perspectives (Dodge) This matches perfectly with our goal to use the technology as an empowering tool, through an environment that opens an opportunity for acquiring higher level thinking skills.

 

The model we chose is also in accordance to research by Johnson et.al (1993), in integrating cooperative learning through emphasizing lesson coherence. The prepared lesson has a beginning, middle, and an end. To begin the lesson the teacher presents a practical, real world problem or provocative issue that intellectually challenges students. Everything that follows is organized around solving the problem. The problem is presented first. Then concepts and rules are presented second. Teachers pose provocative questions and allow students to adequate time for reflection. (Johnson et. al, 1993)

 

In this particular activity, we also decided, based on previous experience and supported by research (Johnson et. al, 1993) to assign specific roles, as a scaffold in an initial phase, so that students wouldn’t get lost when starting their vast research, and were confronted with the great amount of information available to them. According to Johnson et. al, the teacher assigns students roles. After each item, the roles are rotated so that each student fulfills each role once. (Johnson et.al, 1993). By following this format, the students would be exposed to different responsibilities and perspectives, acquiring a more global view of what is required of them, as well as practice different uses of the online environment, becoming more savvy with the technology.

 

Communication tools: Listerve and Forum

 

Tools, no matter how powerful their educational potential, don't directly help our students to learn. What's important is how we use the tools to assist teaching and learning (application rather than operation). Seymour Papert dubbed the kind of thinking that successful technological integration was learning the hardware and software as "technocentric thinking" (1987). Teachers should plan an educentric application for the powerful tools. (Harris, 1998). We decided to give our students access to two forms of online tools. The first tool we offered them was the listserve (ppioneer@listbot.com). The choice was made based on the fact that most of them already were used to using email, and we wanted them to have a tool with which they would feel comfortable with right away, so that they could concentrate on the content rather than the medium. We were pleased to see we made a very successful choice. Students have been exchanging an average of 80 emails a day, exchanging good resources, ideas, and debating the different points of the challenge. This tool was also fundamental for the successful implementation of the project, for all participants are now far from each other (students are on vacation, teachers are in different cities and even countries!). Without the technology, this project could not have started at all until February of 2000. Also, this was a tool that allowed students’ access to experts in the varied fields, including the organizers of the official Mars Millenium Project. Technology here played a role in compressing time, space, and content. In other words, students could work together even when they were physically separated, and learned more than they would have alone, in a shorter period of time, because they were exposed constantly to guidance and to each other’s ideas.

 

The one disadvantage of the listserve is that it doesn’t organize the information, being that sometimes the questions will be asked more than once, filling participant’s mailboxes and frustrating those who already have seen the question before. That is one of the constraints of this type of collaboration tool. In order to provide a more organized tool for the ideas to develop, the project organizers created the forum found in our website. The questions there are organized by threads, and the answers are stored under each question. That not only has the advantage of making the information easier to find, but also makes the information readily accessible for further analysis and metacognitive processes, allowing students to learn through their own mistakes and accompany their own development.

 

We are at this moment in the process of studying an easier forum format to use. The one we adopted requires going into too many screens (bad affordance), and is not supporting student performance. Due to the difficulty in logging in and navigating, students have not yet adhered to this new medium. They still are preferably using the listserve, even though the facilitators have encouraged them daily to move their discussions to the forum. This is a very good example of how a great tool can be undesirable due to problems in affordance. We are restudying the design to make it as user friendly as possible, so that the tool doesn’t get in the way of learning.

 

Research also shows that implementing the same activity in different classrooms can have very different results. There are many biologically-, psychologically-, socially-, historically-, and temporarily-rooted differences among student's receptivity to educational activities. (Harris, 1998) The same can be said for different medium, as we found out with the listserve and forum. This is something we will have to be really careful with if we want to create an activity that will be successful in any classroom. It has to be open and flexible enough so that teachers can adapt to their own conditions, assuming ownership of what they implement. The type of activity we want to design would serve as a scaffold, to get other teachers started in using technology well. The idea is for them to grow away from this and develop independence and new ideas of their own, enriching even more the knowledge pool. The web is the perfect medium to allow such flexibility, adaptability and sharing at all levels. In Harris (1998) we find support for this:

 

We know from both experience and research (e.g. Rogers, 1995) that tweaking someone else's idea isn't nearly as satisfying, or as effective, as designing an activity that fits the unique combination of factors that present themselves in any particular classroom at any particular time. Reinvention; the process of taking something like a new tool or idea and making it our own in its application, is very important to both teachers and students. Feelings of ownership are crucial if new tools are to continue to be employed in ways that will benefit users. This is what is known as true adoption of the innovation (Rogers, 1995).

 

This is where our Biotechnology Project (http://www.colband.com.br/ativ/nete/biot) went wrong last year (1999). The Biotechnology Project was yet another project started in 1998, implementing the same model of learning and technology integration. The success of the project was great with the first group of students, yet totally unmotivating for the second group (1999). We found out that this was due to the fact that the students didn’t feel as if the project were theirs. They thought they were working on the last year’s students’ work. Not assuming ownership discouraged them from putting any effort into contributing to the knowledge building that had started, even though they were offered and had access to the same tools and resources. This will be corrected in 2000, when new students will be presented with unique challenges that will motivate them to assume ownership and benefit from the activities offered.

 

Metacognition Tool: Presentation, Student Ideas and Progress Reports

 

We also are making available to students, on the project website, access to images, experiments, and progress reports based on their discussions. These reports are being elaborated by a professional evaluator who is part of our team, with the objective to help students analyze what they are learning, where they came from, how far they’ve come, and call attention to points they need to pay attention to, so that their research has scientific validity. Thanks to the immediacy of the web, the students can all have access to this information as soon as it is ready. It is published on the site on the same day as it is finished, allowing for updated information. Once again technology allows the use of information that is only useful if shared right away. And we don’t have to depend on others to do that. The web has allowed us to become publishers and authors, being able to help our students in a more efficient way.

 

Our theory of learning is implicit in our design. According to Duffy and Jonassen, instruction should provide contexts and assistance that will aid the individual in making sense of the environment as it is encountered. (Duffy & Jonassen, 1992)

 

Constructivists focus on the process of knowledge construction and the development of reflexive awareness of that process. Evaluation in the constructivist perspective must examine the thinking process. One possible type of student evaluation activity would ask learners to address a problem in the field of content and then defend their decisions.(Duffy & Jonassen, 1992) That is what we’ll be asking our students to do as they prepare the presentations for other groups. The progress reports provide the reflection on the process.

 

Simulation as a Product

 

Smith et. al (1994) were experimenting with creating a simulation environment that would be easy for children to use, based on a graphical user interface. They raise some fundamental questions, such as: How can people tell agents what to do? More generally, how can ordinary people, who are not professional programmers, program computers? This problem--the "end-user programming problem"--is an unsolved one in computer science. In spite of many previous attempts to develop languages for end users, today only a small percentage of people are able to program. Why are most people unable do it, in spite of all the attempts to empower them? Is programming inherently too difficult? Or does the fault lie with computer scientists? Have we developed languages and approaches best suited to the skilled practitioner, languages that take months or years to master? The authors take the latter view: computer scientists have not made programming easy enough. (Smith, Cypher, Spohrer, 1994) This is one of the challenges we propose to meet. That is why we chose to use Self to program a virtual colony. We also feel that the problem is not in the programming itself, but in how it is taught and designed. Even though these authors take a position totally against teaching any programming language, we feel that this is not totally necessary. As long as the programming language is something students can identify with and understand, using analogies they are familiar with, we feel they are ready to develop a world using a simple programming language. Of course we are dealing with older students, high school level, which are more mature cognitively and have successfully reached logical reasoning skills. We also believe that teaching programming will enhance their cognitive processes, further developing their logical reasoning, sequencing and correlation of cause and effect skills. It will also give them the capability and freedom to explore their potential and ideas, testing them out, because they will be capable of working the variables and their relationships. This is based on our previous observation of how many of our students taught themselves basic programming languages such as HTML, Java and Perl. This tells us that they are eager to be able to develop their own environments, with freedom to choose what they would like to see there, not be confined to what some other programmer has determined.

 

Again, according to Smith et.al (1994), today, over 100 million people use computers to write letters and reports, draw pictures, keep budgets, maintain address lists, access data bases, experiment with financial models, play games, and so forth. Children as young as two years old can use a mouse and paint with programs like KidPix (a child's painting program, at one time the world's best selling application) or explore worlds like The PlayRoom (a child's adventure game). So computers are not inherently unusable. The key observation is that most of these applications are editors: with them, users produce an artifact by invoking a sequence of actions and examining their effects. When the artifact is the way they want it, they stop. (Smith et. al. 1994) Smith et. al make it clear that the problem is not in the technology itself, but in its constraints and affordances. If we can circumvent these obstacles, we can provide a rich learning environment. That was also Papert’s idea when he created Logo (http://papert.www.media.mit.edu/people/papert/ ), which unfortunately was not taught the way it was meant to be. This is another interesting thing we have observed happening. Even though the medium is new, in the beginning, it is still used in the “traditional” manner, both by students and teachers. So even though they have the right tools to really go beyond drill and practice, we still have to help them make the pedagogical paradigm shift, showing them how to use these new tools in an innovative way. After all, we are dealing with people, and dealing with years of training in one direction. We can’t expect the learning to change magically when the new tools are presented. We have to be prepared to kill old habits and misconceptions, at the same time that we are modeling the new pedagogies. We have to help teachers and students rethink what education is about, and what the end product should be. The tools are there only as support to this mentality change, because they help organize and provide an adequate environment for such learning.

 

Smith goes on to say that they have come to the conclusion that since all previous languages have been unsuccessful by the criterion described here, language itself is the problem. It does not matter what the syntax is. Learning another language is difficult for most people. The solution is to get rid of the programming language.(Smith et.al, 1994). They used a totally graphical user interface (GUI). Since our students are older, we are going to use a GUI, but also give them access to the source, giving them the choice and possibility of going further in their learning experience. That will help make their learning self-paced, with no limits as to how far they can go. We are dealing with encouraging the acquisition of higher level thinking skills in an authentic learning situation. We are not saying that this is the only way to teach. Other pedagogies are better for other types of learning, as are other environments. That’s why we have to be very clear on what we are trying to teach, so we know how to best reach our goals and objectives. Different strategies are adequate for different types of learning. Our focus is very specific for a very specific audience. We want to provide a higher level environment for students who are almost ready to face real world challenges in their professional lives, believing that one of the goals of education is to prepare citizens who are ready to contribute to the community they live in.

 

According to the research, the following are the most important principles for solving the end-user programming problem.

 

·        Visibility: Make everything relevant to people's operation of a computer system visible on the display screen. This is the single most important UI principle. People have an easier time understanding what is going on and what to do next if things are visible than if things are kept internal to the program and hidden from users. Without visibility it is almost impossible to achieve an easy-to-use interface. Visibility has a couple of related principles:

·        Interactive vs. batch: Establish a cause-effect relationship between user actions and system semantics. When users do something, show the effects immediately. Systems that do not are confusing.

·        Modeless vs. modal: A "mode" is a state of a system in which user actions are interpreted differently than they would be ordinarily. Systems get in trouble when either (a) they have many modes or (b) their modes are invisible. Both confuse people, leading to (usually unpleasant) surprises at the results of actions.

·        Copying and modifying vs. creating from scratch: Allow people to copy and modify existing items in a system as a way to create new ones. It is often easier to start with something that works and figure out how to modify it than to create the same thing from scratch. Revealingly, this is the way most professional programmers work. (This is exactly what SELF is best at).

·        Seeing and pointing vs. remembering and typing: Allow users to point to entities on the display screen with a pointing device, instead of making them describe the entities by typing text. It is the foundation for the popular concept of "direct manipulation."

·        Concrete vs. abstract: Make the entities presented to users concrete. People have an easier time with the concrete than with abstractions. (SELF offers objects that can be seen, helping visualization).

·        Familiar user's conceptual model: Cast the concepts in a system into terms the user can understand. When faced with a new situation, people try to apply their existing knowledge to understand it. This is the inspiration for the use of metaphor in computer interfaces, especially the so-called desktop metaphor invented for the Xerox Star by the first author.

·        Minimum translation distance: One principle of utmost importance for programming environments but not so much for other applications was proposed by Sloman: minimize the conceptual distance between people's mental representations of concepts and the representations that the computer will accept. In our opinion, the failure to do so is the single biggest reason that languages designed for children such as Logo and Smalltalk have not attained wider use. Time and again we have watched children try to accomplish simple programming tasks such as making a fish swim away from a shark, only to be frustrated by the difficulty in having to deal with coordinate systems and vectors. The most articulate representations are the ones that minimize this translation distance. Of course this is also a principle of good program design: create data structures and operations that are close to those in the problem domain.

·        In summary, the GUI eliminated command lines by introducing visual representations for concepts and allowing people to directly manipulate those representations. It has empowered millions of people to use computers. Today, all successful editors on personal computers follow this approach. But most programming environments do not. This is the reason most people have an easier time editing than programming. (Smith et. al, 1994)

 

Why simulations? Again, according to Smith et.al (1994), they are a powerful tool for education. Simulations encourage unstructured exploratory learning. They allow children to construct things, supporting the constructivist approach to education. Alan Kay contends "We build things not just to have them, but to learn about them." He quotes the philosopher Cesare Pavese: "To know the world, one must construct it." Scardamalia argues that children learn best when constucting things. They enter Vygotsky's "zone of proximal development." Simulations such as SimCity and SimEarth allow children (of all ages) to construct unique microworlds, giving them a sense of ownership in their creations. They can observe and modify and experiment with these microworlds. Children are the "gods" of their worlds. This pride of ownership and feeling of power are compelling qualities that motivate even professional programmers (Smith et. al, 1994). That is EXACTLY what we believe, and that is why we made the choice of using SELF and building a virtual colony.

 

However, Smith et.al go on to say, most simulations today do not permit users to modify their fundamental behaviors and assumptions. For example, one cannot alter the fact that if one puts in a railroad in SimCity, the pollution problems go away--not exactly a realistic consequence. This inflexibility is the reason that most school teachers do not use SimCity as a teaching tool, even if they are studying city building. It does not model what they want to communicate. Simulations that do allow fundamental modifiability, such as numeric simulations built with Stella, require extensive programming skills. Few children or teachers can or want to do it. (Smith et. al, 1994). Students want to feel they can have some control of their environment, so they can test hypothesis and create something they feel they have an ownership of. We feel it underestimates students’ capability to say they cannot learn programming. That’s why we have chosen to include programming in the project, using a language that will be very close to the GUI, but that will also allow them to have access to the source code. In other words, we’re trying to include the best of both worlds.

 

Smith already said that what is needed is a way for children without programming knowledge to have more control over the behavior of simulations. What is also needed is a way for teachers to tailor simulations to support their curriculum goals. (Smith et.al, 1994). Using Self will allow us to empower our students without having to learn an excessively hard language. They will be using a GUI (graphical user interface), at the same time that they will be empowered to go to the source and troubleshoot and adapt the program to their specific needs, giving them the ownership they need. Self is designed to support exploratory programming. One of the strengths of object-oriented programming lies in the  uniform access to different kinds of stored and computed data, and the ideas in SELF result in even more uniformity, which results in greater expressive power. An object in SELF would be created by cloning a prototype. (Ungar and Smith, 1991). This is what makes it ideal for our proposal.

 

Choice of topic: Interdisciplinary Unit - Mars Millenium Project (http://www.mars2030.net )

 

When we heard of the Mars Millennium Project (MMP), we knew right away it was perfect to help us answer our questions. It provided an authentic problem-solving situation, where students were encouraged to work collaboratively, and use the web as one of the main media to obtain and develop information. We just adapted it to our specific needs. This is yet one more activity that has its success based on accessibility of information, only possible through the web. It would never have reached the scale it has if it depended solely on other traditional media. It is a project that makes use of updated information (such as was the case of the Mars Polar Lander), video, audio, contact with experts, stored information giving any data students need to learn about Mars, and much more. No traditional media could have provided such a rich research and collaboration environment.

 

This is what you can find at the website:

 

“The Planetary Society (TPS) welcomes you to a journey of inspiration and discovery as we explore Mars through the visions of artists, scientists, engineers, and astronauts who have turned their creative energies into wonderful paintings, stories, music, architecture, intelligent machines, human space flight, and much more. Even now, robotic spacecraft are engaged in brave missions to learn more about the "red planet". We are happy that you are joining us as we plan for the long–term adventure to Mars.

 

Initially, intelligent machines will pave the way by measuring important properties of this remote and alluring world. Later, humans will make the trip and establish the first colonies. We want you to gather information from this website and from your mentors, think about it carefully, creatively try your hand at designing a small village on Mars for 100 humans, and then submit your ideas.” (http://mmp.planetary.org/tour/welco2.htm )

 


Project Pioneer’s Mars Millennium Project Proposal

 

 

MAKING A CASE FOR COLLABORATIVE ACTION RESEARCH

 

Visit any medical school and what you feel is "electricity," says Richard Sagor, executive director of the Institute for the Study of Inquiry in Education (Camas, Wash.). "It's the electricity of a group of people exploring their passion. It's the electricity of a learning organization," he exclaims.

 

That same passion could be part of any school's culture, says Sagor, who shared his ideas with members of ASCD's Signature Schools program earlier this fall. What's needed to inspire such enthusiastic exploration of teaching practice is collaborative action research, he says.

 

Through collaborative action research, teachers identify a shared goal for improving student learning, Sagor explains. Teachers then create an objective rating scale to "show what it looks like" when students have reached the target.

 

The passion, Sagor suggests, comes when teachers are given the authority to put their own theories to the test--to use the instructional approaches they think will help students reach the goal, even when others disagree. Holding differing opinions is healthy, Sagor states, and educators shouldn't be afraid of conflicting viewpoints. When there is division, "educators should say, 'Oh, good, we've got a researchable situation.'"

 

In adopting such a philosophy, educators feel professionally empowered-and students benefit, Sagor states. Schools that encourage teachers to engage in collaborative action research, he affirms, inspire teachers "to creatively pursue solutions to improve student learning."

 

Richard Sagor is the author of the ASCD book, *How to Conduct Collaborative Action Research.* For information on this book and other action research resources, visit the ASCD Online Store at http://www.ascd.org .

 

Sagor expressed the importance of collaborative research, and we have already felt the benefits of such efforts, as we teachers planned the project. We hope to pass this on to our students to. That is why we have proposed the following:

 

Students, using tools given to them through a special program created for that purpose, will create a virtual world environment. Even though the program will have some basic settings, it will be up to the students to build upon that. It will be required that the students learn basic programming in object-oriented language, in order to modify and adapt the tools offered them to make them more adequate for the Mars environment. The tools offered will be appropriate for Earth. They will also need programming skills when building the colony, in order to create the buildings and whatever they see necessary for survival in the environment they will research about.

 

The students will have to research all about Mars, because in the program they will have to input the data of the environmental conditions where their colony is going to have to survive. They will have to find out the atmospheric gases, temperature, humidity, etc.; as well as the soil conditions. They will input their data into the program that will then recreate the environment for them, simulating the world they will face.

 

The students can work individually or in groups. There will be instructions appointing the different roles existing in building the space colony, and usually should require teamwork. But if a student is willing to take on the whole challenge by himself, he can do so.

 

The students will be able to save the program where they have stopped, as if it were a game, picking up from where they left off the next time around.

 

The work environment will offer several different challenge levels, so students of all ages can participate in some way. After the teams have put in all their data, the computer will simulate the results of their choices, giving them feedback on their success. If the colony doesn't work out one way, they can experiment with the variables to see if they can be successful another way.

 

There will be a component where the students will have to justify their choices, to avoid that they just keep "guessing" to try to get it right. They will have to provide evidence as to their research in order to continue (similar to the Science Sleuths software by Videodiscovery).

 

Once the teams are satisfied with their colonies, they can showcase their virtual world on the web. Others interested can visit this world. The visitors can either just walk around, or collaborate and build their own structures. The colony will be an ongoing process.

 

Students will always have a choice of starting from scratch, inputting the variables, or building upon someone else's work. After the initial success, new challenges will be proposed, such as change in population, change in political system, change in climate, and so on.

 

The biggest asset of this program is that it will have an open source component, giving the students the ability to modify the environment to their needs. That will give them independence and room to grow. One team's world may turn out very different from another team's world. They will not be constrained by limits imposed by the initial programmers. This will be an option, for those who like the challenge. If the student doesn't want to get involved at such a complex level, the program will offer enough tools to get a basic colony going, as long as the data is correct.

 

 

2. Pedagogical Theories Applied in the Proposed Activity

 

Situated Learning, Collaboration, Constructivism: Theoretical background

 

We have adopted the constructivist approach to learning. Technology lends itself really well to this pedagogy, according to research:

 

A constructivist trainer doesn't strip away the natural complexity of a subject. Instead, multiple perspectives are brought to bear. The goal of a constructivist-learning environment is not the accurate transfer of content from the instructor to the learner. Instead, the learner is given tasks and opportunities, information resources and support, and is encouraged to construct their own version of the content, subject to revision through feedback. Many paths through the lesson are allowed and collaboration with other learners is stressed over lonely individual learning. A constructivist use of technology presents information to the learner in multiple forms from multiple sources and invites the learner to make sense of it. (Dodge, 1996).

 

A constructivist approach is more learner-focused, and less teacher-focused. The instructor's role moves toward being a coach and orchestrator of resources, and moves away from being the sole source of information. The emphasis is on case studies, problem-solving, and the creation of meaning. The World Wide Web lends itself beautifully to constructivist, active learning. (Dodge, 1996).

 

It has been suggested by Ibrahim and Franklin (1995) that the pedagogical use of the Web can evolve along two major axes: a closed corpus of material where the technology is used mostly for its hypermedia and distance delivery capabilities, or an open corpus approach which exploits the enormous amount of information that is accessible via Internet, whether or not it has been put there for educational purposes. An organized structure of links has then to be superimposed on the domain to allow guided educational explorations. These two axes can be alternatively or complementarily followed. (Eklund et.al, 1996)

 

3. Benefits and Limitations of the Online Environment for Collaboration

 

Benefits:

·        Cross-globe communication - Interpersonal Exchange (Harris, 1998)

·        Time compression (facilitating the formation of correlations) (Rothkopf, 1998)

·        Multimedia as a way to share information (Rothkopf, 1998)

·        Vast amount to stored information (Rothkopf, 1998)

·        Access to real-time data collection

·        Help systems to increase efficiency (Rothkopf, 1998)

·        Allows for active search for knowledge

·        Practical = access to experts in the fields (Rothkopf, 1998)

·        Reactive, allowing for individualized construction of knowledge, based on your background and prior knowledge (Rothkopf, 1998)

·        Records the learning process, allowing for metacognitive analysis

·        Convenience (Rothkopf, 1998). It is easy to use.

·        Motivational: students love to use technical innovations, feeling challenged to learn more.

·        Allows us to elaborate educational activities that give students maximal return for the amount of time and effort that all of us must expend to ensure success. (Harris, 1998)

·        When we do use these new tools, usually it will only be "worth it" for us to do so if they can be applied in new ways to help new and worthwhile things to happen in our classrooms. (Harris, 1998)

·        According to Harris (1998), There are 18 telecollaborative activity structures that she's identified to date. They group themselves into three genres of educational online activity:

·        Interpersonal Exchange

o       keypals

o       global classrooms

o       electronic appearances

o       telementoring

o       question-and-answer activities

o       impersonations

o       Information Collection and Analysis

o       information exchanges

o       database creation

o       electronic publishing

o       telefieldtrips

o       pooled data analysis

·        Problem Solving

o       information searches

o       peer feedback activities

o       parallel problem solving

o       sequential problem solving

o       telepresent problem solving

o       simulations

o       social action projects

 

Limitations:

·                                                        Constrains contexts - someone decides for you what you can see and do (Rothkopf, 1998)

·                                                        Requires training to be used: Most teachers still don't use it do to lack of knowledge of how to use such a system

·                                                        More difficult to measure competence for these abstract skills

·                                                        Unclear help systems (Rothkopf, 1998)

·                                                        Problems with authenticity of stored information (Rothkopf, 1998)

·                                                        Access problems: bandwidth limitations in other countries

·                                                        Language to be used when developing a global learning activity. This is illustrated by the fact that even though discussions so far have been in Portuguese, the student’s native language, the website and instructions are in English, so that professors and students in the US can participate and follow what is happening. Also, the students will be translating their presentations for the judges to be able to evaluate what they have done. The two Appendixes in this paper are an example of the type of information the students have access to in their native language. These will be translated at a later date so that US users can also use this information if they decide to join the project.

 

4. Simulation as a Learning Tool – Lessons from another model

 

A model to learn from: Lucasfilm's Habitat (Morningstar and Farmer, 1990)

 

The lessons explained by the authors of the Habitat will be taken into consideration when we build our virtual world. This research will be made available to students, so that they use technology in the best way possible, allowing them to go through a rich learning experience.

 

These lessons are:

·        Cyberspace is defined more by the interactions among the actors within it than by the technology with which it is implemented.

·        The core of their vision is that cyberspace is necessarily a multiple-participant environment. A multi-use environment is central to the idea of cyberspace.

·        At the heart of the Habitat is an object-oriented model of the universe

o       The objects implement the semantics of the world itself.

o       The goal is to enable the communications between machines take place primarily at the behavioral level rather than the presentation level (what people are doing rather than how the scene is changing).

·        Cyberspace is a computational medium to augment the communications channels between real people.

·        The implementation platform is relatively unimportant.

o       We can build effective cyberspace systems today.

o       It is conceivable that with a modicum of cleverness and foresight you could start building a system with today's technology that could evolve smoothly as the tomorrow's technology develops.

·        Data communications standards are vital

·        Detailed central planning is impossible.

o       Social constructivism - community building of knowledge.

o       The bulk, wherein the complexity lies, is the product of the users themselves, rather than the system designers -- the operators of the system do not have to create all the material.

o       Organizers shifted from trying to control everything to letting the players themselves drive the direction of design (going towards constructivism!). This proved far more effective. Instead of trying to push the population in the direction they wanted them to go, they tried to see what people wanted and aid them in it. They became facilitators as much as designers and implementors. This allowed them to have more influence on the system than when they had total control.

·        Work within the system

o       Maintaining the consistency of constraints makes the activity more pleasurable and believable.

 

These lessons are very important on a personal level as well. As seen in my initial questions, I had difficulty letting go of the apparent control I wanted to have on the evolution of the whole project. Project Pioneer already has taken on a life of its own, and I learned that the best way I can help the students is by giving them freedom. My role is that of a facilitator, providing the resources they need, but letting them explore on their own. Using the open source approach has an inherent constructivism to it that cannot and should not be ignored. It is better to work with the flow in this case. That’s why we chose such a system in the first place. It also allows us to benefit from the best aspects in using simulation and virtual environment for learning.

 

According to Assumpcao Jr. (1999), a very important aspect to remember is that almost everything we have today was created by people with a “mathematical mentality”, which normally had great familiarity with how computers worked at a very basic level. This combination resulted in machines that only make sense to a very small portion of the population, with only one learning style, leaving most of the others out.

 

The direction in which Smalltalk and Self went was to create something for people who prefer to work with the concrete, instead of the abstract. These systems don’t mind losing in performance to make the basic low-level details of the machine irrelevant, when it is more convenient for the user.

 

A little bit of this ended up passing on to the users through the Mac OS and Windows. But adopting only some aspects of a more evolved system, and based on a weak foundation is not the best solution. It’s best to adopt the more evolved system once and for all. So that’s what we are proposing to try.

 

The table below, made by Assumpcao Jr. (1999), will help visualize the requirements for working with the different systems. By knowing what we are dealing with, we will be able to better help our students get the most out of the environment. The idea of the table is to show that the learning process in Self/R is of “progressive disclosure”, but more tortuous in other systems.

 

Type of User

Win98/NT/MacOS

Linux

Self/R

Casual User

File systems, applications and how data in files is different from data on disk - open/save/save as, scroll bars, menus and dialog boxes, cut/copy/paste, file formats, browser for www and plug-ins, email software, user accounts and permissions (in NT)

File systems, user accounts and permissions, processes and how to kill them, applications and how data in files is different from data on disk, how to use their particular X Window manager and various types of scroll bars, various user interfaces for different applications - mostly menus and dialog boxes, file formats, browser and email software

Persistent objects - prototypes and copies, user accounts, pop up menus and dialog boxes, outliners, drag-n-drop, email

Power User

Scripting systems and things like VisualBasic for Applications, shortcuts in the user interface, managing files Linux: command line interface and Unix commands, shell scripts, pipes

 

Complex selections, taking objects apart and putting them back together, typing simple Self expressions in the shell, automating tasks with agents

System Administration

Hardware information, network information, where things are configured, how to defeat automatic (but sometimes wrong) configuration systems

Lots of hardware information, lots of network information, configuration file formats, where configurations files are stored

Not applicable when running on top of another OS, where things are configured when running on dedicated hardware

 

Application Programming

A language like C++ or Java, the vast APIs (application programming interface) for the system, using debuggers and related tools, how to think like a programmer

 

A few languages like C and Perl, one or more of the many APIs for X Windows, using debuggers and related tools, how to think like a programmer

Additional things about Self, the large set of pre-defined objects and how they are related, additional things about the debugger (used as an error dialog box up to now), how to think like a programmer

System Programming 1 (Drivers and Extensions)

Hardware in detail, a language like C or assembly, driver developers kit, lots of additional APIs

Hardware in detail, kernel source and how drivers fit in, all about modules

Hardware in detail, reflection and meta-objects and how drivers fit in

System Programming 2 (Kernel Hackers)

Not applicable unless you work at Microsoft or Apple, lots and lots of details and the overall architecture of the source if you do

Dive deeper into the kernel source

More meta-objects including the compiler

System Programming 3 (Languages and other Tools)

Parsers, semantic evaluation, code generation, much more about memory organization

 

Parsers, semantic evaluation, code generation, much more about memory organization

 

Same as Kernel Hackers plus things like parsers

 


5. Bibliography

                       

1.       Assumpcao Jr., Jecel M. (1999) Computers in Education. Email sent to the Project Pioneer list (ppioneer@listbot.com ) including references to Papert, Kay, Jobs in making computer history.

2.       Assumpcao Jr., Jecel M. (1999). History of Programming. Email sent to the Project Pioneer list (ppioneer@listbot.com ) summarizing where the Self language has come from, giving context to our choice.

3.       Assumpcao, Jr., Jecel M. (1999). Self in Education. Email sent to the author on December 11, 1999 4:31PM.

4.       Dodge, B. (1997). Some Thoughts About Webquests. San Diego State University. http://edweb.sdsu.edu/EdWeb_Folder/courses/EDTEC596/About_WebQuests.html

5.       Dodge, B. (1996). Distance Learning on the World Wide Web. Published in 1996 as Chapter 12 in Brandon, B. et al, Computer Trainer's Personal Trainer's Guide, Que Education and Training, Indianopolis, IN, ISBN 1-57576-253-6. http://edweb.sdsu.edu/people/bdodge/CTPTG/ctptg.html

6.       Duffy, T. & Jonassen, D. (1992). Constructivism and the Technology of Instruction: A Conversation. Published by Lawrence Erlbaum Associates, Hillsdale, NJ.

7.       Eklund, J. and Zeiliger, R. (1996). Navigating the Web: Possibilities and Practicalities for Adaptive Navigational Support. Paper on the web. http://www.scu.edu.au/sponsored/ausweb/ausweb96/tech/eklund1/paper.html

8.       Harris, J. (1998). Wetware: Why Use Activity Structures? December-January 1997-98 "Mining the Internet" column in Learning and Leading with Technology, International Society for Technology in Education, Eugene, Oregon. (http://ccwf.cc.utexas.edu/~jbharris/Virtual-Architecture/Foundation/index.html

9.       Johnson, D., Johnson, R. and Holubec, E. (1993). Circles of Learning: Cooperation in the Classroom. Interaction Book Company, Edina, Minnesota.

10.   Morningstar, C. and Farmer, F. Randall (1990). The Lessons of Lucasfilm's Habitat. Published in Cyberspace: First Steps, Michael Benedict (ed.), MIT Press, Cambridge, Mass. (http://www.communities.com/paper/lessons.html )

11.   Rothkopf, E.Z. (1998) Information, Schooling, and National Performance. Columbia University, Teachers College. Draft.

12.   Smith, D.C., Cypher, A. & Spohrer, J. (1994). KidSim: Programming Agents without a Programming Language. In Communications of the ACM, 37(7), July 1994, pp. 54 - 67. (http://www.dnai.com/~cypher/Publications/CACM/KidSimCACM.html

13.   Ungar, D. and Smith, Randall B. (1991). Self: The Power of Simplicity. Published in Lisp and Symbolic Computation: An International Journal. Kluwer Academic Publishers.

14.   Wolinsky, A. (1999). Let's Play a game... Beyond WebQuests (fwd). Email to WWWEdu list, on November 03, 1999 3:35PM.

 


6. Appendix

 

A. History of Programming (to understand the potential of Open Source)

Fortran, Lisp, Visual Basic, C++, Smalltalk, Self (Assumpcao Jr., 1999)

Portuguese

A programação nos primeiros computadores era feito modificando-os

físicamente - tinha um painel cheio de furos e você ligava pares

de furos com fios. A Cristiana mostrou uma máquina assim numa

feita de ciências no colégio Mackenzie (ele é velha, não? :-)

 

Uma grande melhoria foi guardar os programas na mesma memória

que os dados. Isto ficou conhecido como "arquitetura de Von

Neumann" pois o relatório em que a idéia foi descrita foi editado

por John Von Neumann. Isto tornou possível a criação de programas

que criavam programas: uns bits na memória podia ora serem encarados

como dados de saída de uma programa e ora vistos como um programa

a ser executado. O primeiro programa deste tipo criado foi o

montador ("Assembler") que permitia ao programador escrever algo

que ele entendia:

 

     load ($1234)

     add bc

     jmp LOOP32

 

ao invés de algo que a máquina entendia:

 

     1101 0000 0101 1001

     1000 1000 1111 0101

     0100 0010 0001 1100

 

Logo foram percebidas tarefas que eram repetidas muitas vezes e

foram inventas "linguagens de alto nível" para que o computador

passasse a fazê-las (meados dos anos 50):

 

  FORmula TRANslation para ciêntistas cheios de equações

  COmmon Business Oriented Language para manter arquivos das empresas

  LISt Processing para pesquisadores de inteligência artificial

 

Depois eu falo um pouco mais sobre esta última, o LISP.

 

Um problema que foi logo percebido é que as pessoas tinha muita

dificuldade de entender como funcionavam os programas das outras

pessoas (e, muitas vezes, delas mesmas!). A maior razão disso é

que o fluxo do programa pulava de lá para cá de maneira desordenada.

Foi então criada a "programação estruturada". Nela, o programa

tinha que ser dividido em blocos de maneira restrita - a execução

do programa só podia começar no início do bloco e só sair no fim;

nada de pular para o ou do meio do bloco. E só podiam haver três

tipos de blocos: sequência de outros blocos, loops e blocos com

duas ou mais alternativas. Note que a programação estruturada é

mais *limitada* do que a programação livre. Os seres humanos são

limitados, de forma que muitas vezes a única maneira de mantermos

o controle é abrindo mão de opções.

 

Dado o sucesso da programação estruturada, foi criada a ALGOrithmic

Language em 1960 para que os blocos pudessem ser escritos diretamente

na linguagem (demarcados por BEGIN e END). Chegamos aos anos 70

com uma complexidade crescente nas linguagens, e Niklaus Wirth

mostrou que o que realmente faltava ao ALGOL era a capacidade de

trabalhar com complexas estruturas de dados - o seu famoso livro

"Data + Algorithm = Program" introduziu os conceitos da linguagem

Pascal. Mas a simplicidade do Pascal provou ser bem problemática

na prática, pois não havia meio de vários programadores trabalharem

em trechos diferentes e depois integrarem seu trabalho. Isto levou

o departamento de defesa americano a criar a linguagem Ada com

seus "packages" para substituir a verdadeira Babel de linguagens

que infesta o desenvolvimento de software militar. Wirth viu isso

como mais um ataque da complexidade e criou a linguagem Modula-2

para mostrar como se faz (depois ele viu que ainda era muito mais

complexo do que precisava ser e criou o Oberon em 1985).

 

Na outra mensagem eu falei um pouco sobre a programação orientada

a objetos (Simula->Smalltalk->Self) de modo que aqui só vou mencionar

que ela pode ser considerada um evolução natural da programação

modular do paragráfo anterior. Tudo mencionado até aqui pode ser

chamado de "programação imperativa", já que o programa representa

um sequência de ordens a serem cumpridas pelo computador.

 

Enquanto isso, o LISP deu origem a uma tradição de programção bem

diferente. Um programa é descrito como uma sequência de aplicações

de funções (no sentido matemático da palavra, e não de programação).

Para fazer o LISP funcionar na prática, foram acrescentadas uma

série de alterações que o transformaram numa linguagem imperativa.

Mas a idéia da programação como um ideal matemático permaneceu, sendo

que a APL (A Programming Language) a que melhor se aproximava disso.

Como a criação da FP (Functional Programming) por John Backus (uns

dos criadores do FORTRAN) nos anos 70, houve uma explosão de

interesse por este assunto no meio academico, principalmente na

Europa. A grande idéia é que você poderia provar matemáticamente

se um programa está correto ou não, e usar ferramentas automáticas

para transformar um programa em outro. A lista de novas linguagems

que surgiram é muito grande, mas são Hope, Alice, ML e Haskell as

que eu mais chamaram minha atenção.

 

Ao mesmo tempo estava surgindo na Europa um terceiro tipo de

programação com a linguagem PROgramming in LOGic - a programação

declarativa. A idéia é que você apenas deve dizer (declarar) que

é o problema da forma mais precisa possível, e o computador deve

usar as regras da lógica para descobrir sozinho *como* resolver

o seu problema. Exemplo clássico: dados estes fatos

 

  mae(bruna,alex).

  mae(bruna,sandra).

  pai(chico,alex).

  pai(chico,sandra).

  mae(sandra,alfredo).

  pai(felipe,alfredo).

  mae(heloisa,felipe).

  pai(geraldo,felipe).

 

e estas regras

 

  avo(X,Y) - pai(X,Z),pai(Z,Y).

  avo(X,Y) - pai(X,Z),mae(Z,Y).

 

e esta pergunta

 

  avo(chico,N)?

 

teremos a resposta

 

  N=alfredo

 

mas o PROLOG funciona nas "duas direções", de modo que a pergunta

 

  avo(A,alfredo)

 

resulta em

 

  A=chico

  A=geraldo

 

O importante é notar que as regras foram aplicadas na ordem em

que o PROLOG achou mais conveniente para resolver o problema, e

não na ordem em que foram escritas pelo programador.

 

Dado um avanço destes, o governo japonês anunciou que iria investir

massiçamente no desenvolvimento de "computadores de quinta geração"

durante uma década. Estes computadores seriam baseados na linguagem

PROLOG e seriam capazes de criar seus próprios programas ao terem

os problemas dos usuários descritos em linguagem natural.

 

Quando aprendi sobre o Smalltalk e a programação orientada a objetos

ao ler a revista Byte de agosto de 1981, eu já conhecia a programação

funcional (eu tinha escrito um interpretador de FP em LISP) e a

programação declarativa. A primeira coisa que me impressionou é

que não entendi nada do que o pessoal da Xerox estava falando! E

olha que eu não costumo levar mais que 5 minutos para aprender uma

nova linguagem de programação (eu listo as principais em

http://www.lsi.usp.br/~jecel/jecel.html) e eles afirmavam que usavam

o Smalltalk para ensinar programação para crianças. Só mais tarde

eu descobri que o Smalltalk-80 que eles descreviam na revista era

bem diferente (mais complexo) do que o que eles tinham ensinado

para as crianças.

 

O que mais me chamou a atenção em relação ao Smalltalk eram os

resultados práticos que eles tinham obtido (editores, programas

de desenho, de música e tantos outros) em contraste com o mundo

das idéias dos academicos da programção funcional e declarativa.

Outro problema é que estes estilos dependem muito do programador

ter uma mentalidade extremamente lógica/matemática, que não é o

caso da maioria da população. Um problema muito prático do PROLOG

é que como o programador abre mão de dizer ao computador *como*

resolver o problema, fica quase impossível saber quanto tempo para

se obter um resultado. Uma pequena alteração nos dados de entrada

pode fazer um programa passar a levar meses no lugar de segundos

para terminar.

 

Resolvi insistir com a programação orientada a objetos e Smalltalk

até que conseguisse entender o que eles tinham feito. Com o tempo,

vi que realmente era símples mas eles não tinham explicado muito

bem. Do jeito que eles escreveram, se você já sabia do que eles

estavam falando ficava tudo muito claro, mas senão eram apenas um

monte de palavras sem sentido.

 

Em 1983 um amigo da faculdade disse que uns banqueiros queriam

entrar na área da informática e pediram para ele projetar um

computador para crianças. Ele queria minha ajuda, mas logo eu

estava fazendo tudo sozinho (os banqueiros sumiram e gastei meu

dinheiro para montar o protótipo). Adotei a linguagem Logo (o

dialeto do LISP para crianças), mas achei que as crianças dos

anos 80 não iam ficar muito contentes de ficar fazendo "desenhos

de tartaruga" na tela. Resolvi que seria interessante que elas

pudessem criar seus próprios jogos. Para isso, concluí que eu

teria que incluir: programação paralela, eventos, objetos e rede.

 

--- Programação paralela ---

 

Num jogo acontecem várias coisas ao mesmo tempo. É possível

simular isso manualmente (exemplos no estilo da linguagem C):

 

  while(true) {

     leTeclas();

     moveJogador1();

     moveJogador2();

     moveBola();

     atualizaPlacar();

  }

 

Só que isso é difícil para a maioria das pessoas, e inserir novas

ações (que tal um jogador3?) muda tudo. Não seria mais agradável

poder programar cada coisa que acontece na tela separadamente?

 

  while(true) {

     leTeclas1();

     moveJogador1();

  }

 

 

  while(true) {

     leTeclas2();

     moveJogador2();

  }

 

 

  while(true) moveBola();

 

 

  while(true) atualizaPlacar();

 

 

É claro que precisa uns comandos para iniciar a execução paralela

destes quatro programas separados, mas é fácil ver que colocar

mais jogadores, nuvens passando no céu, etc. não dá nenhum

trabalho.

 

--- Eventos ---

 

É mais natural expressar o que acontece num jogo em termos de

regras, o que favorece a programação declarativa. Só que não

precisamos de toda a potência (e complicações) do PROLOG: se o

sistema detectar a ocorrência de certas situações e executar

de maneira imperativa mesmo trechos do nosso programa, as coisas

já ficariam bem mais fáceis. O Papert propos o comando "when"

para o Logo e o Alan Kay o implementou no Flex:

 

  ...

  when (x<y) {x = y}

  ...

 

Isto é bem diferente do "if". Nada acontece quando programa

passa por este ponto, mas no instante em que o valor de X ficar

abaixo do de Y ele é alterado para ficar igual ao Y. Para um

jogo, não é bem melhor poder escrever:

 

  when(colisao(jogador1,bola) {

     desviaBola();

     pontoPara(jogador1);

  }

 

do que ter que ficar enchendo o programa de teste em todos os

lugares em que imaginamos que pode haver uma colisão?

 

Se os tipos de condições nas quais estamos interessados é limitado,

uma alternativa interessante é a do Macintosh (e seu clone, o Windows)

onde o sistema coloca numa fila indicações de ocorrência dos eventos

e nosso programa lê da fila:

 

  while(true) {

     e = getNextEvent();

     switch (e) {

        case colisao:

                         desviaBola();

                         pontoPara(e->jogador);

                         break;

        case tecla:

                        ...

     }

  }

 

Ei!! Mas eu não falei que era melhor separar as coisas em pequenos

programas independentes? Foi o que o HyperCard (e seu clone, o

VisualBasic) fez:

 

   onColisão (evento e) {

      deviaBola();

      pontoPara(e->jogador);

   }

 

   onTecla(evento e) { .... }

 

Note que essa "programação por eventos" não é tão poderosa quanto

o comando "when", mas quebra o galho. O grande problema deste estilo

é que as regras do jogo costumam depender muito do contexto ("o

jogador pode correr para a lateral, a não ser quando a bola foi

colocada fora de jogo pelo juiz, ou se o cronometro for parado por

um dos técnicos..."). Quem não entende os perigos de regras sem

contexto deve assitir 10 vezes "O Aprendiz de Feiticeiro" no filme

"Fantasia" do Disney :-)

 

--- Objetos ---

 

Todo jogo é uma simulação (de algo real ou imaginário - não faz

diferença). Não foi por acaso que a linguagem Simula-68 incluiu

a idéia de objetos. Se existe uma "bola" no jogo, não é mais fácil

ter um pedaço do programa que corresponde diretamente à bola do

que ter uma dúzia de números e subrotinas espalhadas por todo

programa que juntas representam a idéia de bola? Um exemplo

relevante: se eu pudesse definir o objeto "data" num só lugar

no meu programa (ou melhor: em todos os meus programas!) fica

trivial mudar a representação de 2 digitos para 4. Senão, vou

ter que olhar linha por linha para descobrir o que tem que

ser alterado (famoso "bug do milênio").

 

--- Rede ---

 

Uma unidade de disquetes custava US$500 em 1983 (160KB!), de

modo que não tinha sentido cada aluno ter o seu. Resolvi ligar

todos os micros em rede e colocar um winchester de 5 MB (US$3000)

na máquina do professor. Também seria mais conveniente do ponto

de vista de controle e administração. Mas além de partilhar o

disco e impressora pela classe toda, me pareceu óbvio que os

alunos iriam querer criar jogos em que vários jogadores participariam,

cada um em sua própria máquina. Afinal, nada era mais popular

nas redes de computadores Alto da Xerox PARC do que os jogos

multiusuários de Star Trek e de labirinto 3D (o Doom dos anos 70 ;-).

Mas eu não tinha experiência com isso na ocasião, e apenas

incluí comandos para que um programa pudesse enviar eventos para

outra máquina. Mais tarde (de 1987 para cá) eu pesquisei bastante

sobre como realmente aproveitar a rede.

 

Quando foi meados de 1984 eu descobri duas coisas: eu ia continuar

fazendo tudo sozinho mesmo e que eu estava usando cada vez mais

a parte de programação orientada a objetos que eu tinha colocado

no Logo. De fato, eu estava usando tando que mudar para Smalltalk

iria simplificar as coisas. Só que o Pegasus era muito fraco para

rodar esta linguagem (que ainda era usada apenas na Xerox) e eu

propus para meu amigo fazermos algo mais poderoso. Ia ficar meio

caro para as escolas, mas poderíamos vender para empresas. Ele

não gostou, mas eu achava que quem fazia o trabalho é quem devia

mandar e me separei para iniciar o Merlin. Sem dinheiro, parei

o projeto para trabalhar em 1985. Retomei o projeto em 1986 e

meu ex-chefe quis ser meu sócio. Na feira de informática daquele

ano apresentamos o primeiro "network computer" (apesar de que

o Smalltalk não estava funcionando ainda). Nos desviamos do rumo

no fim de 1987 e nossa sociadade acabou em 1988. O pessoal do

Laboratório de Sistemas Integráveis (LSI) da USP se interessou

pelo Merlin, mas quando eu trabalhei lá acabei mais ajudando nos

projetos de "super computadores" deles do que fazendo o meu projeto.

Acabei tendo que sair do LSI para poder realmente retormar o Merlin.

 

O mundo continuava sem poder ver as fantastica e práticas coisas

que tinham sido criadas em Smalltalk:

 

 - Pygmalion [David Smith]

 

   Introduziu a "programação por exemplos", em que o usuário mostra

   para o computador o que ele quer que seja feito e o computador

   passa a repetir a tarefa sozinho. Introduziu os "icones" no

   mundo dos computadores.

 

 - Analyst [Xerox PARC para a CIA}

 

   Uma planilha eletrônica de dar inveja ao Excel. Qualquer tipo

   de objeto podia ser usado como valor nas células, de modo que

   era  possível usar o Analyst para processar imagens ou sons.

 

 - Humble [Xerox AI lab]

 

   Um ambiente para a criação de "sistemas especialistas", um

   produto da pesquisa de inteligência artificial em que o

   computador podia ser usado em tarefas como auxilio a diagnóstico

   médico e à exploração petrolífera.

 

 - ThingLab [Alan Borning]

 

   Um sistema de programação por "contraints", que é um caso

   particular de programação declarativa. Pense num "PROLOG

   gráfico" :-)

 

 - Alternate Reality Kit (ARK) [Randy Smith]

 

   Permitia aos estudantes fazerem experiências de física num

   laboratório virtual. Só que as leis da física poderiam ser

   alteradas para ver o efeito na experiência! A interface gráfica

   dava uma impressão de solidez aos objetos por efeitos de

   sombra (copiado pelo NeXT que foi copiado pelo Motif/Windows 3.1)

   e representava as idéias do Smalltalk de maneira concreta (mais

   sobre isso logo abaixo).

 

 - MoDE [Stephen Pope]

 

   Um estúdio de composição musical com muitas ferramentas

   automáticas e de síntese.

 

É claro que houveram muitos outros projetos interessantes, como

o controle de fabrica de chips pela Tektronix, mas foram estes

que mais me impressionaram. Por outro lado, depois de dez anos

e alguns bilhões de dollars os Japoneses não tinham grande coisa

para mostrar e os "computadores de quinta geração" cairam no

esquecimento (o que não quer dizer que eles não possam ter o

seu lugar no futuro).

 

A experiência do Randy Smith com o seu ARK foi particularmente

interessante. Ele queria que o usuário sentisse que realmente

estava na realidade alternativa. O cursor era uma mão e quando

agarrava um objeto este se erguia do mundo fazendo uma leve

sombra nos que estavam em baixo. Ao largar um objeto, se a mão

estava em movimento o objeto continuava andando devido à sua

inércia. Se você precisava de um novo objeto (uma bola de metal,

por exemplo), haviam no canto da tela uma "fabrica" (representando

a idéia de classe do Smalltalk) onde você podia obter uma.

 

O Randy ficou preocupado se os usuário achariam o subconjunto do

Smalltalk que ele representou insuficiente, e se teriam que toda

hora "olhar por baixo do pano" e voltar para as ferramentas

tradicionais da linguagem para terminar o seu trabalho. Para a

sua surpresa, não só as pessoas se viravam com apenas o que ele

tinha incluído, mas até nunca usavam umas partes do ARK. No

lugar de ir até a "fabrica" buscar uma nova bola, era muito mais

fácil pegar uma bola já existente e dar o comando "copy" para

ela!

 

Quando li o texto do Self no fim de 1988, o Randy tinha evoluido

estas idéias com o David Ungar para chegar a um Smalltalk que

fazia tudo o que o velho fazia, só que com menos idéias:

 

 Para guardar informações:

 

   Smalltalk - variáveis de instância + herança

               variáveis temporárias

               variáveis de classe

               variáveis partilhadas (pool variables)

               variáveis globais

 

   Self -      "slots" de dados + herança

 

E olhe que existem Smalltalks com vaiáveis de instância de classe

e variáveis de pacotes.

 

 Relações de objetos:

 

   Smalltalk - inclusão como componente

               instância de uma classe

               subclasses de uma outra classe

 

   Self -      inclusão como componente

               inclusão como "pai"

 

 Programa:

 

   Smalltalk - métodos de instância + herança

               métodos de classe + herança

 

   Self -      "slots" de métodos + herança

 

 Criação de novos objetos:

 

   Smalltalk - envia "new" para uma classe

               envia "copy" para uma instância

 

   Self -      envia "copy" para um objeto

 

É melhor parar por aqui antes que eu entre em detalhes obscuros

como "contextos de execução" e "blocos" :-) A idéia é que se

eu ia ter que ensinar a linguagem para um bando de gente, me

parecia mais fácil com o Self do que com Smalltalk. Mas note que

Smalltalk é considerada uma linguagem símples comparada com

Java ou C++, só que se pode ser ainda mais símples... porque não?

 

Eu já conhecia o trabalho do Randy com o ARK, de modo que quando

vi o Self eu imaginei que poderia ser a base para algo extremamente

gráfico e concreto. Isso só ocorreu em 1995 com o lançamento do

Self 4.0 (as versões anteriores até tinham uma demonstração de

interface gráfica, mas toda a programação era feita na linha

de comando e editores normais do Unix).

                       


B. History of the use of Computers in Education

Papert, Kay, Jobs, Schank (Assumpcao Jr., 1999)

Portuguese:

Isto aqui vai ser um pouco comprido, pois achei melhor fazer uma

introdução histórica para todos saberem de onde vieram as idéias

que estou tentando implementar.

 

Bem no fim dos anos 50, surgiu uma nova maneira de se usar os

computadores chamada de "time sharing" ou "on line transaction

processing (OLTP)". As pessoas se sentavam em frente a terminais

e interagiam diretamente com o computador. Isto foi a inspiração

para o CAI (Computer Aided Instruction), sendo o projeto Plato

da Universidade de Illinois (1960-1980) o exemplo mais famoso. A

idéia era substituir o professor: especialistas criavam lições

com uma série de textos e perguntas de múltipla escolha. Dependendo

das respostas de cada aluno, o computador apresentava um conjunto

de textos diferentes (ou em ordem diferente). Seria o fim da

educação massificada e o início do "self paced learning" onde

cada aluno teria uma educação adaptada às suas próprias necessidades.

 

Este modelo não agradou muito a Seymour Papert

(http://papert.www.media.mit.edu/people/papert/) que tinha chegado

ao MIT depois de ter trabalhado alguns anos com Jean Piaget em

Geneva. Ele defendia duas idéias: quem ensina é quem mais aprende

e o ambiente de aprendizado é muito importante (aprender Francês

era considerado algo difícil nas escolas Americanas, mas é algo

que qualquer bebê na França consegue fazer!). Em colaboração com

os engenheiros da BBN Inc., ele criou uma versão simplificada

da linguagem de programação LISP (usada em pesquisa de inteligência

artificial) chamada Logo

(http://el.www.media.mit.edu/groups/logo-foundation/). Um aspecto

interessante é que eles incluiram um robô semi-esférico com rodas

e uma caneta (parecia uma tartaruga - que virou o símbolo do Logo)

que podia ser programada pelas crianças. Note que elas aprendem

tentando ensinar coisas para a tartaruga (que é tão burrinha,

coitada!) e a linguagem/ambiente onde fazem isso é algo no qual

idéias matemáticas ocorrem naturalmente, e não como um assunto a

ser estudado.

 

Observação: o Logo é usado em muitas escolas, inclusive no Brasil,

mas quase sempre é um espetáculo triste - professores que não

entenderam as idéias obrigam os alunos a usarem o sistema como

o programa de desenho mais desajeitado do mundo. Os alunos ficam

orgulhosos se depois de um semestre conseguem criar uma casinha

símples na tela do computador, o que eles teriam feito em dois

minutos no Paintbrush!

 

Voltando ao fim dos anos 60: o Alan Kay estava muito impressionado

com as idéias mostradas no NLS de Doug Engelbart ("mouse", edição

dinâmica na tela, janelas, processamento de "outlines", hypermedia e

groupware) e com as interfaces gráficas da Universidade de Utah

(o sistema Sketchpad de desenho e interfaces de realidade virtual

3D). Em sua tese, ele trabalhou em cima da idéia de um "computador

pessoal" (construiu um protótipo chamado "Flex"). Ele também

estava interessado nas idéias da linguagem de programação Simula -

ele deu a este estilo de programação o nome de "programação orientada

a objetos". Ele pensava no computador como uma nova mídia, uma forma de

expressão e não um ferramenta. Quando ele viu o trabalho do Papert no

MIT, tudo se encaixou e ele criou o Learning Research Group dentro do

Xerox Palo Alto Research Center para desenvolver um computador pessoal

para crianças.

 

O Alan imaginou que poderia aproveitar as idéias do Flex e do

Simula, mas numa forma totalmente gráfica. Esta linguagem gráfica

se chamaria Smalltalk (para que as pessoas não tivesse expectativas

muito exageradas). Só que numa conversa de corredor ele descreveu

uma idéia de linguagem muito símples mas muito poderosa e, sem que

ele esperasse, o Dan Ingalls mostrou sua idéia funcionando num

mini-computador menos de uma semana depois! Com o nascimento do

Smalltalk-72 a idéia da linguagem gráfica foi deixada de lado, e

logo eles tinham uma máquina muito mais avançada para continuar

o projeto: o Xerox Alto. Aqui nasceram as janelas sobrepostas,

os "pop up menus", o copiar/cortar/colar (de Larry Tesler, hoje

na Apple, e  Charles Simoni, o criador do Word da Microsoft), a

rede Ethernet, a impressora Laser e os infames cursores em flexa

e em ampulheta.

 

Como a evolução da linguagem para o Smalltalk-74, o grupo teve

chance de experimentar o sistema com alunos selecionados de

colégios de Palo Alto. Começando com a famosa tartaruga do Logo,

eles fácilmente reproduziram os resultados do Papert. Mas empacaram

nisso até que a Adele Goldberg teve a idéia de uma nova abordagem:

primeiro os alunos bricariam com objetos prontos, e só depois

desta experiência eles tentariam adivinhar como seriam estes

objetos por dentro. Deu certo - em pouco tempo os alunos tinham

criado vários editores gráficos, simulação de helicóptero, sistema

de animação e outros. Refletindo sobre a experiência anos mais

tarde, Alan Kay concluiu que eles estavam fadados ao sucesso: dado

a seleção de alunos e a quantidade de apoio que deram e a motivação

especial, *qualquer* coisa que tentassem teria dado certo (quer

fosse programação ou projetar submarinos). Isso é um pouco de

exagero (como mostrou as dificuldades com a tartaruga), mas é uma

coisa a se ter em mente quando se faz projetos pilotos na educação

e se pretende generalizá-los depois.

 

Com o Smalltalk-76, -78 e -80, o projeto tomou o rumo de antender

às necessidades de programadores "sérios". O Smalltalk-78 foi

criado para um computador portátil baseado no processador 8086

e que os pesquisadores queriam que fosse comercializado. A Xerox

matou o projeto criando bastante frustração. Em 1979 o Jef Raskin

(que estava criando um computador de $200 chamado Macintosh na

Apple) convenceu o Steve Jobs a ir até a Xerox PARC para ver uma

demonstração do Smalltalk. Ele ficou muito impressionado e mudou

totalmente o principal projeto da Apple, o Lisa, para ter a cara

daquilo que ele tinha visto. Ao ser chutado para fora deste projeto

pela direção da Apple, o Jobs se apoderou do Macintosh e o transformou

num "mini-Lisa" de $2500. Em 1982 a Xerox finalmente comercializou

suas idéias, mas o Star custava $25.000. O Lisa, de 1983, não foi

muito mais popular custando $10.000. Foi só o Mac, em 1984, que

realmente popularizou as janelas e o mouse. Mas o Jobs tinha

convencido o Bill Gates a desenvolver programas para o Mac (Word

e Excel), e este queria ter uma imitação de Mac para que os mesmos

programas pudessem rodar nos PCs. O Windows 1.0, e 2.0 e Windows 386

não tiveram muito impacto, mas o Windows 3.1 mudou a história em 1990.

 

O grande problema é que estas cópias todas tinha a aparência do

que tinha sido desenvolvido na Xerox, mas não a substância. Era

ainda mais difícil programas para o Mac ou para o Windows do que

para os sistemas anteriores! Em 1985 a Digitalk apresentou o

Smalltalk/V para o PC. No fim de 1987 foi criada a ParcPlace com

o pessoal da Xerox PARC que não tinha se debandado para a Apple e

outras. Eles lançaram uma versão bem mais "pesada" do Smalltalk

para estações Unix. Na mesma época foi criada uma mistura da

linguagem C com as idéias do Simula e chamada de C++. Graças à

popularidade do C, esta linguagem logo se tornou sinónima de

programação orientada a objetos e o Smalltalk passou a ser usado

mais por programadores que vinham do Cobol e outras linguagens

comerciais e achavam o C++ muito complicado.

 

Ainda em 1987, a Apple lançava o HyperCard. Combinando hipermídia

com uma programação extremamente símples, qualquer um podia criar

"stacks" interessantes e finalmente fazer o computador fazer o que

desejasse. Houveram muitas cópias do HyperCard, mas nenhuma tão

bem sucedida quanto o Visual Basic.

 

Também em 1987, o David Ungar da Universidade de Stanford e o

Randy Smith da Xerox PARC se juntaram para criar uma versão

simplificada do Smalltalk, publicando o trabalho "Self: The

Power of Simplicity". Em 1990, depois dos estudantes do David

terem criado a primeira versão da linguagem (com um desempenho

muito maior do que qualquer um poderia esperar - linguagens

orientadas a objetos tem fama de serem lentas) o grupo se mudou

para a Sun Microsystems (http://self.sunlabs.com) . Apesar do

impressionante progresso obtido, a empresa cancelou o projeto em

1995 para se concentrar numa outra alternativa: o Java (uma espécie

de Pascal com umas pitadas de Smalltalk, mas com cara de C++ para

atrair os fans desta linguagem).

 

Enquanto isso, o grupo original do Smalltalk se reuniu na Apple

e criou o Smalltalk Squeak (http://www.squeak.org) para continuarem

de onde tinham se desviado em 1976 - um sistema que pudesse ser

usado para trabalhar com crianças. Com a crise na Apple, o grupo

se mudou para a Disney. Ainda não posso recomendar o Squeak para

qualquer um - está no mesmo pé em que estava o Linux quando

comecei a usá-lo em 1994 (se você tinha muita experiência com

Unix, ia gostar. Senão, não ia ser nada fácil). Por enquanto o

Squeak é mais atraente para quem já conhece Smalltalk, mas está

evoluindo rápido.

 

O Self não morreu apesar da vontade da Sun (é o que eu uso nos

meus projetos). Vou encurtar isso um pouco  - numa próxima eu

falou um pouco de como o que eu fiz se encaixa nos que descrevi

acima.