| Class times: | 10:00-10:50am MWF |
| Professor: | Richard Liston |
| Office: | Pfahler 101G |
| Phone: | 610-409-3000 x2497 |
| Email: | rliston at ursinus dot edu |
| Office Hours: |
|
| Pre- or co-requisite: |
CS 274 (Computer Architecture and Organization) NOTE: it is expected that all students have a solid command of the C++ language, and are able to apply good software development practice to quickly create programs of moderate complexity. We will be learning a few new programming skills to allow you to write networked applications. Please make sure you understand the example programs available here . |
| Text (required): |
Computer Networking: A Top-Down Approach Featuring the Internet, 4th Ed. by Kurose and Ross ISBN: 0-321-49770-8 additional readings may be assigned in class |
Architecture and protocols of computer networks. Protocol layers; network topology; data-communication principles, including circuit switching, packet switching and error control techniques; sliding window protocols, protocol analysis and verification; routing and flow control; local and wide area networks; network interconnection; client-server interaction; emerging networking trends and technologies; topics in security and privacy.Upon completion of this course you will have a solid understanding of how data moves from one machine on the Internet to another and will be able to design and implement networked applications. You will understand the details of how and why the network responds differently in different locations and at different times of day, and will be able to diagnose network problems.
The grading for the course will be based on the following:
| Class participation | 10% |
| Group participation | 10% |
| Homeworks and projects | 40% |
| Exams (3) | 40% |
Each item will be worth 100 points, with the final grade weighted as indicated above. The final grade will be out of 100 points, with letter grades assigned as A=90-100, B=80-89, C=70-79, D=60-69, F=below 60. A plus (+) or minus (-) will be added to the grade for work that is at the top or bottom of the range. I may raise the final grade of students who have demonstrated earnest attempts at achieving the objectives of the course. Please utilize my office hours to come discuss any difficulties you are having with the material during the course of the semester (or for anything else!).
This course will include one or more group project. All members of the group are expected to participate equally. If the project involves writing a program, each member must sign their code as the principal author and give attribution for contributions by other group members.
In addition to functionality, the programs you write for this course will be graded on the quality of the code. It must be robust, meaning it handles uncommon cases gracefully. This is particularly important in the case of networked applications where you may have no control over the quality of the implementation of the program on the other end of the connection. Your code must also be well-structured and well-documented. Well-structured code has functions that perform well-defined tasks, and modules that have sensible interfaces. "Spaghetti code" is code that has too many module interdependencies and/or a flow of control that is difficult to understand. Well-documented code is code that has complete file headers, clear explanations for functions and algorithms, and meaningful identifiers (e.g., variables and function names). Except for simple "toy" programs, all projects will benefit from spending a significant amount of time designing the code before beginning an implementation.
You are encouraged to bring your program design to me for review. This is most useful if you bring it at least one week before the project is due.
Any reasonably competent software development environment uses a standard coding style. In this course we will adopt a coding standard, "C/C++ Coding Standard", that you are expected to follow. In this course I will not be explicitly checking your code against each point of this Coding Standard, but points will be deducted for code that substantially deviates from these guidelines.
In earlier courses you were introduced to the idea of writing robust code --- code that handles uncommon events gracefully. Some typical things that can go wrong and need to be handled properly are: files that are expected to be opened are not there, unexpected user inputs, data contained in a file is invalid, etc. Please note that networking code that is non-robust is also a security risk. I will expect all operations to be handled properly and will count off significantly for code that is non-robust. A good way for you to handle this is to make sure you thoroughly test boundary conditions in your tests. Also, developing and maintaining your own classes that can be reused and updated from project to project will save time in the long run.
Whenever you send files to me, make sure the subject of your email has "CS 475" and the name of the assignment in the title, like "CS 475 Project 1". Send all your files as a single attachment in a tarfile that extracts into a subdirectory, and make sure your login name is included in the filename and subdirectory, like "project5_edmurrow.tar" and "project5_edmurrow".
Unless stated otherwise, you will turn in your homeworks and projects individually, and everything you turn in must be your own work. (This may apply to group work as well, depending on the assignment.) All code turned in must be commented with the author's name, the date, the course number and name, and a description of the file. When you sign the code you are saying that you wrote it all and that you can answer detailed questions about every line. It is better to turn in a non-working project than to risk dismissal. Any question about the authorship of assignments will be referred to the Dean's office. Futher information about this topic is covered in the handout "Academic Integrity in Computer Science at Ursinus College".
Furthermore, in this course you will become privy to information and techniques that will provide you with enhanced access to network resources. Note that the College's policies, Responsible Use of Ursinus College Information Technology Resources , apply to this course. Make certain that you fully understand and adhere to these guidelines.
| Week Beginning | Topics | Reading | Notes |
| Aug 25 |
Administrivia and Course Intro Overview of Networks Protocols and Protocol Layers Network History |
Section 1.1-1.9 | |
| Sep 1 |
The Application Layer The Web and HTTP FTP DNS Peer-to-Peer File Sharing |
Section 2.1-2.6 | |
| Sep 8 |
Socket Programming The Transport Layer Multiplexing and Demultiplexing Connectionless Transport: UDP |
Section 2.7-2.10 Section 3.1-3.5 |
|
| Sep 15 |
Reliable Data Transfer Connection-Oriented Transport: TCP Principles of Congestion Control TCP Congestion Control |
Section 3.4-3.8 | |
| Sep 22 |
The Network Layer Virtual Circuit and Datagram Networks Routing and Router Details The Internet Protocol: IP ICMP |
Section 4.1-4.4 | |
| Sep 29 |
Routing Algorithms Internet Routing Broadcast and Multicast |
Section 4.5-4.8 | |
| Oct 6 |
The Link Layer Error Detection and Correction Multiple Access Protocols Link-Layer Addressing |
Section 5.1-5.4 | |
| Oct 13 |
Ethernet CSMA/CD Link-Layer Switches |
Section 5.5-5.6 | No Class Oct 13: Fall Holiday |
| Oct 20 |
Interconnections: Hubs and Switches PPP: The Point-to-Point Protocol Link Virtualization MPLS |
Section 5.7-5.9 | |
| Oct 27 |
Wireless Links CDMA 802.11 Wireless LANs Cellular Internet Access |
Section 6.1-6.4 | |
| Nov 3 | Mobility | Section 6.5-6.9 | |
| Nov 10 |
Multimedia Network Applications Streaming Stored Audio and Video Internet Telephony Protocols for Real-Time Interactive Applications Content Distribution Networks Scheduling and Policing |
Section 7.1-7.7 | |
| Nov 17 |
Intserv and Diffserv RSVP |
Section 7.8-7.10 | |
| Nov 24 |
Network Security |
Section 8.1 |
Nov 26-28: NO CLASS (Thanksgiving recess) |
| Dec 1 |
Cryptography Authentication Integrity Key Distribution Access Control: Firewalls Attacks and Countermeasures Sarbanes-Oxley Act of 2002 Network Management Exam Review |
Section 8.2-8.9 Section 9.1-9.5 |
|
| Dec 8 |
Exam Week |
FINAL EXAM: Dec 11, 1pm-4pm |
Richard Liston