CMSC 23300/33300 Networks and Distributed Systems
Spring 2011
Lecturer: Borja Sotomayor
E-mail: borja AT cs DOT uchicago DOT edu
Office: Searle 209-A
Office hours: Open door policy (see Course Syllabus)
TA: Soner Balkır
E-mail: soner AT uchicago DOT edu
Office: Jones 209
Office hours: Thursdays at 6pm in the Maclab
Lectures: TuTh 1:30-2:50 in Ryerson 251
Quick links
- Course Syllabus
- CMSC 23300/33300 project on PhoenixForge
- CMSC 23300/33300 mailing list
- Extension request form
Course Description
This course focuses on the principles and techniques used in the development of networked and distributed software. Topics include programming with sockets; concurrent programming; data link layer (Ethernet, packet switching, etc.); internet and routing protocols (IP, IPv6, ARP, etc.); end-to-end protocols (UDP, TCP); and other commonly used network protocols and techniques. This is a project-oriented course in which students are required to develop software in C on a UNIX environment.
By the end of this course, students should be able to...
- Use sockets to develop client/server applications.
- Design and develop network protocols.
- Develop software collaboratively through the use of version control tools, code reviews, and project management.
- Be amused by RFC 1149.
CMSC 15400 and a working knowledge of the C programming language are strict prerequisites of this course. Students who have not taken CMSC 15400 must speak with the instructor to ascertain that they meet the prerequisites for this course.
For a more detailed description of this course, please read the Course Syllabus.
Books
The required text for this course is Computer Networks: A Systems Approach, 4th edition, L. Peterson and B. Davie, Morgan Kaufmann 2007. Available for purchase from the Seminary Co-op Bookstore.
Additional readings of relevant papers will be assigned in class.