Format
Course Structure
Class format: Ideally, each "lecture" should be highly interactive and spent either digging into specific concepts you may not have fully understood (in responses to questions you will need to ask), or working through some problems that require that you apply the material being targeted for this particular lecture. In order for this to work, it means that you MUST have read ahead of time the material expected to be covered during the lecture. This material will be identified by date in the Reading Assignment column of the syllabus on the wiki. Working through the problems will require access to the book and possibly other material, so that you should bring a laptop to class.
Reading Assignments (and preparing for quizzes & exams): As mentioned, reading assignments are intended to prepare you for the next lecture. Reading assignments will also often include additional material beyond the textbook, and in particular, Requests for Comments (RFCs) that are the "standards" documents of the Internet Engineering Task Force(IETF). In most instances, except for the topic of network security (Attacks & Defenses) where the book only has limited coverage, you will not been expected to have read those RFCs ahead of class. Material that is not required reading before a class will be listed on a separate line starting with FYI. Note though that some of the problems will require retrieving information from those documents, so having some familiarity with their content ahead of class wont hurt.
In addition to the reading assignments and the questions we will explore in class, there is a wealth of material that is available with the Kurose & Ross textbook. In particular, the textbook's student resources include many problems, exercises, and labs that can help you assess and improve your understanding of the class material. You are strongly encouraged to take advantage of those resources, and, for example, for small study groups of 2-3 students to work through them and discuss possible solutions.
Review Questions: Will be assigned ahead of each class. They are meant to test your understanding of both previous material and more importantly the reading assignment material, and need to be turned in at the start of the class. As an added incentive for you to work through the questions, they will be checked to assess that you have made an honest attempt at completing them. Review questions make-up 10% of your grade, and your overall score will depend on how many reasonably answered questions you turn in.
Quizzes: There will be six quizzes that will together count for 20% of your overall grade. Quizzes are scheduled approximately every second week to alternate with labs due dates. Quizzes will take place at the start of class (so don't be late) and will take 15 minutes. Your lowest quizz score will be discarded (alternatively, you can miss one quizz). Like with exams, there will be no make-ups or adjustments for missed quizzes except for duly documented medical or family emergency reasons.
Studios: There are five studios that are all optional and meant to prepare you for the labs. Two TAs will be available to assist you with studios on Wednesday 5:30-7:00pm & Friday 10:00-11:30am in Urbauer 216. Studios are not graded and nothing needs to be turned in. They are expected to be completed in small groups (4) to allow for interactions and discussions of the material.
Code needed to complete each one of the studios will be made available under a correspondingly named directory in the SVN repository that you have been assigned for the class. Descriptions of each individual studio are provided in pdf format in the Optional studios section of the wiki.
Labs: There are five lab assignments that involve applying some of the material covered in the class, either by observing the behavior of networked systems or by developing simple versions of some basic network software components. Several of the assignments will be done using the Open Network Lab (ONL), and you will need to first get an ONL account. Labs involve multiple components from developing your software to testing it using the ONL machines and network. Getting all the pieces to work well together is likely to take multiple iterations, so don't wait until the last minute to get started on your lab. It's a recipe for disaster.
Code needed to complete each one of the labs will be made available under a correspondingly named directory in the SVN repository that you have been assigned for the class. Descriptions of each individual lab are provided in pdf format in the Labs section of the wiki.
The first two labs must be completed individually by each student. Subsequent labs can be done in teams of two if so desired. A team only needs to turn in one lab assignment, and unless warranted by exceptional conditions, both team partners receive the same lab. You can discuss labs with other students, but what you turn in must be your own. In particular, because the labs heavily rely on labs from previous years (although differences have been introduced), trying to earlier years' solutions will expose you to severe penalties, including possibly failing the course. If you are ever in doubt regarding what material is appropriate for you to use, please ask me. Labs will count towards 25% of your overall grade.
Exams: The course has two exams, a midterm (20% of your overall grade) and a final (25% of your overall grade). The midterm will take place in-class during the class of Tuesday October 14, 2014. The exam will be held during the time-slot allocated by the university, i.e., on Wednesday December 17, 2014, 3:30-5:30pm. The final will be cumulative in its scope, i.e., include everything that has been covered during the class.