Overview

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.

Evaluation will include in class quizzes, a midterm, a final, and eight homeworks.

Prerequisites

This class serves not only as an introduction to networking concepts but also low level network programming; as such, prior experience programming in C is highly recommended. CS385 or equivalent is a required prerequisite: concurrent enrollment is only available 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. If you are a graduate student and are not required to take CS385, I suggest you watch (at least) the first several lectures of CS385 from spring 2012, where C programming is discussed. You’ll find the recordings here.

Peer Instruction

This course will be taught using Peer Instruction, a teaching model which places stronger emphasis on classroom discussion and student interaction.

Evaluation

Grades are curved based on an aggregate course score. There are separate curves for graduate and undergraduate students. This means that the course score cut-offs for an A, B, C etc. are not defined ahead of time: these will be set after the end of the course.

The course grade weighting is:

Task % of total grade
Reading Quizzes 5
Class Participation 5*
Homeworks 35
Midterm 25
Final 30

READING QUIZZES

Reading quizzes will be given at the beginning of each class period using iClickers. Everyone will have their lowest three quiz scores dropped.

CLASS PARTICIPATION

Participation is an incredibly important facet of this course. The baseline Class Participation grade will be based off of participating in classroom discussion questions. Your class participation grade can grow to a maximum of 10 through exceptional participation. The expected score in this category is 5: additional points are a bonus reserved for substantial contributions, entirely at the instructor’s discretion. Exceptional participation includes early reports of errors in assignments, helpful discussion on Piazza, contribution of helpful code to the common good of the class (e.g. test cases and/or testing scripts) and thoughtful discussions during lecture.

HOMEWORKS

Homeworks will consist of approximately eight programming projects with duration between one and two weeks. Homeworks will either be “language of your choice” or C. Be sure to consult the online handout or the professor if you have any questions.

HOMEWORK LATE POLICY

Late assignments will be penalized by decreasing your achieved score by the factor listed below. Extra credit will not be awarded for early turnins.

x hours late Penalty
x < 12 10%
12 <= x < 24 25%
24 <= x < 48 50%
x >= 48 100%

ACADEMIC INTEGRITY

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