Networks

Course information


Be sure to read all of this page!


Description

Computers are useful devices in isolation, but when you connect them, a wide variety of new uses emerge. We have become accustomed to networked computers (thanks to the Internet, cheap ethernet, and nearly ubiquitous WiFi hotspots), but it is not obvious to the user how the data gets from one machine to another. Nor is it clear how to get multiple machines to work together to accomplish a task. This course seeks to address the problems that must be solved in order to perform computer communication, and then the interesting problems that arise once they are connected.

Computer networks are commonly viewed as a group of layers. At the bottom-most layer is the simple capability of sending a signal through a wire (or through space, in the case of radio waves). Once that capability is established, though, there must be a convention to determine what the signals mean. Then you must be certain that the signals received are correct. Then you connect more than two computers together, and you have to coordinate which one gets to send a message at what time. Connect enough computers together, and then you must figure out how each computer can find the other to send it a message. Only then can you consider what the computers will send to one another, and how those messages will be part of doing useful computational work. We will address these questions (and more) by examining the following layers:


Lectures, labs, and materials

We will meet three times per week for a 50 minutes each. The class lectures are MWF at 2 pm in SMudd 207. You are responsible for the material presented in every lecture. There is no attendance policy, but I strongly recommend that you attend all lectures. If you miss one, it is your responsibility to obtain the material that you missed.

If you must miss a class meeting due to illness, please contact me as soon as is reasonable. We will then make arrangements to address the material and discussion that you may have missed.

If you must miss a class meeting due to another commitment (e.g., a musical performance, an athletic contest), then do not contact me. How you choose between scheduling conflicts is for you to decide. If you choose to miss a class meeting in order to do something else, then you are responsible for the material that you miss; moreover, you should not expect that I will help you to address that missed material. If any work is due at the time of the class meeting that you miss, then I expect you to submit it beforehand.

Vacations and travel: I expect you to be present for all lectures and all exams, including the final exam (see below). If you elect to depart early for a vacation (e.g., spring break) or at the end of the semester, you are responsible for any lectures or exams that you miss. I will not reschedule or make other accommodations because you chose to leave campus early. Do not buy plane/train/bus tickets home that will take you from campus before the final exam or any other course meeting.

The text for this course is Andrew Tanenbaum's book, Computer Networks, 4th edition. I was late to order it, so I will post here when it is available at one of the local bookstores.


Assignments and their submission

There will be two types of assignments:

  1. Problem sets: Periodically (approximately once every other week), you will be assigned a problem set. These will address critical material that is best exercised with paper and pen(cil).
  2. Programming projects: Less frequently (approximately 4 times during the semester), there will be larger, programming-based projects. Here you will either directly engaging in programming network communications between systems, or you will simulate a network in software.

The policy for late submissions is simple: A project not submitted by its deadline will receive a failing grade. Get started early with each project. It is better to submit something than to receive a zero for failing to submit any work on time.

You may obtain an extension on a project, but only for certain reasons. Here are the critical rules regarding extensions for an assignment:


Exams

There will be two exams given in this course:

  1. Mid-term: You will take a 50 minute exam during a regular lecture time during the 8th week of the semester. This exam will cover all of the material up to that point in the semester.
  2. Final: You will take a 1 hour, individually-scheduled, oral examination during the final examination period. More information about this exam format will be provided near the end of the semester. This exam will cover material from the entire course, although it will emphasize material from the latter half of the semester.

Grading

Your grade for this course will be calculated based on the following forumla:

Note that there are no participation points. This absence is not at all a recommendation that you sit quietly. To the contrary, I highly recommend that you participate in class, not because it earns you points, but because it is the best way to ensure that you are on top of the material and understand it well.


Academic honesty

Academic honesty can be a difficult thing to define well. Naturally, you must do your own work. However, one of the strengths of a small, residential college such as this one is your peer group; discussion of the material with others is a natural and beneficial thing to do. Thus, I hope here to make more clear what constitutes academic dishonesty, as well as its penalties.

In general, discussing class material with another student is always acceptable. However, observing another person's work, in any form, with or without that person's permission, is unacceptable. Likewise, sharing your work, in any form, with another student is unacceptable.

To make this issue more concrete, let's consider a programming assignment. You are allowed to discuss the background material from the class that is relevant to the assignment. You may not view another person's code, nor may you show yours to another student. Furthermore, although you may discuss the background material with another student, you may neither discuss nor formulate even abstract elements of your solutions with another person. In short, understand together, but formulate your own ideas and write your own program.

Penalties: If I think that you have been academically dishonest but I do not believe that I can prove it, then we will have a discussion about the uncomfortable similarity between your work and another's; however, there will be no penalty. In such circumstances, I assume that you may have unknowingly or unwittingly crossed the collaborative line in discussing material with another student. However, if this problem persists, I may impose further penalties.

If I am certain that you have been academically dishonest -- submitting work that is exceedingly similar to another student's, or submitting work that clearly comes from an outside source -- then you will fail this course, and the case will be reported to the Dean of Students. You are far better off submitting half-baked, poor work than trying, in the panic of an approaching deadline, to copy another's work and submit it as your own. Also note that providing your work to another student makes you equally academically dishonest.


Your responsibilities and my availability

I hope that this page has made clear the structure and intent of the course, and well as the expected workload and your responsibilities. By presenting this information at the onset, I hope to avoid using our valuable time on misunderstandings and negotiations.

I will be available to meet with you about the material, projects, exams, lectures, or any other aspect of the course. Simply email me and we will set a time to meet as soon as possible. You can also try to find me in my office (SMudd 406) or the Faculty Research Lab (SMudd 015).


Scott F. H. Kaplan
Last modified: Mon Jan 28 16:46:51 EST 2008