[ Home | Lab | New Students | Courses | Research | Publications | Activities ]

Service-Oriented Computing

Munindar P. Singh


Course Description

Concepts, theories, and techniques for Web services. This course examines architectures for Web applications based on the classical publish, find, and bind triangle, but formulates it at a higher level. It considers sophisticated approaches for the description, discovery, and engagement of Web services. This course emphasizes Web service composition. Key topics include semantics, transactions, processes, agents, quality of service, compliance, and trust.

Learning Outcomes

Upon completion of this course, students will be able to do the following.

Textbooks and software

Motivation

This course addresses the concepts and techniques of service-oriented computing with a grounding in Web services. It introduces the basic Web services standards and have students apply them in programming exercises. However, the main emphasis of this course is on the concepts that underlie the syntactic details of the standards.

Service-oriented computing has become an important paradigm for information technology architectures and applications. The basic standards and existing literature on service-oriented computing have been focused on the lower-level, infrastructural matters. But as these become well-understood, emphasis has shifted to deeper foundational topics. In particular, in emerging practice, the classical Web services triangle of publish, find, and bind is being upgraded to sophisticated descriptions, selection, and engagement. This upgrade requires the introduction of techniques for information and process semantics, specifically, conceptual modeling, ontologies, matchmaking, messaging, transactions, and processes.

Service-oriented computing requires a strong open systems perspective. For example, services in general are not invoked but are engaged, meaning that the interactions one has with them are quite unlike method invocations and are better modeled as parts of extended conversations. Protocols, in this sense, replace programming interfaces as an abstraction for programming. Similarly, selecting the right service is more than simply looking up a directory with a method signature, and involves considerations of application-level trust.

Some of the key techniques for service-oriented computing were developed in the areas of databases, distributed computing, artificial intelligence, and multiagent systems, and can be readily adapted for service composition. Other techniques must be developed from scratch, so as to address the essential openness and scale of Web applications that previous work did not need to address.

This course seeks to discuss the key concepts for service-oriented computing. Its intent is to formulate the foundational concepts of services, to evaluate existing approaches, and to present existing techniques from other areas that can be adopted for services, and lastly to introduce emerging techniques for addressing challenges that are unique to services.

This course is self-contained, and gives the essential background for anyone planning to learn about and contribute to the principles and applications of services.

Topics

The following are the main topics of this course. The tentative schedule indicates the estimated number of class days for each topic.

  1. Introduction
  2. Web Services Architectures and Standards
  3. Enterprise architectures
  4. Problems and challenges
  5. Description: Modeling and representation
  6. Engagement
  7. Collaboration
  8. Selection
  9. Engineering
  10. Synthesis

Grading

+/- grades will assigned. There will be a fair amount of work - please plan to spend about 8 hours (plus time in class) each week.

Component 750 campus 750 EOL 450
Exam 35% 40% 30%
Programming 50% 50% 50%
Homework 10% 10% 10%
Participation5% 0% 10%

There will be six programming assignments, which will jointly add up to 50% of the course grade. Their weights are based on their expected complexity. I may change the weights but I won't change their relative complexity.

Assignment Weight
Connect to WS 10
Develop simple mashup 10
RSS mashup 15
BPEL + ESB 20
Jess; JADE; RDF; OWL 15
CICS transactions 20

CSC 450 and CSC 750 campus students must do the above assignments in teams of two. There is no extra credit for working alone. The teams can be different for each assignment. Each member of each team must contribute roughly equally to each assignment, and should understand the entire assignment.

CSC 750 EOL students are strongly encouraged to work in teams as well. You can find prospective team members through the message boards; specify your skills, backgrounds, and constraints. However, EOL students who cannot work in a team may work solo. Those EOL students who work solo may drop one of the assignments.

Prerequisites

The course is mostly self-contained for computer science students. The main thing you need is maturity in thinking about subtle concepts. Experience with conceptual modeling in databases or software helps; familiarity with database transactions is also valuable.

The following are the official prerequisites. They are helpful but not required.

From long experience, I have learned that the material in CSC 226, in particular, is essential for courses such as this one. Here is a (partial) list of topics that will be assumed: elementary set theory, relations, partial orders, functions, concept of a theorem, propositional logic, and predicate logic.

I recommend you brush up on these topics if you aren't comfortable with them. These topics are covered in CSC 226: Applied Discrete Mathematics. You may review Chapters 1 to 6 from the following book, which is sometimes used as the CSC 226 textbook:

Kenneth H. Rosen, Discrete Mathematics and its Applications, McGraw-Hill, fourth edition, 1999. ISBN 0-07-289905-0.