CS 164. Internet Technologies

Lectures (Fall 2005): Mondays and Wednesdays 2:30-4:00 pm
Location: Maxwell Dworkin G135

Name E-mail Office Office Hours Section Times
Professor Mema Roussopoulos cs164-staff@eecs.harvard.edu Maxwell Dworkin 227 Fridays, 3:00-5:00 pm
Ian Becker cs164-staff@eecs.harvard.edu Science Center B14 Computer Lab Tuesday 9-10 PM TBD


1) For CS 164 students having trouble with the submit command for lab 2 due tonight (10/3): The assignment name for Lab 2 is "lab2". Therefore, the submit command should be as follows:
submit cs164 lab2 /path/to/files

2) Please make sure you subscribe to the cs164@eecs mailing list!!! We use this list to make announcements that we would like you to get quickly. See directions below for how to subscribe.

3) We've placed alongside the 9/28 lecture slides in the schedule below a bunch of links to web sites with Perl exercises you can play with. These should give you plenty of stuff to get you more comfortable with Perl over the next few weeks. Do as many or as few as you'd like -- these are for your own comfort. The more you do, the more comfortable you will feel headed into the exams.

4) Exam 1 has been graded and was handed back in class to CS 164 students on Monday, 11/7. (CSCI-E-138 students, you will be receiving your grades via email shortly.) Click here to find out the procedure for requesting a regrade.

Course Description

For many of us, the Internet is or is quickly becoming an essential part of our lives. This course is a survey of the authoring, distributing, and browsing technologies which make up the Internet. By the end of the course, students will be able to answer questions such as: How does a web server work? Why do some servers have better performance than others? What language/platform can I use to build a web site?

The class will include the following topics: HTTP, DNS and TCP/IP overview, HTML techniques for text, links, forms, and images, the client/server paradigm, the peer-to-peer paradigmn, server-side programming, CGI scripts, dynamic content with Java, how web browsers and web servers work, web caching and replication, security, and privacy.

Lectures are twice a week. There will also be periodic discussion sections led by a TF during which students can ask questions about languages and the programming projects. The programming projects will be using Perl and Java.

This class is geared toward undergraduate students (Computer Science 50 is required). The basics of the Perl and Java languages will be included in the course, but the coverage is quick so students need to have strong enough programming skills entering the course to be able to pick up the language material needed to do the projects.

Class Mailing Lists

Staff mailing list: cs164-staff@eecs.harvard.edu . Students can use this list to send private questions/concerns to the staff.

Class discussion mailing list: cs164@eecs.harvard.edu . Students can use this list to discuss concepts covered in class and questions/issues arising from the assignments. Students need to subscribe to this list by clicking here and filling out the form provided.


There will be four mini-lab assignments, four programming projects and two exams: one mid-way and one given on the last day of class. Second exam will not be cumulative. Additionally, students will read and summarize 2-3 assigned research papers.


We will be reading selected chapters from the following required textbooks:

Core Web Programming, second edition, 2001, by Marty Hall and Larry Brown.

Web Caching and Replication, 2002, by Michael Rabinovich and Oliver Spatscheck.

You may also find the following recommended books useful:

Programming Perl, third edition, by Larry Wall, Tom Christiansen, Jon Orwant. (This book is helpful for folks who have some experience programming in C.)

Learning Perl, fourth edition, July 2005, by Randal L. Schwartz, Tom Phoenix, and brian d foy. (This book is more useful for folks who are just beginning to program.)

