CS 141 "Internet Technologies and Systems" Proposal

This is the working proposal for a new undergraduate-level class, whose only prereqs would be CS 106 (AB or X), possibly 107, possibly 108, that introduces common Internet/Web technologies (HTTP, HTML, SSL, email protocols, etc.) in context.  Currently, a lot of Internet-enthusiastic CS majors learn these things "by osmosis" and with no context -- either practical, historical, or theoretical -- and as a result end up spinning their wheels when implementing nontrivial projects, or proposing designs that lack sophistication.  The real problem is that while the protocols and technologies themselves are easy to pick up from a programming/hacking standpoint, doing so does not give the student the benefit of seeing the evolutionary design decisions (both good and bad) that influenced the development of each technology.  As a result, when implementing anything nontrivial for which the "baseline" technologies aren't a great fit, they have no starting point for determining what the hard parts of the problem really are and whether past research might yield some insight into solving them.

By the end of the course, students should:

The starting point for the course will be Nick Parlante's CS 193I. The course will be a logical prereq to CS 444I, Large-Scale Internet Services, which will be renumbered CS 241.

Why is this course needed?

I believe this would be a first-of-its-kind class that would become widely emulated.   I hope to convince Mary Baker, Dan Boneh, and Dawson Engler to do this with me--if we split it up 4 ways, the workload shouldn't be too bad.

Scope and purpose

Basically, divide the course by topic based on Internet technologies (see below for a first cut).  For each topic, we would present:

Some fun "extras" for the course (depending on time constraints) would include:

First cut at topic list

The following is my wishlist of what to cover, and specifically what "contextual" stuff about each topic. Next task is to identify existing overlaps between this and CS193I.

  1. HTTP: Transport/networking issues.  stateful vs stateless protocols, layered model of networks, binary vs ASCII; TCP, UDP, IP, multicast; physical and link layer networking.  Extensions: wireless, heterogeneous networks, various flavors of mobile computing.
  2. HTML: media formats and data representation.  SGML, other markup languages, extensibility, XML.  Overview of other formats; format transcoding; encoding structure vs. layout.  Hypertext and hyperlinking.  Overview of other "static" media formats (GIF, JPG, extensions).  Architecture of a Web browser client, extensibility, plug-ins.
  3. Email protocols.  SMTP, POP, IMAP and email consistency, email security.
  4. Java & JavaScript: Internet programming.  Interpreted vs compiled extension languages; mobile code pitfalls; language design issues/portability; client vs. server execution; other extension technologies (Shockwave, ActiveX).
  5. Server architecture.  Procs vs. threads, and architecture of a typical Web server; intro to server workloads and performance issues; intro to replication and load balancing strategies
  6. Dynamic content generation.  Extending the server with CGI, fast-CGI, and servlets; process models, scalability and state management concerns; session synthesis using cookies and Fat URL's
  7. Security.  SSL; public vs symmetric key cryptosystems; crypto algorithm basics; key distribution problem; how certificates work and how secure channels are bootstrapped; e-commerce protocols and challenges; attacking the protocol vs the algorithm
  8. Internet evolution.  How has the Internet evolved beyond its original intent?  What are some examples of how its radical departure from its original operating point has stressed its protocols, software, infrastructure, etc.? (Examples: how HTTP stresses TCP in ways it didn't expect; why firewalls are needed and why it's tricky to get security right in an open network; TCP and similar protocols over wireless; etc.)
  9. Other topics of interest.  [Each of these can be, e.g., the subject of a single-lecture overview that shows where they fit into the larger scheme of things.]   Web-based portals (putting a Web front-end on every service); multi-tier architectures (caching, databases-on-Web, active proxies); extending the Internet (wireless access, mobile computing and non-PC devices); streaming media challenges

fox@cs.stanford.edu