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.