Designing Distributed, Coordinated Activities (CS4984) The purpose of this class is to involve students in the team-oriented design, implementation, and exploration of loosely-coupled, delay- insensitive collaborative tasks, especially learning tasks and coordinative games, utilizing Tuple-Spaces, a Java-based language for coordination. Students will identify activities, "program them up" and try them out at least in our class, but if, time permits, in actual learning settings, either K12 or university. Handheld computers will be the target platform for these activities. Students will be introduced to principles of coordination, to the idea of Pattern Languages in programming, and to the development system for the class, including sample programs. After some initial exercises in programming and teamwork, students will form up into groups of 3-4, guided through the iterative process of planning, implementing and revising face-to-face, coordinated learning tasks or games. Students will write up their experience. Students will be graded on teamwork, class participation, responsibility especially in the timely articulation of problems, design, problem solving, delivery of a working program or a very good reason why not, response to critique, working well with a customer (if applicable), and the write-up. Students will be expected to make steady progress throughout the semester, and support their team members and/or customers, and engage in active revision and reflection. Students will benefit from working on teams with multidisciplinary concerns in which they must articulate disciplinary assumptions, goals, and limitations. Although students learning computer science in the past had ample opportunity to experience working with experimental systems, it is currently a rare opportunity that provides excellent preparation for the kinds of debugging, testing, and development jobs that are their most likely first jobs out of college. Additionally, it is important for computer science undergraduates preparing for life-long learning to have the experience of (i) writing a real program for use by others and (ii) facing new and different technical challenges while doing so. This class is part of a research project, and participation will include participation in the research. The programs at various stages of development, starting from conceptualization to use, and the write- ups will constitute evidence about the long-term viability of this system for educational programming. Background information about participants will also be collected in order to characterize the students' prior experience and knowledge. Experience with Java or permission of the instructor is required. Prior experience developing graphical user interfaces is highly desirable.