Tuesday/Thursday 10:30-11:55 AM, Jorgensen 74
Professor K. Mani Chandy, 260 Jorgensen, x6559.
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.
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:
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.
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 .