Course Info
Instructor | Prof. Chris GauthierDickey |
Office | John Greene Hall 321 |
Office Hours | T: 11:30am-12pm, M: 2pm-3pm |
| |
Time & Location | TR 12:00 - 1:50, John Greene Hall
318 |
Prerequisites | COMP 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) |
Credits | 4 |
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:
- Vehicles of transmission
- Evolution of modern communication systems, including capabilities and limitations
- File servers and their network protocols
- Sharing of data and devices
- Network topologies
- Telecommunications hardware and software, including modems, DSL, and cable
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:
- Computer Networking: A Top-Down Approach, 5th edition,
by James F. Kurose and Keith W. Ross,
Addison Wesley, 2009, ISBN 0-13-607967-9.
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.