Lecture Room and Time: |
3117 Computer Science Instruction Center Mondays and Wednesdays, 5:00pm - 6:15pm |
Instructor: |
Colin Dixon (ckd @ umd . edu) 4139 A. V. Williams Building |
Instructor Office Hours: | Wednesdays, 9:30 a.m. -- 11:30 a.m. |
Teaching Assistants: |
Ramakrishna Padmanabhan (ramapad @ cs . umd . edu) Eric Jeney (jeney @ terpmail . umd . edu) |
TA Office Hours: |
Mondays 12:30 p.m. -- 2:30 p.m., in 4103 A.V. Williams Building Thursdays 11:00 a.m. -- 1 p.m., in 4103 A.V. Williams Building |
Forum: | 417 Forum on Piazza |
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 also cover more advanced and state-of-the-art techniques such as Software-Defined Networking (SDN).
Please note that this course will have a substantial programming component. We will learn how to read and write packets in C, gaining insight into what packets actually look like under the hood.
Please note that this webpage will also serve as the course syllabus.
The official pre-requisites for this course are CMSC 351 and and CMSC 330: introductory courses in algorithms and programming languages. I expect you to (a) understand the basics of computer architecture and operating system and (b) have experience in implementing non-trivial programming projects in C. You should also be familiar with probability theory and analysis of algorithms.
As a systems class, there is an expectation that you are familiar with using appropriate tools to build, test, debug, and iterate on non-trivial programs. This will include, but is not limited to:
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.
After attending the course, I expect you to be able to:
While this class will not require a textbook, there are a variety of recommended books that might be helpful in understanding the material.
Computer Networks: A Systems Approach
by Larry Peterson and Bruce Davie
Morgan Kaufmann, 5th Edition, 2011. ISBN 978-0123850591
Section Navigator courtesy of Bobby
TCP/IP Sockets in C: A Practical Guide for Programmers
by Michael J. Donahoo, Kenneth L. Calvert
Morgan Kaufmann, 2nd edition, 2009. ISBN 978-0123745408
Computer Networking: A Top-Down Approach Featuring the Internet
by Jim Kurose and Keith Ross.
Addison-Wesley, 5th edition, 2009. ISBN: 978-0136079675
TCP/IP Illustrated volume 1
by W. Richard Stevens.
Addison-Wesley. ISBN: 0-201-63346-9.
Eric and Rama are the teaching assistants for this course. Get to know your TAs. Avail of their knowledge of networking during the TA office hours. Don't forget the forum. Please use the forum to post questions and answers that may be useful to others. Questions of the form "How do I link foo?", "Does bar option in compiler bazz work for you?", or "How do I get to the fifth bit on the third byte of an int under Linux/ARM running on a raspberry pi?", "What is the precise interpretation of homework question III, part b?" should be posted on the forum first. If you mail me (or the TAs) these questions, we might not be able to answer them on time. So, post to the forum early and often. I will also update the class web site during the semester (add new pointers etc.).
Office hours for the instructor and TAs are listed above. You are welcome to come by at other times after making an e-mail appointment. Please remember to put the string CMSC417 in the subject line of your e-mail. (Messages that have that string in their subject line are certain to be processed quickly.)
The grading allocation is given below and is subject to change:
Bonus points on projects, and exams apply only towards their own category. As an example, bonus points on assignments cannot be used to better your exam grades.
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 forum.
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 1/10th the points for that problem. All punt points are added, and rounded up. This is to stop you from guessing on exams.
There will be two midterms and a final exam.
The final exam will be held on Monday, May 16 from 4:00-6:00pm
Sample exams from previous years.
Any student eligible for and requesting reasonable academic accommodations due to a disability is requested to provide, to the instructor in office hours, a letter of accommodation from the Office of Disability Support Services (DSS) within the first TWO weeks of the semester.
Plan to turn in all assignments in on time. Once during the semester, you can turn in a programming assignment 72 hours (approximately one weekend) late and still receive full credit. You do not need to notify the TA or instructors when you are using this and it will automatically be applied in the way which is most beneficial to your final grade at the end of the semester. Note that this does not allow a programming assignment to be turned in after the last day of classes. Otherwise, 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.
Please read and understand the UMCP code on academic integrity (Section III-1.00(A) of the Consolidated USMH & UMCP Policies and Procedures Manual.) 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 forum 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 forum. Once they figure something out, they can also answer specific questions on the forum. 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.
Course evaluations are important. The department and faculty take student feedback seriously. You can go to the courseevalum.umd.edu to complete your evaluations.