Instructor | Prof. Chris GauthierDickey |
Office | John Greene Hall 321 |
Office Hours | TR 9:30-9:55, M 11-12, or by appointment (email me) |
Time & Location | TR 10:00 - 11:50, John Greene Hall 316 |
Prerequisite | COMP 3361: Operating Systems I (though this may be taken as a co-requisite) |
Credits | 4 |
TA: | Craig Ritzdorf |
Office: | JGH 326 |
Hours: | MW 12:00p-2:00p, or by appointment (email Craig) |
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.
For lectures we will use:
Undergraduate
Class Participation: | 5% |
Homework: | 15% |
Midterm: | 20% |
Projects: | 35% |
Final: | 25% |
Graduate
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!
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.