CPS 214
Computer Networks and Distributed Systems

About CPS 214

Who should take this course. Undergraduate and graduate students with an interest in systems and networking. The course covers core areas in network software and protocols, principles and evolution of the Internet architecture, the Internet protocol family, secure communication on public networks, Internet infrastructure services such as the Domain Name Service and routing, security challenges in the Internet environment, and networked systems and services (e-mail, Web services, file sharing, resource sharing). This course will also cover selected research topics in networking and networked systems.

Preparation. You should be familiar with undergraduate-level operating systems, consider yourself a strong student and a good programmer, and have enough familiarity with networked systems and networking concepts to come up to speed quickly. We won't assume any specific networking knowledge in this class, but we will cover the introductory (textbook) material rapidly and move significantly beyond it in the readings, class discussion, and exams.

Readings. This semester we will take background readings from the basic textbook, Computer Networking: A Top-Down Approach Featuring the Internet by Jim Kurose and Keith Ross. We will also read roughly 20 research papers and I will ask you to reflect on them and comment on them in class and (for a subset of papers) in writing. Exams will focus on core material and principles, rather than details of the research readings.

Base Workload. In addition to the readings, there will be 3-4 assigned labs (done in teams of two) and two exams. Because the class is small and diverse, I will assign final grades on a relative scale that takes into account initial knowledge, effort, demonstration of interest and aptitude, and progress. On the one hand, this will minimize any perceived risk of getting in over your head. On the other hand, you will have to count on me to get it right when I consider subjective factors in assigning final grades.

Project. A course project is an important part of this course. In the course project you will propose some interesting ideas, present an argument supporting those ideas, and build software and/or conduct experiments to obtain an interesting outcome. We have a rich environment here with many useful tools in place as a basis for projects (e.g., a sizable cluster with the ModelNet network emulation system and the MACEDON toolkit for large-scale distributed systems). Projects will be graded on the basis of a final report and demonstration. You will conduct your progress in teams of 1-3 individuals. You can choose the teams and the projects, but I have to approve them.

Policy on collaboration for CPS 214. Collaboration on lab work and project work is encouraged. Help each other. However, any work you turn in must be your own, and you may be called upon to explain (alone) your choices and approaches in more detail. You may incorporate public software into your assigned lab work and course project to a reasonable extent, but not so much as to undermine the educational purpose and spirit of the project. In any case, you must acknowledge any sources of your words, ideas, and software when they are not your own, and you should disclose (in advance, without any specific request) the names of anyone who helped you with your work. Failing to do so is at best a violation of professional etiquette, and at worst it is plagiarism. Plagiarism, like collaboration on exams, is cheating. Cheating is a very serious offense and I do not expect it to occur in this class.