Networked Information Systems

CS138 studies networked information systems. First, we examine some fundamentals of how distributed systems work -- things like communication, naming, synchronization, replication, and security. Then, we look at middleware technologies, which allow abstraction of these mechanisms. Finally, we see how these are put together to come up with real-world systems: distributed databases and filesystems, web-based information systems, and mobile information management.

Course objectives are twofold: to understand the mechanisms of networked information systems; and to gain experience constructing working distributed applications.

What is required of students? Well, there are two half-period quizzes during the year, but the major piece is a semester-long project where we put these mechanisms to good use. The project is a five-part assignment -- students begin with a simple communications protocol in Java. Then they use this protocol to build a distributed database that replicates information and maintains consistency across nodes, including fault-tolerance. Finally, they provide an interface between their database and an online game, Cube, and can test their system by playing the game.

Prerequisite: CS32. Students must have experience in designing large modular programs in order to do the semester-long project.

Meeting: J hour (Tuesdays & Thursdays, 1pm-2:30) in CIT 368.

General course handouts: Course missive, coding conventions, collaboration policy.