CS 475: Computer Networks


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:
  • Tue, 10-12
  • Tue, 2-4
  • Wed, 2-4
  • other hours by appointment
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

Course Objectives

The catalog description of CS 475 is as follows:
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.

Attendance Policy

We will be moving quickly through a wide range of material, so on-time attendance is required at all class meetings. Since class participation makes up a large portion of your grade (10%), absences will significantly affect your grade. Simply stated: be in class, and be on time.

Grading

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.


Coding Style

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.


Turning in Assignments

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".


Academic Integrity

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.


Inclement Weather Policy

If it becomes necessary for me to cancel class due to inclement weather, I will make every attempt to send an email notification, so please check your email before heading to class if there is any question. If you are a commuter, give me a telephone number that I can call to notify you if class is cancelled.

Course Schedule

(Schedule subject to change)

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
Email
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