EECS 340 Introduction to Computer Networking
Instructor
Yan Chen,
Associate Professor
Room L459, Tech Institute,
491-4946. ychen@northwestern.edu
Office Hours: 2-4pm Wednesday or by appointment, Room
L459, Tech
Institute.
Teaching Assistant
Hongyu Gao
HongyuGao2013@u.northwestern.edu
Office Hours: 3-5pm Monday or by appointment, Room 2-205,
Ford
Design Center.
Location and Time
- Lectures:
Monday and Wednesday 12:30-1:50pm,
Pancoe Building Abbott Auditorium.
-
Recitation: Friday 12:30-1:50pm, Pancoe Building Abbott
Auditorium (upon scheduled).
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, 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:
- Recommended
books
-
Computer
Networks - A Systems Approach, Fifth Edition,
Larry L. Peterson and Bruce S. Davie, Morgan Kaufmann,
2011. Good supplementary material to the [KR] book.
- 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.
- Some
other pointers on C/Unix collected by Prof. Fabian
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-w12/.
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.
Northwestern VPN is needed when accessing outside the
campus network.
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.