G22.3033-008 Web Services and Applications

Spring 2003
Class: Tuesdays, 5-7pm, WWH 102
Office hours: Thursdays, 4-5pm

Robert Grimm
rgrimm@cs.nyu.edu

[ Overview | Schedule | Assignments | Resources ]

Overview

Web Services and Applications explores how to build a web where content is dynamic and different services interact directly with each other. This course is motivated by computing industry's current interest in web services (witness Microsoft's .NET). However, while exploring the relevant standards (SOAP, WSDL, and UDDI), the course is not limited to them and tries to be a more general exploration of web technologies.

More specifically, the goals for the course are:

Course Components
To meet these goals, the course has three components:

In other words, the course is a combination of a research seminar and a systems building course.

Reading assignments mostly cover research papers. Each reading assignment needs to be completed before the corresponding lecture. Students also need to produce a written summary for each assigned paper (approximately one paragraph long) and post it before 10 a.m. on the day of the corresponding lecture. Summaries should address (1) the main idea expressed in each paper, (2) the innovations (if any) described in the paper, (3) the student's criticisms (regarding soundness, methodology, elegance, etc.), and (4) possible research directions.

Summaries are submitted by emailing them in plain-text format to g22_3033_008_sp03-readings@cs.nyu.edu. Make sure the subject specifies the paper title. The archive of all summaries is here.

Programming assignments are substantial, written mostly in Java, and typically build on each other. In the course of the semester, students build the complete web services infrastructure (notably, the HTTP and SOAP engines) from scratch.

All programming assignments are performed in teams of four (4) students, with two students implementing the server and two students implementing the client. Students are strongly encouraged to use pair programming as their development style (also see: Extreme Programming: A gentle introduction), though they are not required to do so. Each team member periodically evaluates the other team members (with three evaluations throughout the semester).

There are no exams.

Prerequisites
Proficiency in Java, including how to write socket-based and multi-threaded code, is required. Experience with building large software systems and the ability to read and digest research papers are highly helpful.

Grading Policy
50% programming assignments, 30% reading assignments, 20% class participation.

Collaboration Policy
Students are encouraged to discuss class topics and readings with each other. However, each student must write his/her reading summary individually. Students in different groups may help each other with general programming questions and interoperability testing. However, students in different groups must not exchange code or use code from outside sources (such as the Internet). The java.net.URL and java.net.URLConnection classes in the Java SDK are off-limits.

Schedule

Introduction 1/21/03

Slides: PowerPoint, PDF

Required readings:

Further readings:
HTTP 1/28/03

Slides: PowerPoint, PDF

Required readings:

Further readings:
Building Fast Servers 2/4/03

Slides: PowerPoint, PDF

Required readings:

Further readings:
Clusters 2/11/03

Slides: PowerPoint, PDF

Required readings:

Further readings:
  • Thomas E. Anderson, David E. Culler, David A. Patterson, and the NOW Team. A Case for NOW (Networks of Workstations). IEEE Micro, 15(1):54-64, February 1995.

  • Armando Fox, Steven D. Gribble, Yatin Chawathe, Eric A. Brewer, and Paul Gauthier. Cluster-Based Scalable Network Services. Proceedings of the 16th ACM Symposium on Operating Systems Principles, pages 78-91, Saint-Malo, France, October 1997.

  • Vivek S. Pai, Mohit Aron, Gaurav Banga, Michael Svendsen, Peter Druschel, Willy Zwaenepoel, and Erich Nahum. Locality-Aware Request Distribution in Cluster-Based Network Servers. Proceedings of 8th International Conference on Architectural Support for Programming Languages and Operating systems, pages 205-216, San Jose, California, 1998.

Caching 2/18/03

Slides: PowerPoint, PDF

Required readings:

Further readings:
Content: XML 2/25/03

Slides: PowerPoint, PDF

Required readings:

Further readings:
Content: Multimedia 3/4/03

Slides: PowerPoint, PDF

Stefan Saroiu's OSDI talk slides: PowerPoint, PDF

Required readings:

  • Stefan Saroiu, Krishna P. Gummadi, Richard J. Dunn, Steven D. Gribble, and Henry M. Levy. An Analysis of Internet Content Delivery Systems. Proceedings of the 5th Symposium on Operating System Design and Implementation, pages 315-327, Boston, Massachusetts, December 2002.

  • Steven McCanne, Van Jacobson, and Martin Vetterli. Receiver-driven layered multicast. Proceedings of the ACM SIGCOMM '96 Conference on Applications, Technologies, Architectures, and Protocols for Computer Communications, pages 117-130, Palo Alto, California, 1996.

Small Devices 3/11/03

Slides: PowerPoint, PDF

Required readings:

Further readings:
  • Jason Hill, Robert Szewczyk, Alec Woo, Seth Hollar, David Culler, and Kristofer Pister. System Architecture Directions for Networked Sensors. Proceedings of the 9th International Conference on Architectural Support for Programming Languages and Operating Systems, pages 93-104, Cambridge, Massachusetts, November 2000.

Spring Break 3/18/03

No class! Relax by watching MTV's coverage of spring break...

