CS 141abc. Distributed Computation Laboratory

Fall/Winter/Spring 2007-2008 (Course Website)

Tuesday/Thursday 10:30-11:55 AM, Jorgensen 74

Instructor

Professor K. Mani Chandy, 260 Jorgensen, x6559.


OVERVIEW

CS 141 is a lab course. Students work on projects for 3 terms. Some students continue working on projects during the summer as SURF projects or as research. Projects are usually carried out by groups of 2 to 4 students and a TA. Though instructors suggest topics, each team picks a project that excites the people in the team. Projects can be selected within the very broad area of distributed computing.

The first term will discuss the theory of distributed computing systems. Topics covered include systematic reasoning about sequential and concurrent systems using axiomatic semantics, introduction to temporal logic, applications of game theory to distributed systems, introduction to distributed control problems, and a brief introduction to tools such as model checkers and theorem provers. The course also provides a very brief introduction to SQL for students who haven't taken the database course and who need familiarity with the technology, to do their projects. The course also introduces multithreaded programming in Java.


PROJECTS

The variety of tools and technologies that students use in projects does not allow for all of them to be discussed in class. Students are expected to learn tools and technologies on their own. A few classes will discuss technologies such as Web Services briefly.

Students are encouraged to select projects that integrate material from other courses including machine learning, optimization, game theory, control theory and economics.

Students write papers describing their projects in the third term. Several projects in past years have generated papers in conferences or journals.

Students form teams and choose projects in the first 3 weeks of the first term. Some change in project direction and team membership is possible during the 3 terms.

Some classes will include discussions with entrepreneurs, engineers working in industry, and people working in non-profit organizations who have ideas about how distributed systems technologies can help the community.

Most programming examples in class use Java and SQL; however, students may use any programming language and system they wish for their projects.

Suggested project areas include, but are not limited to, the following:

  1. Application Integration: The goal of these projects is to develop applications that are truly useful to some community of people, such as the Caltech student body, by integrating Web applications such as those on Facebook, Amazon, Google, YouTube, Slashdot, and news sites. Example applications include collaborative systems for Caltech students to find, share, recommend and discuss videos, movies, music, books, news, courses, graduate schools, and extra-curricular activities.
  2. Mobile Agents: The goal of these projects is to understand how to coordinate teams of people or robots to carry out collaborative activities such as: (a) searching an area for pollutants such as radiation sources or toxic chemicals, (b) interdicting intruders into a region, and (c) sweeping through an area in formation. Initial implementations are usually done using simulations with possible later implementations on robots.
  3. Verification and Validation: The goal of this project is to study theory and use tools to verify the correctness of distributed systems. Tools used include model checkers, theorem provers and test generators.
  4. Theory: PhD students doing theses on distributed computing may choose projects that extend the theory of systems. For example, projects apply and extend results in axiomatic semantics, game theory, optimization and control theory to distributed systems. Students taking the course to satisfy lab requirements cannot choose purely theory projects.


GRADING AND TESTS

The first term has two take-home quizzes. The quizzes may be timed and may be closed book. In addition, a few simple multiple choice questions may be posed frequently on the course management system to provide feedback to the instructors about whether the material makes sense. The primary goal of all three terms is to ensure that students work on interesting projects and come to a point of completion on them; towards that end, students must turn in reports on designs and feasibility of their projects in the first term.


COLLABORATION POLICIES

Students must, of course, collaborate intensively with team members on their projects. Students may also collaborate with people outside their teams. Students must explicitly state when they use material, particularly code, from others --- even if the material is open source. These statements must appear in the project report and the code.

Quizzes and online multiple-choice questions must be answered without help from others.

Many projects are built on top of Web applications developed and hosted by organizations other than Caltech. Students must ensure that their systems satisfy all the requirements of the applications that they use.


This year, CS 141 is using Moodle as the course management system .

Previous Years

Valid CSS! Valid XHTML 1.1! Last modified by Mani Chandy on 13 September 2007