CMSC 23300/33300 Networks and Distributed Systems
Winter 2015
Lecturer: Borja Sotomayor
E-mail: borja AT cs DOT uchicago DOT edu
Office: Ryerson 165-A
Office hours: After class and by appointment.
TAs:
- Nathan Bartley (bartleyn AT uchicago DOT edu)
- Tiratat "Knot" Patana-anake (tiratatp AT uchicago DOT edu)
Lectures: TuTh 12:00-1:20 in Ryerson 251
Discussion: Tu 3:00-4:20 in Harper 140
Quick links
- Course Syllabus
- CMSC 23300/33300 repository on GitHub
- CMSC 23300/33300 wiki on GitHub (all project specifications and code samples are here; not updated for Winter 2015 yet)
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...
- ...implement multithreaded client/server applications using sockets.
- ...interpret existing specifications of network protocols, and translate them into code.
- ...design and combine network protocols that form the foundation of the Internet.
- ...develop software collaboratively through the use of version control tools, code reviews, and project management.
In a nutshell, students will learn how the Internet works. By the end of this course, students should understand everything that happens "under the hood" when (for example) a web page is requested, from the moment you click on a link in your browser to the moment you get the requested page back.
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.
Books
This course has no required textbooks. The suggested text for this course are
- Computer Networks: A Systems Approach, 5th edition, L. Peterson and B. Davie, Morgan Kaufmann 2011.
- TCP/IP Illustrated, Volume 1: The Protocols, 2nd Edition, Kevin Fall and W. Richard Stevens, Addison-Wesley 2011.
Both are available for purchase from the Seminary Co-op Bookstore.