An Introductory Course on Service-Oriented Computing for High Schools

Introduction Computer science education in high schools can be traced back to the 1980s when the procedural programming language Pascal was identified as the language of choice. In the 1990s, when the object-oriented computing paradigm dominated the computing industry, many high schools started teaching the object-oriented programming languages C++ and then Java. A computing paradigm refers to the set of concepts, principles, and methods of expressing computation that allows human command on one hand and allows the computer to efficiently execute on the other hand. The major computing paradigms that have dominated computer science education and software development are: * Imperative computing developed in the 1950s. FORTRAN was the flagship language of this approach, which dominated software development in the 50s and 60s and extended even into 70s. * Procedural computing developed during the 1970s and 80s, which emphasized modular software design. Programming languages Algol, Pascal, and C represent this approach. * Object-Oriented Computing (OOC) developed after the 80s, with an emphasis on abstraction and code reuse. Representative object-oriented programming languages include C++, Java, and C#. * Service-Oriented Computing (SOC), also known as Service-Oriented Architecture (SOA), started in late 1990s. Java and C# are the two major programming languages on which SOC is built. However, SOC uses existing services to compose applications. The key to enable pervasive code reuse is the standardization of service interfaces leading to platform-independent code reuse. Incorporated with the Internet and search engines, service discovery is vital to SOC (Chen & Tsai, 2008; Eposito, 2004; Heinemann & Rau, 2003; Singh & Huhns, 2005). SOC has been described as a method to build distributed applications more effectively. According to Singh and Huhns (2005), "Many of the key techniques now being applied in building services and service-based applications were developed in the areas of databases, distributed computing, artificial intelligence, and multi-agent systems. These are generally established bodies of work that can be readily adapted for service composition." Their book on SOC describes, in part, how services can be used to facilitate simpler kinds of composition. SOC allows the user to engage a service so that the relevant computational themes are "peer-to-peer computing, messaging, transactions (traditional, nested, and extended or relaxed), workflow, [and] business processes." These computational themes allow for ready-transfer into a high school or university classroom. Phelps and Busby (2007) define SOC as providing "well-defined business functions as services, which are made available to multiple applications through standard protocols." They claim that SOC is a fundamental shift in the way applications are built. This shift requires a new way of thinking about processes and the subsequent role that applications play. SOC became important around 2000-2001 when all the major computer companies, including BEA, HP, IBM, Intel, Microsoft, Oracle, and SAP agreed on a set of standard interfaces, which make it possible for software developed in any language and on any platform to communicate and cooperate with each other. Furthermore, SOC is component-based and introduces a high-level of abstraction. It has the potential to become the first computing course that shifts the course content from the syntax of programming languages to the problem solving process. In spite of significant progress in SOC applications and its potential being taught as the first computing course, SOC education is currently lagging. Johnson and Liber (2008) discuss a model called Personal Learning Environment (PLE) "as a practical intervention concerning the organization of technology in education. …