CS3700 // Networks and Distributed Systems
Spring 2015
Course details
Prof. Alan Mislove
Office: 250 West Village H
Teaching assistants
Office: TBA
108 West Village H
Mondays, Wednesdays, Thursdays
Office hours
4:30pm–5:30pm Mondays (instructor, 250 WVH)
TBA (lab, 102 WVH)
Discussion Forum
On Piazza
Computer Networks: A Systems Approach
4th Edition
Peterson and Davie
ISBN-13 978-0123705488
Distributed Systems:
Distributed Systems: Concepts and Design
5th Edition
Coulouris, Dollimore, Kindberg, and Blair
ISBN-13 978-0132143011
55%Projects (1 @ 1%, 2 @ 12%, 2 @ 15%)
25%Exams (2 @ 12.5%)
15%Homeworks (10 @ 1.5%)
Course description
Introduces the fundamentals of computer networks, including network architectures, network topologies, network protocols, layering concepts (for example, ISO/OSI, TCP/IP reference models), communication paradigms (point-to-point vs. multicast/broadcast, connectionless vs. connection oriented), and networking APIs (sockets). Also covers the construction of distributed programs, with an emphasis on high-level protocols and distributed state sharing. Topics include design patterns, transactions, performance trade-offs, security implications, and reliability. Uses examples from real networks (TCP/IP, Ethernet, 802.11) and distributed systems (Web, BitTorrent, DNS) to reinforce concepts.
The official prerequisite for this course is CS 2650. This course will be project-centric, and all students will complete in projects in groups of two (or possibly three, if necessary). Thus, to succeed in this course, you must be able to work in a group. I will allow you to form your own groups, and the Piazza forum has a dedicated thread that can serve matching service if necessary. As you are free to choose your partner(s), I will not be sympathetic to complaints at the end of the semester about how your group-mates did not do any work.

It is also highly recommended that you become familiar with using a debugger, as this will greatly aid you in completing the projects. At a high level, you should be motivated, eager to learn, willing to work hard, and make up, on your own, any prerequisite deficiencies you may have.
attendance and participation
This is a junior-level course; I will not mandate you to come to class (you are still responsible for all the material covered in class). The class projects are a major part of this course, and please be aware that you will be working in groups of two. Lastly, note that 5% of your grade is based upon class participation. This is to encourage you to voice your ideas in class and to post them to the forum. Minimally, I must know your name by the end of the term in order for you to get any points for class participation.

We will be using Piazza as a course discussion/bulletin board. You are expected to check it at least once every few days, use it as the first place to ask questions, and answer others' questions. The course staff will regularly monitor the board, and your participation will count towards your grade.
completing and submitting projects
For the projects, we will be using resources and scripts that are available on the CCIS Linux machines. You need to have access to the CCIS Linux machines; if you do not have an account, be sure to sign up for a CCIS account as soon as possible.

You are welcome to use your personal machine if you wish. If you wish to remotely access CCIS resources, you should have an ssh client installed on your machine (they are available for all major operating systems). If you wish to compile and run code on your own machine, we recommend using a Linux distro or Mac OS X (it may be possible to get the code to compile on Windows, but you're on your own). Note that many of the testing scripts assume that they are being run on the CCIS network. Regardless, all of your submitted code must compile and run on the CCIS Linux machines.
© 2015 Alan Mislove