Instructor
Yan Chen, Assistant Professor
Room L459, Tech Institute, 491-4946. ychen@northwestern.edu
Office Hours: 2-4pm Thursday or by appointment, Room L459, Tech Institute
Teaching Assistant
Yan Gao
ygao@cs.northwestern.edu
Office Hours: 3:30-5:30 Monday, Rm 2-207, Ford Design Center.
Location and Time
·
Lectures: Tuesday and Thursday 9:30-10:50am,
MG28, Tech Institute.
·
Recitation: Friday 5-6pm, Tech L150.
Course Description
This course provides an introduction to fundamental concepts in the design
and implementation of computer communication networks, their protocols, and
applications. Topics to be covered
include: overview of network architectures, applications (HTTP, FTP),
network programming interfaces (e.g., sockets), transport (TCP, UDP), flow
control, congestion control, IP, routing , IPv6, multicast, data link
protocols, error-detection/correction, multiple access, LAN, Ethernet, wireless
networks, and network security. Examples will be drawn primarily from the
Internet (e.g., TCP, UDP, and IP) protocol suite. Over the course of the quarter, students
program in C++ on UNIX systems to build web clients and servers, and a fully
compatible TCP/IP stack that can run them.
Course Prerequisites
- Required: CS 311 or
equivalent data structure course.
- Required: CS 213 or (ECE
205+ECE231) or equivalent computer systems course.
- Highly recommended: CS 343 or
equivalent operating systems course.
- Highly recommended: UNIX
programming experience (gcc, gdb, make, etc.)
Course Materials
- Required textbooks:
- A set of papers will be made
available.
- Recommended books
- Computer
Networks - A Systems Approach, Third Edition, Larry L. Peterson and
Bruce S. Davie, Morgan Kaufmann, 2003. Good supplementary material to the
required textbooks.
- Unix Network
Programming (Volume
1, Third Edition, 2003, and Volume 2, Second Edition, 1999)
Richard Stevens, Prentice Hall. Describes the details of socket
programming and IPC on Unix.
- Advanced Programming in the
Unix Environment, Richard. Stevens, Addison-Wesley, 1992. A basic
book for anyone writing programs that run under Unix.
- The C++ Programming
Language, Special Edition, Bjarne Stroustrup, Addison-Wesley, 2000.
- Other references
- UNIX
for the Impatient, 2nd Edition, P. W. Abrahams and B. Larsonk,
Addison-Wesley, 1996. A nice introductory book to Unix.
- Learning the Unix Operating
System (Nutshell Handbook), 5th Edition, J. D. Peek, G.
Todino-Gonguet, J. Strang, O'Reilly, 2001. Good for UNIX beginner.
- Programming with GNU
Software, M. Loukides and A. Oram, O'Reilly, 1995. Introdution on the
tools on UNIX.
- On coding style: Code Complete,
by S. McConnell, Microsoft Press, 1995.
- Some
other pointers on C/Unix collected by Prof. Fabián E. Bustamante.
Grading
There
will be a midterm and a final exam. Exams will be in-class, closed-book, and
will cover materials from lectures, required readings and projects. The
final exam will not be cumulative.
- Class attendance and
discussion 10%
- Homework 10%
- Projects 40%
- Midterm 20%
- Final 20%
Communication
- Course web site:
http://www.cs.northwestern.edu/~ychen/classes/cs340-w06/. Check it out
regularly for schedule changes, clarifications and corrections to
assignments, and other course-related announcements.
- Recitation, TA will lecture
on complementary materials of the lectures, address questions for homework
and projects, and help to prepare the exams. We hope it can help students more
efficiently than the one-on-one Q&A in office hours.
- Newsgroup (cs.340) is
available for announcement, and posting questions and answers.
Policies
- Late policy:
Unless otherwise indicated, homework and projects are due by the end of
lecture on their due date. If you hand in an assignment late, we will take
off 10% for each day (or portion thereof) it is late.
- Cheating:
It's OK to ask someone about the concepts, algorithms, or approaches
needed to do the project assignments, I encourage you to do so; both giving
and taking advice will help you to learn. However, what you turn in must
be your own, or for projects, your group's own work; copying other
people's code, solution sets, or from any other sources is strictly
prohibited. We will punish transgressors severely.