CSC445

Instructor: Doug Lea
Class: T-Th 8:00
Office/Lab hours. Normally T-Th 11-12, but send mail at any time with questions or to set up online meeting
Prereqs: CSC241 (365 strongly encouraged) and CSC322 (or 222)

Overview

The design, analysis, and implementation of layered computer networks and networked applications; including underlying communication support, the development and use of network protocols, and distributed systems.

Topics

Outcomes

Upon completion of this course, students will demonstrate ability to:

Textbook

Current version (and sources) of Peterson, Larry, and Bruce Davie Computer Networks: A systems approach.

Lectures mainly follow the text up through chapter 5, but then mainly rely on course notes, including: naming, congestion, middleboxes, multicast, consensus and fault tolerance, security, blockchains, media, application protocols. QUIC

Requirements

Subject to minor change:
Two exams (one during final exam week) (30%)
Exam questions cover the design and theory of operation of protocols and components, as well as analysis in terms of latency, security, liveness, fault tolerance, and appropriateness for a given problem.
Exercises (10%)
When covering non-hands-on topics, some text exercises will be assigned and discussed in class. Submit in 4 sets:
  1. Chapter 1
  2. Chapter 2A
  3. Chapter 3A (13-17)
  4. Chapter 3B (47,48) Chapter 3C (56) Chapter 3D (73)
Class presentation (10%)
An approximately 15 minute presentation on a networking technology that is covered at most only briefly in class and text. Example topics include substrates such as radio links, broadband, and satellites, alternative low-level protocols such as XNS and Netware, and higher-level frameworks such as JXTA. Time slots for these will scattered throughout the semester. You can choose to either do a presentation alone, or together with another student.
3 programming assignments (50%)
At least one project focuses on performance measurement across multiple hosts and networks; others require specialized versions of covered techniques and components to develop network services or systems. Programs may not be submitted unless they successfully run according to specification. Two percent credit is taken off per day late.

You must demo within 2 days of submitting. As a substitute for live demos. you may accompany your program source and screenshots or remote screenshare of successful operation with a brief (approx one-page) design and experience account of your approach and how it changed over time. (This may be embedded as main program documentation.) If you maintain commit logs or time logs every time you work on project, a lightly edited collection of these should suffice. I may send follow-up questions before accepting.

  1. Assignment 1
  2. Assignment 2
  3. Assignment 3

Lectures

Here are the targeted topics for lectures, many of them in two or three parts:
  1. Point to Point communication: metrics, errors, APIs
  2. Shared media communication: ethernet, wireless protocols
  3. Switching: topologies, protocols
  4. Routing: paths, metric-based, policy-based (BGP)
  5. Internetworking: IP, ICMP, ARP, etc
  6. TCP and related protocols: sessions, windowing, congestion
  7. RPC: protocols, marshalling
  8. Naming: DNS, network file systems, etc
  9. Groups: multicast, consensus protocols, fault tolerance
  10. Security: policies, authentication, encryption, blockchains
  11. Application layers: middleboxes, mail, streaming

Campus references

See the CS and College course policies and resources.

If you have a disabling condition, which may interfere with your ability to successfully complete this course, please contact the Office of Disability Services.

SUNY Oswego is committed to Intellectual Integrity. Any form of intellectual dishonesty is a serious concern and therefore prohibited. The full policy can be found at http://www.oswego.edu/integrity

Doug Lea