RPC 3/25/03

Slides: PowerPoint, PDF

Required readings:

Further readings:
  • Brian N. Bershad, Thomas E. Anderson, Edward D. Lazowska, and Henry M. Levy. Lightweight Remote Procedure Call. ACM Transactions on Computer Systems, 8(1):37-55, February 1990.

  • Andrew Birrell, Greg Nelson, Susan Owicki, and Edward Wobber. Network Objects. SRC Research Report 115, December 1995.

  • Leendert van Doorn, Martin Abadi, Mike Burrows, and Edward Wobber. Secure Network Objects. Proceedings of the 1996 IEEE Symposium on Security and Privacy, pages 211-221, Oakland, California, May 1996.

  • Sun Microsystems. Java Remote Method Invocation Specification (revision 1.8). Sun Microsystems, 2002.

Security 4/1/03

Slides: PowerPoint, PDF

Required readings:

  • Alex C. Snoeren, Craig Partridge, Luis A. Sanchez, Christine E. Jones, Fabrice Tchakountio, Beverly Schwartz, Stephen T. Kent, and W. Timothy Strayer. Single-Packet IP Traceback. IEEE/ACM Transactions on Networking, 10(6), December 2002.

  • Stuart Staniford, Vern Paxson, and Nicholas Weaver. How to 0wn the Internet in Your Spare Time. Proceedings of the 11th USENIX Security Symposium, San Francisco, California, August 2002.

  • David Moore, Vern Paxson, Stefan Savage, Colleen Shannon, Stuart Staniford, and Nicholas Weaver. The Spread of the Sapphire/Slammer Worm. Technical report, January 2003.

Further readings:
Descriptions 4/8/03

Slides: PowerPoint, PDF

Required readings:

  • Ethan Cerami. Web Services Essentials. Chapter 6, WSDL Essentials.

  • Tim Bray. What is RDF? xml.com, January 2001.

  • Anupriya Ankolekar, Mark Burstein, Jerry R. Hobbs, Ora Lassila, David Martin, Drew McDermott, Sheila A. McIlraith, Srini Narayanan, Massimo Paolucci, Terry Payne, and Katia Sycara. DAML-S: Web Service Description for the Semantic Web. Proceedings of the First International Semantic Web Conference, pages 348-363, Sardinia, Italy, June 2002.

Further readings:
Discovery 4/15/03

Slides: PowerPoint, PDF

Required readings:

Active Everything 4/22/03

Slides: PowerPoint, PDF

Required readings:

Pulling Back: REST vs. SOAP 4/29/03

Required readings:
  • Tim Berners-Lee, James Hendler, and Ora Lassila. The Semantic Web. Scientific American, 284(5):34-43, May 2001.

  • Paul Prescod. Roots of the REST/SOAP Debate. Proceedings of Extreme Markup Languages, Montréal, Canada, August 2002.

Assignments

Remember that all programming assignments are written in Java (without using java.net.URL and java.net.URLConnection) by groups of at least four students (two students for the server and two students for the client).

For each assignment, each group needs to:

Assignments:

  1. HTTP/1.0. Implement an HTTP/1.0 server and client. Both server and client should support the full HTTP/1.0 protocol. The client need not provide a user interface (i.e., do not implement a browser), rather it should test the performance of the server (e.g., request latency and throughput), confirming that the server meets its design goals. For well-formed POST requests, the server should simply consume the provided data (and immediately discard it) and return a status code of 202 (Accepted). Due 2/11/03 before class.

  2. HTTP/1.1. Extend your HTTP/1.0 server and client to support persistent connections, pipelining, and digest authentication from the HTTP/1.1 specification. Compare the performance between your HTTP/1.0 and (partial) HTTP/1.1 implementations. Compare the performance between another group's HTTP/1.0 and HTTP/1.1 implementations. Due 2/25/03 before class.

  3. XML to s-expressions. Extend your HTTP/1.1 server to provide a service that converts XML into s-expressions. Details on this assignment can be found here. In addition to your report, you need to hand in a file containing your service's output for this XML document. Due 3/11/03 before class.

  4. SOAP Calculator. Extend your HTTP/1.1 server to provide a calculator service that is accessible through SOAP. Details on this assignment can be found here. Due 4/8/03 before class.

  5. Your Own Application. Implement a web application or service of your own chosing (see slides for the 4/8/03 class for some application ideas). Your application must either be based on a web proxy (accessible through regular HTTP) or a SOAP server and client. As for the previous assignments, you must build on your own HTTP/1.1 codebase. Unlike previous assignments, you do not need to perform interoperability testing and you do not need to hand in a report. Rather, you are expected to demo your application on 4/29/03 in class. You should give a short presentation and then actually demonstrate your running application. Your presentation must have at least three slides, one providing an application overview (what does it do), one providing an implementation overview (how does it work?), and one describing any interesting lessons learned (what did you get out of it?). You should plan on spending 15 minutes on your entire demo (including presentation). A one paragraph description of your application is due 4/15/03 before class. Due 4/29/03 in class.

Resources

Books

Mailing Lists

Authorized Code

Axis Webcams

Standards