DOC PREVIEW
NU EECS 340 - EECS 340 Syllabus

This preview shows page 1-2 out of 7 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CS 340 Introduction to Networking Dinda, Winter 2003 Page 1 of 7 Introduction to Networking Syllabus Web Page http://www.cs.northwestern.edu/~pdinda/netclass-w03 Instructor Peter A. Dinda 1890 Maple Avenue, Room 338 847-467-7859 [email protected] Office hours: Thursdays, 2-4pm or by appointment Teaching assistant Jason Skicewicz 1890 Maple Avenue, Room 332 847-491-7150 [email protected] Office hours: Mondays 3-6pm or by appointment Location and Time 1890 Maple Avenue, CS Department classroom, MWF 2-2:50pm Prerequisites Required CS 311 or equivalent data structures course Required Knowledge of C and C++ Highly recommended 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) Recommended Unix systems programming experience Textbook and other readings James Kurose and Keith Ross, Computer Networking: A Top-Down Approach Featuring the Internet, Second Edition, Addison Wesley, 2002 (Textbook) • Buy the hardcover second edition, not the softcover “preliminary edition” or the first edition. The book includes access to the on-line version at http://www.awl.com/kurose-ross. Richard Stevens, TCP/IP Illustrated, Volume I: The Protocols, Addison Wesley, 1994, (ISBN: 0-201-63346-9) (Required) • Very detailed look at the protocols, including tcpdump from the wire. Essential to doing the projects well.CS 340 Introduction to Networking Dinda, Winter 2003 Page 2 of 7 Internet Requests For Comments (RFCs) (Useful) • Official specifications for the Internet which are available from http://www.ietf.org/rfc.html Richard Stevens, Unix Network Programming (volumes 1 and 2), Prentice Hall, 1997, 1998 (ISBN 0-134-90012-X and 0-130-81081-9) (Useful) • Describes the nitty-gritty details of socket programming and IPC on Unix Richard Stevens, Advanced Programming in the Unix Environment, Addison-Wesley, 1992 (ISBN 0-201-56317-7) (Useful) • Describes how to think like a Unix systems programmer Bjarne Stroustrup, The C++ Programming Language, Special Edition, 2000, Addison-Wesley, (ISBN 0201700735) (Useful) • Definitive reference to C++ Objectives, framework, philosophy, and caveats This course introduces the underlying concepts behind networking using the Internet and its protocols as examples. There are three goals: (1) to give you an understanding of how networks, especially the Internet, work, (2) to give you experience in “programming in the large”, and (3) to teach you network programming. We will cover the first five chapters of Kurose in detail, working our way down the network stack from the application layer to the data-link layer. Concurrent with the lectures, you (in groups of two) will be building a functional TCP/IP stack and a small web server that will run on it. What you build will be “real” – your code will interoperate with other TCP/IP stacks and you’ll be able to talk to your web server using any browser on any TCP/IP stack. This is a learn-by-doing kind of class. You will get your hands dirty by examining parts of our Internet infrastructure and building other parts. It will be a lot of work, but it will also be a lot of fun, provided you enjoy this sort of thing. We will assume that you do and that you will make a good faith effort. We don’t want to have to spend too much time measuring your performance. If you care about what we’re teaching, you’ll do a better job of that yourself, and if you don’t care, then you should take some course that you do care about. After finishing the course, you will be able to do the following. • Understand the Internet protocols • Build implementations of the Internet protocols • Generalize this knowledge to other networking protocols. • Be a competent network and systems programmer. • Think like a networking practitioner • Read and judge articles on networking in trade magazines • Begin to read and judge research and technical articles on networkingCS 340 Introduction to Networking Dinda, Winter 2003 Page 3 of 7 • Create simplicity and reliability out of complexity and unreliability • Structure and design software systems to achieve that simplicity and reliability Project 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. 20 % Web server (a) Sockets 50 % TCP (b) UDP 30 % IP (c) ARP Ethernet The implementation language will be C++ and the platform will be Red Hat Linux 7.3. We hope that you will use g++ 2.96 or later 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 Berkeley packet filter interface and that you can run your Ethernet card in promiscuous mode to extract and inject raw packets. 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 of such testcases. In this iteration of the class, part (c) of the project will probably involve a separate routing simulation instead of an actual small implementation of IP. I have not decided yet which of these we’ll be doing. Homework There will be four homework problems sets


View Full Document

NU EECS 340 - EECS 340 Syllabus

Download EECS 340 Syllabus
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view EECS 340 Syllabus and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view EECS 340 Syllabus 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?