Time: 1:30pm - 2:20pm
Place: Salisbury Labs (SL) 104
This is an introductory course on computer networking. It covers protocol design principles, performance considerations, and networking technologies. The goals are 1) to provide students with a theoretical and practical base in computer communication issues by considering all protocol layers involved in process-to-process communication, 2) to introduce students to the design issues and tradeoffs that arise in building and using networks for interprocess communication, and 3) to give students "hands on" experience with building and using network services.
Working knowledge of basic operating systems concepts. Knowledge of high-level programming language such as C/C++. An interest in learning about computer networks.
Recommended background: CS 3013 and some knowledge of probability.
Computer Networks (3rd Edition), by Andrew Tanenbaum, Prentice Hall, 1996. The book for computer networks classes. The old version was getting dated, but this one is chock-full of good stuff.
Data and Computer Communications (5th Edition), by William Stallings, Prentice Hall, 1997.
Internetworking with TCP/IP: Principles, Protocols, and Architecture (2nd Edition), by Douglas E. Comer, Prentice Hall, 1990.
The Internet Book, by Douglas E. Comer, Prentice Hall, 1995.
Unix Network Programming by W. Richard Stevens, Prentice Hall, 1990 (I think there is a newer version).
The C Programming Language. by Brian Kernighan and Dennis Ritchie. Prentice Hall, 1988. A concise book on C programming from the inventors of the C language.
Final grades will be computed as follows:
Final grades will reflect the extent to which you have demonstrated understanding of the material, and completed the assigned projects. The base level grade will be a "B" which indicates that the basic objectives on assignments and exams have been met. A grade of "A" will indicate significant achievement beyond the basic objectives and a grade of "C" will indicate not all basic objectives were met, but work was satisfactory for credit. No incomplete grades will be assigned unless there exist exceptional, extenuating circumstances. Similarly, no makeup exams will be given unless there exist exceptional, extenuating circumstances.
There will be 3-4 written homeworks based on questions from the text book. They are to supplement the course lecture and prepare the students for the exams. Students must work alone for the homework. All written homeworks are due in class on the day that they are due, unless otherwise noted.
There will be 3-4 programming projects that account for a significant portion of your grade. Students must work in groups of 2 for the project. Groups of 3 are also possible, but 2 is better. Please see me for groups of other sizes.
The implementation can be done in a variety of environments and languages. However, C and Unix implementations are encouraged because of the relative ease of exploring network systems issues in that environment.
C and Unix will not be taught as part of this course. System calls and other aspects of Unix will be introduced as needed and as the course progresses. Specific Unix help on the programming project can be arranged on a case by case basis.
The total project grade will be divided among the quality of the project overall, the extent to which the goals were met and the quality of the in-class presentation.
There will be two in-class exams. The first is roughly mid-way through the semesters and the second is during the last week. There is a remote possibility of a pop quiz for which no advance notice will be provided. Exams will be closed book and closed notes, unless otherwise indicated. The majority of each exam will cover basic ideas and objectives of the class with a few questions testing additional understanding and insight. In addition, the final exam will include questions on the papers presented in class.
Late anything will be be penalized 10% of total assignment value per day (with the weekend counting as one day) or partial day, and no assignments will be accepted after seven days beyond the due date. All assignments are due at the start of class on the due date. Projects will be submitted as directed in class. Exceptions to these rules can be made only beforehand.
Cheating ... don't do it. Cheating, either by taking credit for work you did not do or getting unauthorized help on assignments or exams, is a serious offense. Punishment is in an automatic NR for the course. Note, discussion among students and even sanctioned group work is encouraged, but blatant copying of homework or code is not allowed. When in doubt, ask!
There is no specific CS laboratory assigned for this course. Students may use this lab or any other CCC or CS supported lab for doing programming assignments. Other systems, such as personal computer systems, may also be acceptable for some projects. Regardless of where you develop your programs, for some programming projects you must ensure your code works on the CCC systems as you will be required to submit your source code for grading. See the individual programming projects for details.