If I had to name one technology that is currently having the largest impact on the shape of society, networking would be somewhere around the top of the list. The telegraph, telephone, and radio opened the door for nearly instantaneous transmission of information, and networking, everything we will study in this course, has broadened that to make unbelievable amounts of information available to people around the world. Networks connect people to information and other people with unprecedented ease.
The cost of communication has been driven so low and the spread of networks reaches so far that one person can reach a worldwide audience of millions for minimal cost or even free (think youtube, wordpress, or, well, spam). In the other direction, one person, for a similarly minimal cost, can access information on practically any topic, realtime updates from anywhere on earth, and enough videos of cats to keep them busy for years (306,000 videos as of August, 2011 (strangely, it was 891,000(!) in August, 2009)).
In this course, we'll explore how it is that we can instantly access
nearly one million a mere three hundred thousand videos of cats (and other even more impressive things): the technology that makes all of this possible. Networking, in the scope of this class, will cover the field from directly connected networks (running a wire between two computers – essentially the modern equivalent of the telegraph) to the structure of the global internet and the applications built on top of it. Along the way, we'll cover not only the current technologies but also their context: history, forces shaping the design, drawbacks, potential successors, etc.
At the end of the course, you will have a much deeper understanding of what happens when you click on a link in a web browser. You will have tools to investigate the events caused by that action and the resulting data transmission across various links and through several different computers to and from your own. You will have hands-on experience with networks at several levels, including a substantial coding project of your own design. And you will be able to assess current and future technologies in terms of their suitability for solving problems and enabling communication.
For an idea of the specific topics covered in the course, see the rough schedule for the semester.
When/Where: MWF 1:00-1:50PM / CNS E201
Instructor: Mark Liffiton
Office: CNS C207B (2nd floor CNS, directly above entrance from quad)
Office Hours: MWF 11-12; TR 10-10:45; by appointment MW 2-4; or email/drop in any time.
Contact: Email is preferred (please start the subject with "CS330:").
For more pressing matters, my office # is 309-556-3535.
Textbook: Computer Networks, Fifth Edition: A Systems Approach by Peterson & Davie
Semester schedule — tentative - see the Moodle for up-to-date details.
Moodle — assignments, quizzes, announcements, and other online resources will be here.
The final grade will be based on the following breakdown:
The labs will be hands-on explorations of networking concepts. They are designed to give you experience with common networking tools and protocols while learning about the underlying concepts.
Lab assignments will be posted on the course's Moodle site, usually on a Thursday before class. We will go over the lab in class, and we may use time in class to begin working on the lab. Reports should be submitted online in the form of plain text or PDF*. The desired format of the reports will be specified in the assignments. I will aim to get them graded and returned to you by the following week.
Lab reports will be due at the beginning of class on a specified day; they will be considered late at any point after that time. A lab will lose 15% of its total points for every day it is late.
There will be two exams during the semester. The exams will be take-home exams, available after class on a Thursday and due online in plain text or PDF format by the beginning of class the following Tuesday. The format of the exams will be announced before they are released. There is no final exam.
As you may have heard from other teachers: If everyone does well, that's great! I'm not going to lower anyone's grade to fit some predetermined grade distribution. However, scores given on individual quizzes and exams (especially exams) may not translate directly into a letter grade on the traditional scale. As explained quite well here:
"A percentage shows how much of a particular exam was dealt with successfully, but what test is so perfect that it could completely determine extent of knowledge or ability? If a student gets a grade of 90%, it does not mean they know 90% of everything in the subject. Wise students will begin to look at scores as a place on a continuum of achievement rather than analysis carved in stone."
If you would like to request a regrade, submit a request in writing (via email) within one week of receiving the graded lab, exam, etc. Indicate exactly which part you believe deserves a different score and why.
The final project will be a coding project in which you develop a substantial program that involves some aspect of networking that we cover during the semester. These projects may be done individually or in groups of two. Groups will be expected to tackle correspondingly larger problems than individuals. For the first half of the semester, explore potential topics and gather ideas for your project. Feel free to discuss ideas with me as you have them. I will also provide ideas for projects. Around the ninth week of the semester (10/19-10/23), each project team will schedule a meeting with me to discuss ideas and choose one.
Several documents will be written during the project:
Detailed descriptions of each of these documents will be provided when they are assigned.
During our final period, scheduled for Wednesday, December 8, from 8:00 - 10:00am, we will have a presentation session. Every project will get a presentation slot, in which the team will present the project to the class.
The final grade for the project will be based on the initial proposal, progress reports, the final report (including an assessment of the code itself), and the final presentation.
Class time will be complementary to the reading, and you will need both in order to learn all of the material in this class. Furthermore, each student benefits from the engagement of all others in the class. Ten points of your final grade will be based on that engagement. Attending every class period on time and prepared will earn a base of 7 points; points can be gained by constructive participation, in class or out, such as asking questions, answering them, helping others in office hours, responding in the forum, sharing insights, etc.; and points can be lost for excessive (more than 3) unexcused absences, disrupting class (e.g., regularly showing up late), dominating the conversation, and the like.
Absences can be excused with documentation from health services or the Dean of Students' office, or if arrangements are made with me more than a week in advance. In general, if you know you will be missing a class, let me know as soon as you can.
A set of questions will be posted on the course Moodle along with each day's reading assignment. Both will be posted about a week in advance. You should complete the reading and answer these questions before each class. Answers should be submitted at least an hour before class, by 8:30am.
The questions will invite your reaction to the reading(s) and check your understanding of the material with small problems. Each day's response will be be worth one point if it shows solid effort. If you cannot solve a problem, write a brief paragraph describing what you understand of it and how far you got or where you are stuck. I may assign extra credit for exceptional responses.
The goal of these questions is to prepare you for class, gauge how difficult each topic is, and let us focus our attention in class on the more challenging or unclear concepts. Because I will use your responses to guide our time in class, late submissions won't be accepted. As with absences, three responses may be missed without penalty.
I strongly encourage you to form study groups with your classmates, compare notes, explain concepts to one another, and generally help each other learn the material in this course.
Anything you turn in for a grade needs to reflect your own understanding. Copying solutions and giving away answers are not allowed. If you're not sure about about a certain scenario, just ask me.
Try to follow this rule of thumb: No matter what help you received figuring out the concepts involved, when you turn something in you should be able to reproduce the whole thing, working through the assignment again, without any outside help.
For group submissions (e.g., project documents), I will ask each individual to submit a brief statement indicating how the work was divided and roughly how much of each part was done by each person in the group.
Own it. Own what? Own this course. This is a high-level course, and I feel that you have enough experience now to help shape it. You have the opportunity to guide individual class sessions, you will design your own project, and toward the end of the semester, I'll ask for suggestions on what topics you would like to cover for the last few classes. Take advantage of those chances to shape the class, and let me know if you have any other ideas throughout.
Many thanks to Janet Davis, Grinnell College, CSC 364, especially for the labs adapted from hers (and in turn from Mike Erlinger's at Harvey Mudd College).