description || schedule || references
The number of students registered did not allow the course to meet its pedagogical goals. Hence, the Spring 2006 session is cancelled.
Future offerings under consideration include the same course in Fall 2006 or Spring 2007, and/or a similar course at the 499 (advanced undergraduate) level.
project || lectures || readings || grading
This courses addresses the collaborative design and implementation of complex, interactive, distributed software systems. The main innovative feature of the course is a collaborative project, a concept successfully tested in the CS599 ``Integrated Media Systems'' course developed by the instructor at USC and offered in Fall 2002 (Francois, 2003) (Francois, 2004) (see also www-scf.usc.edu/~csci599z). The lectures cover a wide range of topics including human factors, software architecture, project management, graphics, networking, etc.
The course is segmented into 3 parts: concepts and tools (6 weeks), patterns for virtuality (6 weeks), and advanced concepts and project wrap-up (3 weeks). Most of the time in part 1 is devoted to lectures; in part 2, class time is roughly equally devoted to lectures and project-related activities such as presentations and discussions; time allocation in part 3 is dependent on project progress and student interest.
Student performance will be evaluated with respect to collaborative software development.
The course centers around an ambitious and challenging collaborative project. The specifics of the single project are established during the course by the students, who work in teams (of preferably 2-4) on different functional aspects (e.g. graphics, networking, etc.). One of the requirements is that the project developed by the collective should be out of reach of any individual or small team working with the same time constraints.
The performance of any individual student for this course is therefore evaluated with respect to the success of the class as a whole in the development of the project, with respect to the student's team success, and with respect to the student's personal contribution to the project (as perceived by the project manager and by the other project participants). The precise breakdown and weights for the grading is given below.
The success of the project is evaluated in terms of quality of the software system itself (e.g. conformation to specifications, esthetics), as well as development process (documentation, efficiency, etc.) A panel of invited experts, chaired by the instructor, will perform the evaluation.
In his introduction to ``Bringing Design to Software,'' Terry Winograd characterises software as ``a medium for the creation of virtualities'' (Winograd, 1996). The project will revolve around the theme of ``Virtuality Engine,'' as support medium for games, virtual environments, visualization systems, etc. (Note that game design is not a central topic of the course.)
The successful project will result in a collective contribution (code, documentation and tutorial) either to the OpenVE open source project (OpenVE; openve.sourceforge.net), or to a self-contained open source project.
Part 1: Concepts and Tools (6 weeks) introduces the main concepts and tools for collaborative development of interactive distributed software systems. During the first 5 weeks of the course, lectures and homeworks introduce the challenges of collaboratively developing a complex software system, some principles and tools to help the collaborative process, software architecture models and development tools. By the end of this part, the students should be familiar with the Software Architecture for Immersipresence (Francois, 2004)(Francois, 2003) framework and the MFSM architectural middleware (mfsm.SourceForge.net). A lecture on Human Factors is scheduled early in the course, so as to be useful for the project. Finally, the project specifications, initial overall design, and teams should be established by the end of Part 1.
Part 2: Patterns for Virtuality (6 weeks) examines specific aspects of collaborative development of interactive distributed software systems. Topics covered include: project management, networking, presence and immersion, graphics, input interfaces, sound and music, simulations (physics, AI), data recording and analysis.
Part 3: Advanced concepts and project wrap-up (3 weeks) is mostly devoted to finishing the project. The schedule also sets aside a couple of lectures to explore advanced concepts of interest to the class and possibly in relation to the project. Specific topics will be decided in class.
There is no textbook per se for this course. Specific readings will be assigned/recommended for each topic during the course of the lectures. See a list of suggested readings in the references section.
Students are graded based on their performance in the course, in the context of collaborative software development:
Note: the Spring 2006 session of this course is cancelled.
Tuesday January 10: Course Overview
Objectives, challenges, organization
Thursday January 12: Collaboration Tools
Assign Homework 1: Collaboration tools
Tuesday January 17: Software Architecture
Thursday January 19: Software Architecture for Immersipresence (SAI)
Link: pollux.usc.edu/~afrancoi/sai
Tuesday January 24: Development Tools
Thursday January 26: The MFSM Architectural Middleware for SAI
Link: mfsm.sourceforge.net
Assign Homework 2: MFSM
Tuesday January 31: Project Management
Guest lecture by Barry Boehm
Thursday February 2: Project - goals, requirements, specifications
Project team formation
Tuesday February 7: Project - initial proposals
networking, graphics, input devices, sound and music, recording and
analysis, content, etc.
Thursday February 9: Project - initial design
Tuesday February 14: Project - common data structures and protocols
Thursday February 16: Human Factors
Guest lecture by Albert "Skip" Rizzo III
Tuesday February 21: Networking
Networking: topologies, protocols, bandwidth, latency, consistency, etc.
Thursday February 23: Project - update
Tuesday February 28: Presence, immersion, metaphors
Thursday March 2: Project - update
Tuesday March 7: Graphics and visualization
Thursday March 9: Project - update
Tuesday March 21: Input devices
Keyboard, mouse, gamepad, game devices, haptics, MIDI, microphones,
cameras, etc.
Thursday March 23: Project - update
Tuesday March 28: Physics, simulation, AI, etc.
Thursday March 30: Project - update
Tuesday April 4: Data collecting and user modeling
Thursday April 6: Project - update
Tuesday April 11: Sound and music
Thursday April 13: Project - update
Tuesday April 18: Advance topic (TBD) or project update
Thursday April 20: Project wrap-up
Tuesday April 25: Project - presentations to panel
Thursday April 27: Project - post mortem
SAI: pollux.usc.edu/~afrancoi/sai
MFSM: mfsm.sourceforge.net