Home Announcements Schedule Assignments Slides Projects Reading

COMP 3621: Computer Networks

Winter 2012

Course Info

InstructorProf. Chris GauthierDickey
OfficeJohn Greene Hall 321
Office HoursT: 11:30am-12pm, M: 2pm-3pm
Time & LocationTR 12:00 - 1:50, John Greene Hall 318
PrerequisitesCOMP 2370: Introduction to Data Structures,
COMP 2355: Introduction to Systems Programming, and
COMP 3361: Operating Systems I (though this may be taken as a co-requisite)
Credits4

TA Info

TA:Daniel Pittman (dpittman -at- cs.du.edu)
Office:JGH 327
Hours:F: 10am-12pm, 1pm-3pm

Course Description

Computer networks are pervasive in our every day lives and in particular, the building of the Internet has been one of the most significant events in our technological history. In this course, you will be introduced to the fundamental principles of computer networking. Using the Internet as a primary example of a large-scale network, topics including the design of the Internet, application and transport protocols, congestion control, routing protocols, packet switching and link-level protocols are covered in this course.

Today's networking cannot be considered without examining security issues surrounding it. In particular, the following topics will be covered over the course of the term to give students a deeper understanding of security in networking:

In addition to understanding the principles of networking, in this course you will learn network programming by implementing substantial programs using C/C++. This course counts towards the advanced programming requirements of the graduate programs.

Finally, please note that this course is not a network administration course. Network administration is fairly trivial once you understand the fundamental computer science taught in this course, but as with all commercial applications, network administration is very dependent on the software and hardware used.

Material

For lectures we will use:

Grading Policy and Assignments

Undergraduate (COMP 3621)

Class Participation:5%
Homework:15%
Midterm:20%
Projects:35%
Final:25%

Graduate (COMP 3621/COMP 4621)

Class Participation:5%
Homework:10%
Reviews:10%
Midterm:15%
Projects:35%
Final:25%

Undergraduates and Graduate students may work in groups of two for homeworks. Programming assignments must all be done individually. Graduate students may not work with undergraduates on programming assignments.

We do encourage you to work on your assignments collaboratively assuming that each individual spends a reasonable amount of time on each question alone before discussing it with others. Note that dividing the problems up and working on them individually will most likely lead to you not understanding a particular topic on the assignment. When you turn in group work, turn in a single copy and put the names of all group members on top of the first page of the submitted papers.

Programs must be written using the assigned language, and in this case in C/C++. Yes, Java is easier in some ways to do network programming. Python is downright simplistic. Both of these languages shield you from understanding how network code really works. Hence, you must use C/C++.

Homeworks are due in class and no late assignments will be accepted without prior arrangement. Turn in partial work if you are not finished. If you must hand it in before class, hand it in to the front office in the department. Do not slide the work under the door as it may get lost!

Projects

Projects in this course typically involve network/socket programming using C/C++ and common libraries. We develop working networked programs that emphasize concepts we've learned in class, but also demonstrate how we develop network programs securely. Projects range from simple buffer examples to fully functional distributed hash tables.

Programs must be written using the assigned language, and in this case in C/C++. Yes, Java is easier in some ways to do network programming. Python is downright simplistic. Both of these languages shield you from understanding how network code really works. Hence, you must use C/C++.

As a course that meets the Advanced Programming Requirement of the Master's program, graduate students have more dicult requirements in their programs and are required to implement additional features. COMP 4621 stu- dents also have these additional requirements.

Reviews (COMP 4621 and Graduate Students only)

Students enrolled in COMP 4621, which would include graduate students only, have additional course requirements including writing reviews for important research papers. These reviews require a thoughtful understanding of both fundamental and advanced research papers in the field.

The following template should be used for your reviews. Please note that by 'Template', I mean that you should have a paper with the following listed head- ings as sections. Do not deviate from this template. Answer all the questions in a compact, but meaningful manner. I do not need you to fluff your paper with garbage, but instead I expect your review to be no more than 2 pages. To turn in the review, simply email it to me before class the day that it is due.

Details can be found under Reading.

Tolerance Policy

You are expected to be tolerant of all people, regardless of race, gender, religion, national origin, age, sexual identity/orientation, disability status, marital status or veteran status. Comments and/or slang that target any of these groups is completely unacceptable in my class or in the University. Please think about what you're saying before you say it.

Honor Code

For this course, all work must be done individually unless specified (ie, problem sets can be worked on in groups of 2). You may discuss problems and assignments with other students, but you cannot use another student's solution or code in any way. At minimum, if you use someone else's code, you must place an obvious comment block in your code indicating so. All sources must be properly acknowldged and document. Failure to do so constitutes a breach of the Honor Code.

Sanctions imposed from a breach of the Honor Code may include, but are not limited to, the failure of an assignment, the failure of a course, and termination from the program. I will impose a failure of the course for any such offenses in the course.