Yan Chen, Assistant Professor
Room 330, 1890 Maple Ave.,
Office Hours: Thursday. 2-4pm or by appointment, Rm 330, 1890 Maple Ave.
Office Hours: Tu. and Th.11am - noon(12pm), Rm 246, 1890 Maple Ave.
Location and Time
Lectures: Tuesday and Thursday 9:30-10:50am,
Room 381, 1890 Maple.
Recitation: Wednesday, 4-5pm, Room 381, 1890
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.
- Required: CS 311 or
equivalent data structure course.
- Required: Knowledge of C
- Highly recommended: CS 213 or
equivalent computer systems course.
- Highly recommended: CS 343 or
equivalent operating systems course.
- Highly recommended: UNIX
programming experience (gcc, gdb, make, etc.)
- Required textbooks:
- Computer Networking: A
Top-Down Approach Featuring the Internet, [KR], Second Edition, James
Kurose and Keith Ross, Addison Wesley, 2002 (Note: buy the hardcover
second edition, not the softcover “preliminary edition” or
the first edition).
- TCP/IP Illustrated,
Volume I: The Protocols, Richard Stevens, Addison Wesley, 1994.
Essential for lectures on TCP/IP and projects.
- A set of papers will be made
- Recommended books
Networks - A Systems Approach, Third Edition, Larry L. Peterson and
Bruce S. Davie, Morgan Kaufmann, 2003. Good supplementary material to the
- Unix Network
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
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.
other pointers on C/Unix collected by Prof. Fabián E. Bustamante.
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.
- Homeworks 10%
- Projects 50%
- Midterm 20%
- Final 20%
- Course web site:
http://www.cs.northwestern.edu/~ychen/classes/cs340/. 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
homeworks 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.announce
and cs.340.discuss) are available for announcement, and posting questions
- Late policy:
Unless otherwise indicated, homeworks 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.
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.