To purchase these books you can use an online service such as Amazon (http://www.amazon.com) or Bookpool (http://www.bookpool.com) or SafariTechBooks (http://proquest.safaribooksonline.com). In particular, Bookpool has books available at a discount.

Additionally, there will be readings and pointers to online resources which students are expected to read.


Exam 1: 25%
Exam 2: 25%
Mini-Labs: 4%
Paper summaries: 1%
Programming Assignments: 45%

Course Policy

Class attendance is required.

Students may work in teams of one or two. Each team will have a total of three "late days" to use on programming projects. No late days allowed for mini-labs or paper summaries.

You may use the three late days on any of the programming projects without being assessed any late penalty. After you have exhausted your late days, you will be assessed a 15% penalty per day that a programming project is late (that is 15% of the total point value of the project, not 15% of your initial grade before the late penalty).

If you have a severe illness or an emergency that forces you to be away from campus, then contact cs164-staff@eecs.harvard.edu and request an extension. Extensions will be granted only for cases that were beyond your control and not predictable in advance.

You may discuss assignments with other teams, but you cannot share code. Typically, if you communicate in English with a friend, this is fine; if you are communicating in Java, Perl, etc., you have crossed the line. We will be using custom-built software that checks for similarity in assignments turned in. Consider yourself warned.

Syllabus & Schedule

Date Topic Readings Assignments
9/19 Course Overview,
What is the Internet?
Lecture 1 slides
How Stuff Works (Internet Infrastructure),
J.C.R. Licklider's two papers: http://memex.org/licklider.pdf
Lab 1 assigned.
9/21 Networking Part 1
Lecture 2 slides
Short yet interesting readings from Wikipedia on 1) Internet Protocol (IP), 2) Routing, and 3) IP Addresses.
More detail than you would need about Ethernet, on How Stuff Works.
The 1976 research paper that changed the world: Robert Metcalfe on Ethernet: Distributed Packet Switching for Local Computer Networks
Introduction to TCP/IP
9/26 Networking Part 2 (TCP/IP)
Lecture 3 slides
Same as above. Lab 1 due,
Lab 2 assigned.
9/28 Perl
Lecture 4 slides
Essential Perl Tutorial, by Nick Parlante
Some sample code for you to play with
Some Perl Exercises you can try
More exercises
More exercises
More exercises
10/3 Socket Programming
Lecture 5 slides
Socket Programming in Perl
Socket Programming in C (optional, for those of you familiar with C).
A simple echo server in Perl
Lab 2 due,
HW 1 assigned.
10/5 Misc networking topics, Services
Lecture 6 slides
Chapter 3 from WCR (Web Caching and Replication) book.
10/10 No Class (Holiday) -- No reading --
10/12 HTTP Part 1
Lecture 7 slides
Chapter 4 from WCR book.
Skim through Chapters 1-3 of CWP (Core Web Programming) book.
10/17 HTTP Part 2
Lecture 8 slides
Chapter 5 from WCR book. HW 1 due,
Lab3 assigned.
10/19 Java
Lecture 9 slides
Chapters 6-8 of CWP (Core Web Programming) book. --
10/24 HTTP Part 3
Lecture 10 slides
-- No Readings -- Lab 3 due,
HW2 assigned.
10/26 Sockets in Java, Lecture 11 slides
Exam 1 Review, Midterm Review slides
Chapter 17 of CWP book. --
10/31 Exam 1 -- No readings -- --
11/2 CGI
Lecture 12 slides
Chapters 1-6 of CGI Programming 101
Chapter 18 of CWP book.
Perl movie search script from class lecture.
11/7 CGI + Java Servlets
Lecture 13 slides
Chapter 19 of CWP book. HW 2 due
HW 3 assigned.
11/9 Servlets, JSP
Lecture 14 slides
Chapter 20 of CWP book.
Some code for you to read and understand
11/14 Perl Prep for HW 3 -- --
11/16 JSP, Security
Lecture 15 slides
-- No Readings -- --
11/21 Security
Lecture 16 slides
-- No Readings -- HW 3 due,
Lab4 assigned.
11/23 No Class -- No Readings -- --
11/28 XML and Javascript
Lecture 17 slides
Skim Chapters 23-24 of CWP book. Lab 4 due,
HW 4 assigned.
11/30 Proxy Caches
Lecture 18 slides
Chapters 7 and 9 from WCR (Web Caching and Replication book). --
12/5 Paper Discussion
On the Scale and Performance of Cooperative Web Proxy Caching, Alec Wolman, Geoffrey M. Voelker, Nitin Sharma, Neal Cardwell, Anna Karlin, Henry M. Levy, Symposium on Operating Systems Principles, 1989. --
12/7 Paper discussion. The Anatomy of a Large-scale Hypertextual Web Search Engine, Sergey Brin and Lawrence Page, WWW7: Proceedings of the Seventh International Conference on World Wide Web 7, 1998. --
12/12 Cache Consistency
Lecture 19 slides
Chapter 10 from WCR book. --
12/14 Exam 2 Review
Lecture 20 slides
-- No Readings -- --
12/15 -- This is a Thursday,
not a class day --
-- No readings -- HW 4 due.
12/19 Exam 2 -- No Readings -- --
12/21-1/2 No Class (Winter Recess) -- No Readings -- --
1/3-1/13 No Class (Reading Period) -- No Readings -- --