Instructor
Yan Chen, Assistant Professor
Room L459, Tech Institute, 491-4946. ychen@northwestern.edu
Office Hours: 2:30-3:30pm Monday and Wednesday or by appointment, Room L459, Tech
Institute.
Teaching Assistant
Zhaosheng Zhu
zzh321@cs.northwestern.edu
Office Hours: 10-12 noon, Friday, Room 2-205, Ford Design
Center.
Location and Time
·
Lectures: Monday and Wednesday 3:30-4:50pm,
MG28, Tech Institute.
·
Recitation: TBD.
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: EECS 311 or
equivalent data structure course.
- Required: EECS 213 or (EECS
205 + EECS 231) or equivalent computer systems course.
- Highly recommended: EECS 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, Forth
Edition, Larry L. Peterson and Bruce S. Davie, Morgan Kaufmann, 2007.
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. Introduction 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, discussion
and quiz 15%
- Homework 10%
- Projects 35%
- Midterm 20%
- Final 20%
Communication
- Course web site:
http://www.cs.northwestern.edu/~ychen/classes/cs340-w08/. 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.