![]()
Computer Networking
Fall 2011
![]()
Instructor: Ashok K. Agrawala
E-mail: agrawala@cs.umd.edu
Class meets: 8:00 a.m. – 9:15 p.m. Tuesdays and Thursdays, CSI 3117
Office Hours: To be Announced
Class web site: http://www.cs.umd.edu/class/fall2011/cmsc417
Newsgroup: csd.cmsc417
Teaching Assistant:
E-mail:
Office Hours:
This course will cover the basicprinciples of networking with a focus on protocols, implementations, and issuesspecific to the Internet. We will study how routing, transport, andinternetworking protocols work using the Internet family of protocols asexamples. We will selectively implement new protocols and network services; assuch, this course will have rather a substantial group programming component.
The pre-requisites for thiscourse are CMSC 351, and CMSC 330: junior level courses in algorithms andprogramming languages. I expect you to (a) already understand the basics ofcomputer architecture and operating system and (b) have experience inimplementing nontrivial systems-type projects. You should already know what aprocessor is, how memory is organized, and be able to articulate the differencebetween akernelversus a user process. You shouldalso be familiar with basic probability and analysis of algorithms.
You must also be able to readnews using a NNTP-capable reader, read UNIX manual pages, and be familiar witha postscript viewer. You must be able to work in a group. I cannot emphasizethis point enough — I will allow you to (at least partially) form your owngroups, and you may choose anyone in this section who you think you can workwith. Use the newsgroup as a matching service if you like. However, you willnot have the option of not working in a group, and I will not be sympathetic toany complaints at the end of the semester about how your group-mates did not doany work.
To do the programming assignmentswell, you should be able to design, implement and test non-trivial programs inC. A fixed non-empty set of assignments must be coded in C (or C++); you mayselect your language of choice for the term project. As most of uswrite codethat hasmany bugs, you should be comfortablewith at least one debugger. Experience with multi-threaded code may be helpfulfor implementing the project, but is not required. Please note that you arecompletely responsible for these
pre-requisitesand they will not becovered 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 deficienciesyou have.
After attending the course, I expect you to be able to:
• Understand the fundamentals of networkingprotocols, including protocol layering, basic
mediumaccess including wireless protocols, routing,addressing, congestion control
• Understand the principles behind the Internetprotocols and some application layer
protocolssuch as http, ftp, and DNS, and a few peer-to-peersystems/protocols such
asGnutella and Chord.
• Understand some of the limitations of thecurrent Internet and its service model
• Understand the causes behind network congestion,and explain the basic methods for
alleviatingcongestion
• Design, implement, and test substantial parts ofnetwork protocols
The required textbook for this course is:
• Computer Networks5th Edition,TanenbaumandWetherall, PrenticeHall 2011. ISBN 0-13-212695-8
•
Unless you are already intimately familiar with networkprogramming, please get the supplementary text. It is quite possibly thebest(-written) small book in systems programming.
•
TCP/IP Sockets in C: A Practical Guide
forProgrammers2nd Editionby
JeffDonahooandKenCalvert, Morgan Kaufmann, 2009. ISBN
978-0123745408
•
I also recommend the following books for reference:
•
Computer Networking, 5e: A Top Down
ApproachFeaturing the Internet by Jim Kurose and Keith Ross, Addison-Wesley,
(ISBN:0-13-607967). The on-line version of this book is at
http://www.awlonline.com/kurose-ross.
• Computer Networks: A Systems ApproachbyLarry Peterson and Bruce Davie,MorganKaufman, 4rdEdition, 2007. ISBN 978-0123705488
•
An Engineering Approach to ComputerNetworking, by S.Keshav.
Addison-Wesley,1997. ISBN 0-201-63442-2
•
Computer Networking with InternetProtocols
byWilliamStallings, Prentice-Hall, 2004. ISBN 10:0131410989
•
TCP/IP Illustrated volume 1 by W.
RichardStevens. Addison-Wesley. ISBN: 0-201- 63346-9.
You may also be asked to look at classic RFCs and currentInternet-Drafts. These are available from http://www.rfc-editor.org andhttp://www.ietf.org respectively.
The grading allocation is given below and is subject tochange.
Final 30%
In-term exams 30%
Programming Assignments 35%
Class Participation 5% including some pop quizzes
You are 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.Allrequests to change grading of homework, programming projects, or exams must be submittedin writing (typed) within one week of when the assignment was made availablefor pickup. Requests must be specific and explain why you feel your answerdeserves additional credit. A request to re-grade an assignment can result inthe entire assignment being re-evaluated and as a result the score ofanypartof the assignment may be increased or lowered as appropriate.
Recently the University approved a policy for class absence for students. All students are expected to attend ALL classes.
Any student who needs to be excused for an absence from a single lecture, recitation, or lab due to a medically necessitated absence shall:
a) Make a reasonable attempt to inform the instructor of his/her illness prior to the class.
b) Upon returning to the class, present their instructor with a self-signed note attesting to the date of their illness. Each note must contain an acknowledgment by the student that the information provided is true and correct. Providing false information to University officials is prohibited under Part 9(h) of the Code of Student Conduct (V-1.00(B) University of Maryland Code of Student Conduct) and may result in disciplinary action.
c) This self-documentation may not be used for the Major Scheduled Grading Events as defined below and it may only be used for only 1 class meeting during the semester.
Any student who needs to be excused for a prolonged absence (2 or more consecutive class meetings) or for a Major Scheduled Grading Event, the student must provide written documentation of the illness from the Health Center or from an outside health care provider. This documentation must verify dates of treatment and indicate the timeframe that the student was unable to meet academic responsibilities. No diagnostic information shall be given. The Major Scheduled Grading Events for this course include: Two midterms, a final and some pop quizzes.
Individual Presentation Time scheduled during the last week of class
• Turn assignments in on time.Unless previously negotiated, you will receive no credit for work that is notturned in on the day and time it is due. The only exception is for excusedabsences as defined by the university (Section V-1.00(G) of the ConsolidatedUSMH&UMCP Policies and Procedures Manual).
• Do not miss exams. Unlesspreviously negotiated, you will receive zero credit for missed exams. Onceagain, the only exception is for excused absences as defined by the university.
• The punt box rule: on anyproblem you turn in (homework or exam), if you clearly mark a rectangular boxwith an “X”, we will not grade the problem and you willreceive 10ththe points for that problem. Allpunt points are added, and rounded up. This is to stop you from guessing andmaking our life more difficult while grading.
• Please read and understand theUMCP 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 notworth your time (or mine) to be here if you do.
In general, I do not mind yourworking together on projects. In fact, I encourage it. (Do not work together onin-class exams. If you have trouble with homework questions, post to thenewsgroup 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 finefor Alice and Bob to discuss their proposed solutions, work on a whiteboardtogether, and even ask questions on the newsgroup. Once they figure somethingout, they can also answer specific questions on the newsgroup. However, theyshould 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 levelof cooperation is allowed and encouraged. However, if Alice or Bob had
simplycopied 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 codefrom a temporary directory or a dustbin, or “look at the other’s
screens” whiletyping in their solution. When you arewriting/codingsomething you
will turn in, you should be working by yourself. Even mundanepieces of code
that you turn in, andwasnot providedto you by us, should be written entirely by
you.When all issaid and done, you are the final authority on whether you did
something wrongor not, and I’m certain you will know as well as any professor
when you dosomething wrong.Please try not to put yourself in those
situationswhere you have to ask yourself whether something you’re about to do is
corrector not. If there is any debate about the authenticity of your work, I
will haveno recourse but to recommend a hearing before the honor board. I
sincerely hopethis is the last I have to say on this subject for this semester.
Back to CMSC 417section 0101homepage
lastmodified 08/29/2011