[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

In keeping with major industry trends, this course will emphasize reactive programming, incorporating asynchronous messaging and actor-programming concepts and constructs in class discussions and programming projects.

This course addresses the concepts and techniques of service-oriented computing. Services have become an important paradigm for information technology architectures and applications. The basic standards and existing literature on Web services 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, discovery, and engagement. This upgrade requires the introduction of techniques for information and process semantics, specifically, conceptual modeling, ontologies, matchmaking, messaging, transactions, and processes.

Services require 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, discovering the right service is more than simply looking up a directory with a method signature, and involves considerations of business contracts and application-level trust.

The course introduces leading standards (some in detail) that are widely employed in industry for software architecture and development, with or without services. These include RDF, OWL, UML Sequence Diagrams, IEEE FIPA, AMQP, and BPMN.

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. Problems and challenges
  3. Description: Modeling and representation
  4. Engagement
  5. Collaboration
  6. Selection
  7. Synthesis

Grading

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

Component 750 campus 750 EOL 450
Exam 25 30 20
Programming 60 60 60
Homework 5 5 5
Class Participation 5 0 10
Message Board Participation 5 5 5
Total 100 100 100

The following programming assignments jointly add up to the programming component of the course grade in the above table. The weights of the assignments are based on their expected complexity. I may change the weights as the semester progresses.

Assignment Weight
Android and Play 10
Actors (Akka) getting started 20
Information sharing 35
Business processes and protocols) 35

Prerequisites

The course is mostly self-contained for computer science students. The main prerequisite 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 any more.

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

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, 7th edition, 2012. ISBN 0-07-289905-0.