CMSC417: Computer Networks

Fall 2008


1 General

 

Instructor: Ashok K. Agrawala

E-mail: agrawala@cs.umd.edu

 

Class meets: 9:30 a.m. – 10:45 p.m. Tuesdays and Thursdays, CSI 1122

Office Hours: To be Announced

Class web site: http://www.cs.umd.edu/class/fall2008/cmsc417

Newsgroup: csd.cmsc417

 

Teaching Assistant: Nikolaos Frangiadakis

E-mail: ntg@cs.umd.edu

Office Hours: To be announced

 

2 Course Summary

This course will cover the basic principles of networking with a focus on protocols, implementations, and issues specific to the Internet. We will study how routing, transport, and internetworking protocols work using the Internet family of protocols as examples. We will selectively implement new protocols and network services; as such, this course will have rather a substantial group programming component.

 

3 Expectations: Background

The pre-requisites for this course are CMSC 351, and CMSC 330: junior level courses in algorithms and programming languages. I expect you to (a) already understand the basics of computer architecture and operating system and (b) have experience in implementing nontrivial systems-type projects. You should already know what a processor is, how memory is organized, and be able to articulate the difference between a kernel versus a user process. You should also be familiar with basic probability and analysis of algorithms.

 

You must also be able to read news using a NNTP-capable reader, read UNIX manual pages, and be familiar with a postscript viewer. You must be able to work in a group. I cannot emphasize this point enough — I will allow you to (at least partially) form your own groups, and you may choose anyone in this section who you think you can work with. Use the newsgroup as a matching service if you like. However, you will not have the option of not working in a group, and I will not be sympathetic to any complaints at the end of the semester about how your group-mates did not do any work.

 

To do the programming assignments well, you should be able to design, implement and test non-trivial programs in C. A fixed non-empty set of assignments must be coded in C (or C++); you may select your language of choice for the term project. As most of us write code that has many bugs, you should be comfortable with at least one debugger. Experience with multi-threaded code may be helpful for implementing the project, but is not required. Please note that you are completely responsible for these

pre-requisites and they will not be covered in class or by the TA.

 

This is a senior-level course, I expect you to be motivated, eager to learn, willing to work hard and make up, on your own, any deficiencies you have.

 

Expectations: Postcondition

After attending the course, I expect you to be able to:

         Understand the fundamentals of networking protocols, including protocol layering, basic

medium access including wireless protocols, routing, addressing, congestion control

         Understand the principles behind the Internet protocols and some application layer

protocols such as http, ftp, and DNS, and a few peer-to-peer systems/protocols such

as Gnutella and Chord.

         Understand some of the limitations of the current Internet and its service model

         Understand the causes behind network congestion, and explain the basic methods for

alleviating congestion

         Design, implement, and test substantial parts of network protocols

4 Reading

The required textbook for this course is:

         Computer Networks: A Systems Approach by Larry Peterson and Bruce Davie, MorganKaufman, 4rd Edition, 2007. ISBN 978-0123705488

Unless you are already intimately familiar with network programming, please get the supplementary text. It is quite possibly the best(-written) small book in systems programming.

         TCP/IP Sockets in C: A Practical Guide for Programmers by Jeff Donahoo and KenCalvert, Morgan Kaufmann, 2000. ISBN 978-1558608269

          

I also recommend the following books for reference:

         Computer Networking: A Top Down Approach Featuring the Internet by Jim Kurose and Keith Ross, Addison-Wesley, 2000. The preliminary edition of this textbook is now available (ISBN: 0-201-61274-7). The on-line version of this book is at at http://www.awlonline.com/kurose-ross.

         An Engineering Approach to Computer Networking, by S. Keshav. Addison-Wesley,1997. ISBN 0-201-63442-2

         High-speed Networks: TCP/IP and ATM design principles by William Stallings,Prentice-Hall, 1998. ISBN 0-13-525965-7

         TCP/IP Illustrated volume 1 by W. Richard Stevens. Addison-Wesley. ISBN: 0-201- 63346-9.

 

You may also be asked to look at classic RFCs and current Internet-Drafts. These are available from http://www.rfc-editor.org and http://www.ietf.org respectively.

5 Grading

The grading allocation is given below and is subject to change.

 

Final 30%

In-term exams 30%

Programming Assignments 35%

Class Participation 5%

 

Attendance is not mandatory. You will, however, be responsible for all material covered and assigned in class. The class participation points are to motivate you to speak up in class and to post to the newsgroup.

 

Re-grade policy. All requests to change grading of homework, programming projects, or exams must be submitted in writing (typed) within one week of when the assignment was made available for pickup. Requests must be specific and explain why you feel your answer deserves additional credit. A request to re-grade an assignment can result in the entire assignment being re-evaluated and as a result the score of any part of the assignment may be increased or lowered as appropriate

6 Policy and Academic Honesty

• Turn assignments in on time. Unless previously negotiated, you will receive no credit for work that is not turned in on the day and time it is due. The only exception is for excused absences as defined by the university (Section V-1.00(G) of the Consolidated USMH & UMCP Policies and Procedures Manual).

• Do not miss exams. Unless previously negotiated, you will receive zero credit for missed exams. Once again, the only exception is for excused absences as defined by the university.

• The punt box rule: on any problem you turn in (homework or exam), if you clearly mark a rectangular box with an “X”, we will not grade the problem and you will receive 10th the points for that problem. All punt points are added, and rounded up. This is to stop you from guessing and making our life more difficult while grading.

• Please read and understand the UMCP code on academic integrity (Section III- 1.00(A) of the Consolidated USMH & UMCP Policies and Procedures Manual:

http://www.inform.umd.edu/PRES/policies/iii100a.html).

Do not violate it. It is not worth your time (or mine) to be here if you do.

 

In general, I do not mind your working together on projects. In fact, I encourage it. (Do not work together on in-class exams. If you have trouble with homework questions, post to the newsgroup and ask for hints.) Unless otherwise instructed, homeworks/programs you turn in must be your own, i.e. written completely by you.

 

An example for clarification: Suppose Alice and Bob are working on a programming project/homework. It is fine for Alice and Bob to discuss their proposed solutions, work on a whiteboard together, and even ask questions on the newsgroup. Once they figure something out, they can also answer specific questions on the newsgroup. However, they should not post complete solutions (or code snippets), unless specified by the instructor or the TAs.

After discussing their solutions, Alice and Bob go off and write up their work/code up their project. This level of cooperation is allowed and encouraged. However, if Alice or Bob had simply copied code or text from each other, their effort would be deemed dishonest. They should not use “old versions” of the other’s code, or steal throwaway code from a temporary directory or a dustbin, or “look at the other’s screens” while typing in their solution. When you are writing/coding something you will turn in, you should be working by yourself. Even mundane pieces of code that you turn in, and was not provided to you by us, should be written entirely by you. When all is said and done, you are the final authority on whether you did something wrong or not, and I’m certain you will know as well as any professor when you do something wrong. Please try not to put yourself in those situations where you have to ask yourself whether something you’re about to do is correct or not. If there is any debate about the authenticity of your work, I will have no recourse but to recommend a hearing before the honor board. I sincerely hope this is the last I have to say on this subject for this semester.