SoftwareDesignStudioFall2008

91.580.202 Software Design Studio
Prof. Fred Martin, ⚠ (:html:)<a href="http://mailhide.recaptcha.net/d?k=01COSqrfJ-58cc94fQb2pI1A==&c=iZBP8kCznrjdnfw8QFFKADFtsIimnLdVHk581djoISQ=" onclick="window.open('http://mailhide.recaptcha.net/d?k=01COSqrfJ-58cc94fQb2pI1A==&c=iZBP8kCznrjdnfw8QFFKADFtsIimnLdVHk581djoISQ=', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0, menubar=0,resizable=0,width=500,height=300'); return false;" title="Reveal this e-mail address">click for fred's email</a>(:htmlend:)
Thursdays, 5:30 pm
with additional Monday 12:30 pm scheduled Skype conference

Overview

You will develop significant software applications as part of a multi-person team, using contemporary software technologies and source code/project management tools.

Course projects include a combination of desktop, web-based, database, embedded, and mobile technologies. Student work will be tightly integrated into a real-world software system.

In addition to software development, the class includes reading, discussion, and reflective and research-based writing assignments.

Projects

The class will work on extending the iSENSE project -- Internet System for Networked Sensor Experimentation (see http://isenseproject.org).

iSENSE allows users distributed around the world to connect sensors (e.g., environmental sensors) to their desktop computers and have their data aggregated in a central database. Then, they (or other users) can create visualizations of these data, allowing people to conduct distributed science investigations. iSENSE also supports importing of data from remote data-collector devices.

For more, please see this project overview.

We will have many options for extending the system in the class:

  • Adapting and incorporating new Google visualizations
  • Interfacing to new hardware (e.g. Vernier probes, PASCO probes, the GoGo Board)
  • Creating personalization features and layered privileges inside the iSENSE user system
  • Developing entirely new data-gatherers (e.g., based on a cellphone with Bluetooth comms to a sensor module, a metered GPRS link for data upload, and solar cell power source)
  • Entirely new things based on your own ideas and interests

Class Structure

The class will be based on a shared software engineering practical (the “studio” aspect). In other words, while each of us will have his/her own projects, we will continuously share in each others' work and make contributions to it.

All software will be kept in a central SVN server, and we will explicitly arrange that every student can personally build the code and make contributions to all parts of it.

In terms of technology, the iSENSE system makes use of MySQL for the backend database, with a Java servlet to communicate to clients written in Java, JavaScript, and PHP (running in a web browser). There is a Java applet that communicates with the Scratch/Pico Board via a serial connection. A build script written in Ant is used to compile the servlet and applets.

Implementation work will be done using rapid-prototyping and iterative design principles (also known as agile design).

The class will have the following organization:

Phase 1. Introduction to existing iSENSE system, trivial build projects to get familiar with the system, selection of small implementation projects, execution and evaluation of such projects.

Discussion of readings.