Distributed Computing Laboratory
This is a 3-term course in which students, working in teams, develop and deploy distributed applications, make measurements and write papers on their work. The first term discusses theories of concurrency, the second term discusses software tools, and the third term is devoted exclusively to the project. Teams are formed and projects selected in the first few weeks of the first term; students work on their projects for all three terms.
Students are expected to submit papers on their work to conferences or journals. Writing papers for publication is a good experience. Instructors and teaching assistants help students find venues for publication and help with other aspects of paper writing and publishing.
Students find projects that excite them. The instructors do not hand out projects to students. Students are encouraged to pick projects that will make a difference to their own lives or the lives of people they know well. Identifying and understanding the end-user of the systems they develop, as opposed to hypothesizing end-user needs, is an important part of application development. Getting feedback from end-users and adapting applications to the feedback are valuable experiences.
Multidisciplinary projects that integrate material learned in different courses at Caltech are encouraged. Such projects help provide a universal perspective to learning and research. Faculty from different departments give talks early in the first term about problems at the interface of their disciplines and distributed computing. Members of nonprofit non-governmental organizations as well as from companies, also discuss research opportunities at the interfaces of their work and distributed computing. Instructors help students find co-mentors in other departments or companies.
The course is offered every alternate year. It will be offered next in 2009-10.
This course is taught with Richard Murray from the Control and Dynamical Systems group. It is intended primarily for students who plan to do research in distributed computing or control systems. Upper division undergraduate students also take the course. Faculty and students discuss papers and work on research projects. The instructors attempt to discuss material relevant to students' theses or other research projects.
An emphasis of the course for 2008-09 is verification and validation of distributed control systems such as mobile agent formations. The first few weeks discuss theories for proving properties of concurrent computing and control systems with the specific goal of understanding the differences in the methods used by the disciplines. Tools such as simulators, model checkers, and program verification systems are discussed and used by students. Students explore theories that integrate temporal logics, performance analysis, and control systems.
The course will be offered in the third term of 2008-09.