V22.0480-004: Web Services Architecture and Programming
Fall 2003

Course Description and Guidelines


General Information


Vijay Karamcheti (vijayk@cs.nyu.edu), 715 Broadway, Room 704


Congchun He (congchun@cs.nyu.edu), 715 Broadway, 7th Floor
Ilya Rosenberg (ilya@cs.nyu.edu), 715 Broadway, 12th Floor


Tuesdays and Thursdays, 9:30am – 10:45am
109 CIWW

Office Hours:

Instructor: Tuesdays and Thursdays, 11:00am – 1:00pm
TA(s): Congchun He: Wednesdays, 2:00pm – 4:00pm
           Ilya Rosenberg: Mondays: 4:00pm – 6:00pm

Mailing List:

To subscribe, follow instructions at 

To post to the mailing list, send email to

Web Page:

All course materials, lecture slides, and announcements will be available here. You should plan on visiting this often, as we will rarely hand out printed materials in class.


The only prerequisite for this course is V22.0202: Computer Systems Organization II

Although not an official prerequisite, you will find the course easier to handle if you taken the Honors section of V22.0202. The course assignments and project will require you to program in C# using the .NET Framework class libraries, and the Visual Studio.NET integrated development environment (IDE). You may find it easy to pick up C# if you already have some familiarity and programming experience with object-oriented languages such as Java or C++. Also, I will be assuming that you are reasonably comfortable with logging onto and using a Microsoft Windows-based environment.

I do not plan to spend any significant time in the lectures teaching you about the language or the IDE; the expectation is for you to learn what is needed for the assignments/project on your own. See the resources page for online resources to help you get started.


The current trend in the development of distributed applications favors their dynamic construction at run time by composing multiple self-contained component services. The Web Services architecture is one example of this trend, and provides facilities for describing, publishing, locating, and invoking such services over a public network such as the World Wide Web.

This advanced undergraduate course focuses on understanding the key technical concepts underlying the web services architecture both at a high level and more concretely via programming assignments. The two primary objectives of the course are to understand:

o        how distributed applications are built using the web services architecture, and the advantages/disadvantages of this approach versus other previously proposed approaches.

o        the role of technologies such as XML, SOAP, WSDL, and the emerging Web Services specifications in supporting the web services architecture.

The course will involve several programming assignments using the .NET framework (specifically the C# language, selected framework libraries, and Visual Studio.NET-integrated application construction tools), examining the construction of web services, web service clients, and intermediary components that broker connections between clients and services. A significant portion of the course grade will be determined based on a project (to be done in teams), where students will develop a large web-services based application.


There is no required textbook for the course. I have been unable to find a single book that provides the right level of treatment for the topics I intend to cover in the course. Thus, it is essential that you attend the class lectures: my lecture slides and associated discussion will hopefully provide you with enough preparation material for the exam and the assignments. You should also plan on using the mailing list extensively to clarify questions that you may have following the lecture. Whenever appropriate, I shall also supply you with handouts and/or URLs that provide additional information about the topics.

You may find it useful to buy books to (1) learn to program in the C# language, (2) use the .NET framework class libraries, and (3) navigate the Visual Studio.NET IDE environment (in that order of importance). The computing resources page has links to appropriate books. I am hesitant to recommend any of the books as being better as compared to another: you are likely to find that you will end up using only some of the information in a particular book, and that there will be information that you will need that the book does not cover. Note that you do not need to buy any books for the above: the dynamic help feature in Visual Studio.NET provides you with adequate information with sample code and pointers to online resources for more information.


o        Class: You are expected to attend all of the lectures.

o        Labs: There will be five (5) required programming assignments, due 12–15 days after they are handed out. You will work through these assignments on your own (see “Policy on Collaboration” below). The assignments will emphasize concepts as opposed to coding skills (or speed). Although they will be a fair bit of work, these labs should be fun and valuable if you get an early start, and make your work in this course a priority this semester. See the course schedule page for a high level description of the topics that these labs will cover.

o        Exams: There will be a midterm exam, but no final. Instead, I am expecting you to put in a fair bit of work into the course project.

o        Course Project: To gain a better understanding of how the different parts of the web services architecture fit together, you will develop a mock-up of the NYUHome web site (home.nyu.edu), with web services supplying each of the channels accessible through this portal. You will form sub-groups of 3 students apiece; four to five such sub-groups will form a larger group that will be responsible for all aspects of the application. The sub-groups will split up the task of coding up the server and client components of individual channels, and the group as a whole will work to integrate these individual services into a single portal, and suggest ways in which the portal behavior can be enhanced using intermediary web service components. These three pieces: (1) individual services; (2) integration of the services into a portal; and (3) use of intermediary components to enhance usability, will contribute roughly one-third apiece to the course project grade. Everybody within a sub-group will receive the same grade.

No lectures are scheduled over the last four weeks of classes to allow you to work on the project.  These lecture slots will be used as design and progress review meetings to ensure that you are making desired progress. Additional details about the project will be provided as we progress in the semester. Each group will demonstrate its application to the rest of the class during the last week of the semester.


Final grades will be computed based upon the following weights: Labs: 50% (each programming assignment contributes 10%), Midterm Exam: 20%, and Course Project: 30%.

When assigning the final grade, I will grade on the curve by looking for natural break points in the distribution of the overall scores. This means that your overall grade in the course is a function of how well or badly your peers are doing. For those students falling slightly below a cutoff, I will rely on subjective factors such as trends of improvement or decline, the nature of exam errors, and project group dynamics in deciding whether or not to assign the next higher grade.

The above being said, I think if you are worrying about grades, you are missing all the fun!

Policy on Collaboration for V22.0480-004

You are encouraged to collaborate with others in the class on all aspects of the course except the exam. The only requirement is that what you hand in should represent your own effort (or your group’s, in the case of the project). To make this more concrete, you can discuss high-level approaches that you might take to solve a particular lab problem, but the actual coding and evaluation of this approach should be your own. The class will be more productive and fun for everybody if you try and help each other out, while taking responsibility for your share of the work.

Please pay careful attention to the above requirements. The College of Arts and Sciences has very strict guidelines on how an instructor needs to deal with cheating. The first incident of cheating on the part of any student will result in a 0 for that assignment; with no exceptions. The second incident, according to CAS guidelines, will result in an F for the course, and possible expulsion from the University.