EECS 340: Syllabus
Instructor
Aleksandar
Kuzmanovic, Assistant Professor
Technological Institute, Room – L457,
Office Hours: Thursdays. 10am-12 or by appointment.
Lectures: Tuesday and Thursday 1:00-2:30pm, 2240 Campus Drive, Room
2107, Frances
Searle Building.
Recitation: Wednesday, 5:30-7pm, Room: Tech M-120.
John Otto
j-otto-1@northwestern.edu
Office Hours: Mon-Wed, 5:30-7:00, Room 2-211, Ford Engineering Design Center,
2133 Sheridan Road.
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 structures
course
Required Knowledge of C and C++
Required CS 213 or equivalent computer
systems course
Highly recommended CS 343 or equivalent operating
systems course
Highly recommended Unix
development experience (gcc, gdb,
make, etc)
·
Required
textbooks:
§
Computer Networking: A Top-Down
Approach Featuring the Internet, [KR], Third Edition, James Kurose and Keith Ross, Addison Wesley, 2005.
§
TCP/IP Illustrated,
Volume I: The Protocols, Richard Stevens, Addison Wesley, 1994. Essential
for lectures on TCP/IP and projects.
·
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
§
Some other
pointers on C/Unix collected by Prof. Fabián
E. Bustamante.
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.
·
Homeworks 10%
·
Projects
50%
·
Midterm
20%
·
Final
20%
·
Course
web site: http://www.cs.northwestern.edu/~akuzma/classes/cs340-w07/.
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.
·
Newsgroups
(cs.340.announce and cs.340.discuss) are available for announcement, and
posting questions and answers.
There will be two kinds of homework assignments: reading
assignments and textbook-style questions. You should have finished the assigned
reading before coming to lecture. In addition, there will be about four sets of
written homeworks.
Over
the course of the quarter, you will implement a user-level TCP/IP stack and a
small web server that runs on top of it. Your code will not implement the full
functionality of HTTP or TCP/IP, but it will implement enough of it to be able
to interoperate with other, complete implementations. In keeping with the
top-down approach of Kurose and Ross, you will build this from the web server
down instead of from the network card up. I will initially provide you with the
whole stack (as object code) and you will implement the web server. Next, I
will peal away the layers of the stack, leaving you to implement your own
versions. Each layer will have well-defined interfaces that you will fill out.
Here are the layers, as well as each one’s percentage of the project
grade. Note that the layers in italics will be supplied to you and are included
only for completeness.
·
Web server (Sockets) 20%
·
TCP (UDP) 50 %
·
Routing 30
%
The
implementation language will be C++ and the platform will be Red Hat Linux 9.0.
We hope that you will use g++2.9.6 as your compiler, make as your build tool, and
CVS as your version control system. You may also find that the C++ standard
template library will make your life easier. You’ll be using the PCs in
the TLAB, which will be specially configured for this class. You are welcome to
use other machines, but we must be able to compile and run your code on our
machines. Note that the Ethernet layer of the code requires that your kernel
supports the
To
evaluate your project, we will spot-check your source code, compile it, and run
randomized testcases on it. When appropriate, we will
supply you with examples. All the projects are to be done by teams of two
students. Each team should work cooperatively on the design, implementation,
and testing of their solutions. And the work should be shared in a fair manner.
The submissions need to include a simple specification of work undertaken by
each party.
·
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.
·
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.
Note:
Date |
Lectures Topics |
|
Assignment |
Th 1/4 |
Class overview, Computer
Networks and the Internet (Internet architecture, protocols, circuit- and
packet-switching) |
|
Project 1 out. Find
partner (groups of up to 2). |
Tu 1/9 |
Computer Networks and the Internet
(access networks, physical media, delay and loss, layered architecture) |
|
Homework 1 out. |
Th 1/11 |
Application Layer (Web,
HTTP, FTP) |
|
|
Tu 1/16 |
Application Layer (Email,
DNS, p2p file sharing) |
|
|
Th 1/18 |
Socket Programming |
|
|
Tu 1/23 |
Transport Layer (intro,
Multiplexing/demultiplexing, UDP) |
|
Homework 1 in. Homework 2
out. |
Th 1/25 |
Principles of reliable
data transfer |
|
Project 1 in. Project 2
out. |
Tu 1/30 |
Connection-oriented
transport: TCP |
|
Homework 2 in. |
Th 2/1 |
Review for Midterm |
|
|
Tu 2/6 |
Midterm |
||
Th 2/8 |
Midterm Grading Review |
||
Tu 2/13 |
Network Layer (intro, routing
principles, routing algorithms) |
|
Homework 3 out. |
Th 2/15 |
Network Layer (IP) |
|
|
Tu 2/20 |
Network Layer
(hierarchical routing, RIP, OSPF, BGP) |
|
Project 2 in. Project 3
out. |
Th 2/22 |
Data Link Layer (intro,
error detection/correction, multiple access protocols) |
|
Homework 3 in. Homework 4
out. |
Tu 2/27 |
Data Link Layer
(link-layer addressing, Ethernet, hubs and switches) |
|
|
Th 3/1 |
Wireless and Mobile
Networks (intro, wireless links, 802.11 wireless LANs) |
|
|
Tu 3/6 |
Networking Security |
|
Project 3 in. |
Th 3/8 |
Review for final/Research
in networking |
|
Homework 4 in. |
Notes:
1. RS = Richard Stevens
January,
2007, Aleksandar Kuzmanovic