Meets: 2-2:50 pm MWF, in 304 SH
Instructor: Dr. Jakob Eriksson <email@example.com>
Book: Kurose and Ross - Computer Networks a top-down approach
Office: 1135 SEO
Office phone: 312-996-0481
Office hours: Monday 3-4, Thursday 11 am, ERF 2054
Teaching Assistant: Tomas Gerlich <firstname.lastname@example.org>
TA Office: ERF 2054
TA Office Hours: Friday 11-12, Tuesday 4-5 pm
By the end of this course, you will have a good understanding of the main elements that work together to form the Internet. You will have acquired some familiarity with standard diagnostic tools, network application development, and typical network designs and configurations. In addition, you will have caught a glimpse of more advanced networking concepts and research directions, and graduate students will have conducted a small independent network-related research project.
Evaluation will be done through 2 midterms, 1 final and 10 smaller assignments. While the class combines theory and practice, the focus will be on practical demonstrations and experiences.
This class is programming intensive, with most assignments done in C. CS385 is a required prerequisite: concurrent enrollment only with instructor consent, and not recommended. If you took CS385 but struggled in it, you may want to reconsider taking this class until you have gained a bit more experience with low-level programming and UNIX environments.
Grading will be done only on the best portion of your exams and assignments (elements), through the following mechanism. Each element is worth up to a number of points:
Exams: 2x30 (midterms), 70 (final) points
Assignments: 10 assignments x 6 points
Class contributions: 10 points (instructor discretionary)
SUM: 200 points
Elements will be individually graded with a percentage score. Out of all elements, the 100 points' worth (130 for graduate students) of elements with the highest score will be combined (prorated if necessary) to compute your point-weighted score for the course. Undergraduate and graduate students will then be graded using separate curves. The pseudocode below describes the course score computation process more precisely.
- First, sort all elements in decreasing score order
- for([score, points] in elements) do
- until total_points==MAX_POINTS
- print "Course score: ",pointweighted_score/MAX_POINTS
For example, an undergraduate student that gets full scores on midterm 1 and 2 (30+30 points), and 7 homeworks (42 points) automatically has a full score in the course and will receive an A grade without taking the final. Similarly, a graduate student that does not turn in any homework, but scores 90% on the midterms, and 80% on the final, would receive a point-weighted course score of (0.9*30+0.9*30+0.8*70)/130=84.6%. Whether this qualifies for an A grade will depend on the curve.
Each student also receives a percentage score for substantial contributions to the class as a whole. Such contributions may be made through the class mailing list, the class wiki pages, or during lecture, or other means. Good contributions include early reports of errors in assignments, helpful tips, tools and information (but not solutions!) posted to mailing list or class wiki, and clarifying or interesting questions during lecture. The expected score in this category is 0%: a non-zero score is a bonus reserved for substantial contributions, entirely at the instructor's discretion.
Consulting with your classmates on assignments is encouraged, except where noted. However, turn-ins are individual, and copying code from your classmates is considered plagiarism. For example, give the question "how did you do X?", a great response would be "I used function Y, with W as the second argument. I tried Z first, but it doesn't work". An inappropriate response would be "here is my code, look for yourself".
To avoid suspicion of plagiarism, you must
specify your sources together with all turned-in materials. List classmates you discussed your homework with and webpages from which you got inspiration or copied (short) code snippets. All students are expected to understand and be able to explain their turned-in materials. Plagiarism and cheating, as in copying the work of others, paying others to do your work, etc, is obviously prohibited, is grounds for failing the course, and will be reported.
TOPICS COVERED (tentative)
- Constituent parts of the Internet Layered network model
- The innards of Web / email / bittorrent
- Domain Name Services (DNS)
- Networking APIs for application developers
- Common network diagnostic tools
- Network performance - throughput, delay and packet loss
- Transport layer services
- TCP - Reliability & Congestion Control
- IPv4/IPv6 Addressing / Routing
- Inter/intra domain routing protocols
- Network address translation
- Routing in fixed and ad-hoc wireless networks
- Mobility and the Internet
- Introduction to Network Security - Botnets, DoS /DDoS, Viruses and Worms
- Multicast and Anycast mechanisms
- Multiple access control techniques
- Physical layer overview - modulation, coding
- Error detection and correction
- The UNIX command line