An Alternative Approach To Building Agent Itineraries

Size: px
Start display at page:

Download "An Alternative Approach To Building Agent Itineraries"

Transcription

1 An Alternative Approach To Building Agent Itineraries Russell P. Lentini, Goutham P. Rao, Jon N. Thies Programmers use commercially available agent systems, such as Voyager and Concordia, to tailor specific agent applications. The reusability of these architectures comes from the generic nature in which a programmer can define or describe an agent. These architectures differ in how they allow a user to create and program an agent. We describe how easy it is to build agent architectures by using a few simple concepts. Our goal is to enhance agent architectures by concentrating on a critical data structure called the itinerary. We claim that a flexible, generic, itinerary data structure allows greater expressive power to define application-specific agents. Looking at Agents and Itineraries The concept of itineraries is popular among many successful agent architectures. Agent architectures like IBM-Aglets, Voyager, and Oddessey use this approach. These architectures describe an itinerary as an enumeration or a list of tasks that an agent performs. We take a different approach and describe an itinerary as a meta-program: a way of programming an agent and, consequently, its goal. Overviewing a Finite State Itinerary Our concept of an agent itinerary borrows ideas from the Finite State machineña fundamental computing model. Theoretically, a Finite State machine attempts to capture the general nature of computation performed by a digital computer. Conceptually, the machine has a finite set of states, finite alphabet, and finite set of instructions. Visualize it as a simplified modern computer. It has storage that remembers its current state, and it is capable of reading input and computing the following two functions: Next State Function, which determines the next state based on current state, input symbol and simple set of instructions to map input signals, and state pairs to a new state. Output Function, which determines the machineõs output alphabet for a state. Formally, a Finite State machine is a sextuple (Fig. 1): M = [K,, O, δ s, δ o, s] Where: K is a finite set of states in which the machine can reside. is a finite set of input symbols. O is a finite set of output symbols. s is the initial state. Figure 1. The Finite State machine computes the operating program symbol based on the input symbol being scanned and the current state. The next state function, the transition function, δ s : K K is the program to the Finite State machine. It specifies for each combination of current state s K and current symbol; i, a new state; and s K: δ s (s, i) = s Finally, δ o : K O, the output function, specifies the output symbol for each state. A configuration of a Finite State machine is an instantaneous description of the machine in its computation path. A configuration specifies the current state, current input symbol the machine is scanning, and the output symbol. See references 1 and 2 for detailed information. How does a Finite State machine apply to agent itineraries? Programmers can use the machine to simulate certain computational procedures. It is a good tool to describe the general control of an algorithm responding to input. The implicitly generic nature of the transition function provides much of this power. At the same time, we describe an agentõs itinerary as a meta-language, as a way of programming an agent.

2 Meta-language is a set of commands to control an agent by specifying tasks to be performed under certain conditions. Building Agent Itineraries We start by borrowing concepts of a Finite State machine with the expectation that our meta-language has the flexibility and expressive power to describe complicated itineraries. Formally, we define a Finite State itinerary as a quadruple: I=[K,, δ, c] Where: K is a set of states in which an agent resides. The state describes the task or program that the agent executes. is a set of conditions that triggers an agent act, much like a Finite State machineõs computation path, depending on the input alphabet. The result of the evaluation of a condition occurring in real-time causes an agent to enter a state, executing the program represented by that state. c is the initial configuration of the Finite State itinerary, where a configuration is a state-condition pair (k K, σ ). In other words, a configuration is the current state of the agent and the most recent condition evaluated by the Finite State itinerary. Configurations arising during execution of the itinerary are generated in real-time. This allows the agent to react to real-time situations. δ, the transition function, is the meta-program for the agentõs itinerary, describing the transition from current to next configuration. This function is a way to program an agent to execute certain programs (specified by a state) under certain conditions. Subsequent configurations are obtained by examining the current configurationõs state and by evaluating its corresponding condition at run time. This is the fundamental difference between the Finite-State-itinerary approach and that taken by existing agent systems that use the itinerary concept. The Finite State itinerary is a data structure capable of storing a set of instructions (the transition function) that describe to the agent how to move from one configuration to another. The data structure is similar to a Finite State machine (Fig. 2). Figure 2. The program to be executed depends on the current configuration and the current real-time conditions. Any particular instance of an agent will define the following to its Finite State itinerary: The meta-program, or transition function, that will navigate the agent through various configurations. The initial configuration. The initial state of the initial configuration is spurious and not the result of any condition. The Finite State itinerary starts with the initial configuration and evaluates the initial condition specification. Evaluating a condition specification depends on real-time conditions existing around the agent (analogous to input symbols to a finite state machine). The result of the evaluation indicates current conditions. Once current conditions have been evaluated, the Finite State itinerary invokes the transition function to retrieve the next configuration in which to move. Depending on current conditions and state of the agent, the transition function returns a new state-condition specification pair. The new state configuration indicates the new state for the agent and the Finite State itinerary executes the program associated with this state. The Finite State itinerary again evaluates the condition specification of the new configuration and so continues to execute the meta-program of the agent until it reaches a final (halting) configuration. Building an Agent Framework From a Layered Architecture The following layered architecture implements an agent system (Fig. 3). Figure 3. Take a layered approach when building agent architectures.

3 At the very core is the Finite State itinerary, and functionality is added in layers. The agent layer provides an interface around the underlying system to the agent applications. A good design for the agent layer shields the application programmer from the intricacies of mobility and state transitions. Using Java to Implement the Architecture Refer to listings 1 through 6 (end of article). The listings represent the Java package finitestateitinerary. The package defines the following six components that comprise the Finite State itinerary block: The State Component: Refer to listing 1. This component generically represents the program that the itinerary executes when it reaches this state. This component is a Java abstract class; its functionality is defined in the run() method; and it is application dependent. This is consistent with the java.lan.runnable interface, which allows the program to run as a thread. It also declares states INIT and HALT, which are standard to any agent meta-program. The Condition Component: This component generically represents a condition that the agent application is configured to encounter. Its implementation is application dependent. The evaluate() method is responsible for evaluating run-time conditions and for optionally storing the current condition in the result field of this class. Listing 2 shows the Java abstract class for the condition object. In listing 7, we define a mobility condition in a separate mobile package. This is the first building block of agent mobility, and it is a good example of a condition object. The purpose of the condition is to evaluate if the agent is currently on the desired machine and to store the result of the evaluation in the result field (as java.lang.boolean). Listing 8 defines a migrate state class. The run() implementation of this class migrates the Finite State itinerary to the desired machine. The combined effect of the mobility condition and the migrate state causes the state object to run at a specified machine when the mobility condition is associated with that state object. Note that the migrate state class actually migrates the entire Finite State itinerary to the destination machine. This gives it the mobile-agent characteristic. Migration requires network communication with a machine, and this requires a daemon process at the receiving host. We defined a communication link object (listing 9). This class defines a startservice() method, which creates a server socket that is monitored for incoming connection requests. For brevity, we omitted the socket code. The methodõs implementation would receive an object using java.io ObjectInputStream. readobject(), which would read a Finite State itinerary class from another machine and then proceed to execute the Finite State itinerary from its current configuration (Java object serialization maintains state of an object). The migrate() method of this class contains code to connect with the startservice() method on another machine and then transmits a Finite State itinerary class using java.io.object OutputStream.writeObject(). See reference 9 for detailed information on object-serialization. Configuration Component: This component is a place-holder for the state and condition objects and is represented by listing 3. Transition Function Component: This component generically represents the meta-program. The actual implementation may choose a number of ways to specify a transition. This component need only return the next configuration, given the current configuration of the Finite State itinerary. The nextconfiguration() method, defined in the Transition Function interface of listing 4, does just this. This method is passed to the current configuration and is required to return the next configuration. The details of the implementation for computing the next configuration are left to the programmer. In listing 10, we define a class Simple Transition Function, which implements the interface finitestateitinerary.transition Function in a separate extensions package.

4 The implementation stores mapping that uses a java.util. Hashtable class. Refer to listing 11, where we extend the Configuration class to include a unique configuration identifier parameter. We need this identifier because we use the same State and Condition class pairs in different configurations; we need a way to distinguish among them. Our implementation of the SimpleTransitionFunction creates a unique configuration key from the current configuration identifier and the results of the current condition. This function, then, uses this key as a Hashtable key to retrieve subsequent configurations. Finite State Itinerary Component: This is the actual data structure that executes the itinerary; see listing 5 for details. During construction, it requires a transition function component and an initial configuration. The run() follows a simple logic: 1. Instruct the current configurationõs condition object to evaluate current conditions [go to step 2]. 2. Retrieve the next configuration from the transition function. Execute the program associated with the state object of this new configuration [go to step 3]. 3. Set the current configuration to be equal to the next configuration returned by the transition function [go to step 1]. Halt Component: At any point during the execution of the itinerary, a finitestateitinerary. Halt (listing 6) may be thrown, causing the itinerary to stop execution. Compare step 1 with the MobileCondition object that we defined. The evaluate() method sets its result field to false when invoked at a machine that is not the destination machine. This causes nextconfiguration() to return a configuration containing the migrate state, which causes the itinerary to be transmitted to the correct machine, where it will resume execution from its current configuration. This ensures that all states execute at the correct destination machines. The current configuration is automatically maintained because we use Java Object Serialization in CommunicationLink. Agent Component: We did not list the agent component because it is fairly straightforward to visualize an agent wrapper around the finitestateitinerary package. The finitestateitinerary.agent package would at the very least contain an agent class that encapsulates the Finite State itinerary, mobility conditions, and a custom transition function. Such a package corresponds with the notional concept of the agent paradigm, while providing a uniform and consistent interface into the underlying packages. The example we present in the next paragraph is simple and does not require this special agent class; however, building such a wrapper is essential to a complete mobile agent package. Illustrating the Finite State Itinerary To illustrate the Finite State itinerary, we show an example meta-program (listing 12). The program defines the initial configuration and the transition function necessary to implement the flow chart of the agent in Fig. 4. Figure 4. The action taken by the agent corresponds to this figure. With the power of the Finite State Itinerary, we can construct contingency plans at each step along the way. We see in Fig. 4 that the initial condition requires an itinerary to execute on ENIAC if the itinerary is to continue execution. If the itinerary is at another machine, then it migrates to ENIAC to meet the mobility condition. On ENIAC, the itinerary performs a database query. If the query is successful, then it migrates to machine HOME to report ÒSuccessful.Ó If the query is unsuccessful, then it migrates to machine HOME to report ÒFailed.Ó This meta-program has a direct mapping to the finite state automaton shown in Fig. 5. Figure 5. This finite state automaton corresponds to the meta-program of listing 12.

5 Although the program exhibits a very simple task list with simple contingencies, arbitrarily large metaprograms could be built in this fashion to map directly to their own finite state automaton. Concluding Remarks The goal of this article was to describe a new itinerary for agent-based applications. We described the itinerary as a meta-language and we defined a simple data structure to interpret the agentsõ itinerary program in terms of a transition function. An important detail left unmentioned in our example is that the communication link service (startservice()) must have already been started on the machines that the agent will visit. An enhancement would add the capability of the transition function to return more than one configuration on a call to the nextconfiguration() method. This would require a change in the run() method of the Finite State itinerary class to handle an enumeration of configurations to be returned from the nextconfiguration() method. This change represents the spawning of multiple Finite State itinerary evaluations for a given configuration, and it allows states to execute in parallel, a powerful addition to the implementation shown. In our implementation and example, we used only one condition object per configuration. However, more than one condition object could be applied to a configuration.

6 // Listing 1 FILE Condition.java * The Turing Itinerary calls upon this class. On reaching a * particular configuration, the Turing Itinerary will execute the code * in the associated Condition so that the Condition is satisfied. public abstract class Condition { /* This will hold the value of the result of evaluating this condition public Object result = null; * This method causes an evaluation of the current conditions. The * result of the evaluation is critical in selecting the current state * from the transition function. It is similar to a finite state * machine reading in the current input symbol. It returns true if * the finite state itinerary is to continue running the meta-program * or false if a final or unsatisfiable condition has been reached. public abstract void evaluate() throws Halt; // Listing 2 FILE State.java * This class is an encapsulation of the program that must be run by * the Turing Itinerary when it is in a particular configuration and the * configuration's condition has been satisfied. The entry point is the * run method. The application may chose to run as a thread. public abstract class State { /* INIT state is the initial state representation of the finite * state machine. public static final State INIT = new State() { public void run() { ; /* HALT state is the final state representation of the finite * state machine public static final State HALT = new State() { public void run() throws Halt { throw new Halt(); ; /* Applications must implement this method for functionality public abstract void run() throws Halt; // Listing 3 FILE Configuration.java * This class defines the state and condition objects of any particular * configuration of the machine. public class Configuration { public State state; public Condition condition;

7 // Listing 4 FILE TransitionFunction.java * The application must implement the TransitionFunction class to return * the next configuration. public interface TransitionFunction { public Configuration nextconfiguration(configuration configuration); // Listing 5 FILE FiniteStateItinerary.java * The run method of this class actually starts running the meta-program. * It begins with the initial configuration, calls the evaluate method, * and depending on the result, either continues execution of the * meta-program or terminates. The initial state is a spurious state * and is never executed by the itinerary. public class FiniteStateItinerary implements Serializable { public FiniteStateItinerary(TransitionFunction transitionfunction, Configuration configuration) { this.transitionfunction = transitionfunction; this.configuration = configuration; public void run() { try { /* Loop while the current condition specifies that the itinerary * should continue evaluation. while (true) { if (configuration.condition!= null) { configuration.condition.evaluate(); /* Get the next configuration and hence the corresponding * state to move into. configuration = transitionfunction. nextconfiguration(configuration); /* Run the program associated with the state object. configuration.state.run(); catch (Halt halt) { /* At this point, either final condition or an unsatisfiable * condition has been encountered, or the machine was halted. // Listing 6 FILE Halt.java public class Halt extends Throwable {

8 // Listing 7 FILE finitestateitinerary/mobility/mobilecondition.java package finitestateitinerary.mobility; * This implementation of the Condition object provides the mobile nature * to agent applications. When executed by the Finite State itinerary, this * condition compares the machine that it is executing on to the required machine. * If they are the same, it stores a TRUE in the result field, otherwise it stores * a FALSE. The meta-program uses this result to decide if a migration is required. public class MobileCondition extends Condition implements Serializable { public MobileCondition(InetAddress destination, FiniteStateItinerary itinerary) { this.destination = destination; public void evaluate() { if (InetAddress.getLocalHost().equals(destination)) { result = new Boolean(true); else { result = new Boolean(false); // Listing 8 FILE finitestateitinerary/mobility/migratetask.java package finitestateitinerary.mobility; * This state causes the entire finite state itinerary to be sent to the * destination machine via the CommunicationLink, where the finite state * itinerary will resume execution. This state then halts the execution of * the itinerary on the current machine by halting the current thread. public class MigrateState extends State { public MigrateState(InetAddress destination, FiniteStateItinerary fsitinerary) { this.destination = destination; this.fsitinerary = fsitinerary; * This run method is implemented to migrate the finitestateitinerary * that owns this state, to a new machine public void run() throws Halt { /* Migrate this instance of finitestateitinerary. CommunicationLink.migrate(destination, fsitinerary); /* Stop the local execution of this instance of finitestateitinerary * since it is now running on a new machine throw new Halt(); // Listing 9 FILE finitestateitinerary/mobility/communicationlink.java package finitestateitinerary.mobility; * For a machine to be able to write a serialized object over a socket to * another machine, we need a daemon process running at that (receiving) * machine. This class provides the essentials to start the daemon process * to receive Finite State itineraries and execute them from whatever state they * are currently in. It also provides the service to send itineraries to a * receiving process. public class CommunicationLink { public static void startservice() { /* communication details to create a server socket wait for * connection requests. For every request, launch a thread that * reads the incoming FiniteStateItinerary object and runs it. public static void migrate(inetaddress destination, FiniteStateItinerary fsitinerary) { /* Communication details for 'writing' an itinerary to a machine. * This code requires making a socket connection with the destination * daemon process, started by the startservice method on destination

9 // Listing 10 FILE finitestateitinerary/extensions/simpletransitionfunction.java package finitestateitinerary.extensions; * This class implements a very simple transition function. The user of this * class explicitly specifies the next configuration for each configuration * object. The mappings are stored in a hashtable. When the finite state * itinerary requests the next transition, it computes a Hashtable key by * using the current configurationõs unique identifier (SimpleConfiguration.uniqueID) * and the current condition's result (Condition.result). This class then computes * the next configuration by keying into a hashtable using this newly computed key. public class SimpleTransitionFunction implements TransitionFunction { public void addtransition(configuration from, Configuration to) { transitionmap.put(from, to); public Configuration nextconfiguration(configuration currentconfiguration) { String key = ((SimpleConfiguration)currentConfiguration).uniqueID + "_" + ((currentconfiguration.condition == null)? null : currentconfiguration.condition.result); return (Configuration) transitionmap.get(key); // Listing 11 FILE finitestateitinerary/extensions/simpleconfiguration.java package finitestateitinerary.extensions; * An extension to the Configuration class is needed because we will be * using the same states in many different configurations in our example * application. We will need to be able to distinguish between configurations * that use the same state and condition objects. This can be done by * introducing a unique identifier in every configuration class public class SimpleConfiguration extends Configuration { /* A unique ID for every state is required so that two configurations * that use the same state class do not interfere in the * TransitionFunction class public Object uniqueid = null; public SimpleConfiguration(String uniqueid, State state, Condition condition) { this.uniqueid = uniqueid; this.state = state; this.condition = condition;

10 // Listing 12 FILE meta-program.pgm // This is the finite state itinerary meta program for performing a persistent // database query on a machine named ENIAC and reporting the results // to a machine named HOME. The initial configuration is listed first, // followed by the transition function. // It is assumed that this file will be processed by the application to // produce the corresponding itinerary using the SimpleTransitionFunction. // The following meta-program uses a notation where the left hand side // of a rule indicates the current configuration and the right hand side // indicates the parameters to the constructor of the SimpleConfiguration // class. In this way, this meta-program describes the transition function // to create to the application that is parsing this file. // INIT initial_configuration = ("INIT", finitestateitinerary.init(), finitestateitinerary.mobility.mobilitycondition(eniac)) transition_function = { // We are already on ENIAC from the initial state, so move to the // query configuration. ("INIT_TRUE") => ("CONFIG_0", application.query(), application.querycondition()) // We are on the wrong machine, so migrate to ENIAC. ("INIT_FALSE") => ("CONFIG_1", finitestateitinerary.mobility.migratestate(eniac), finitestateitinerary.mobility.mobilitycondition(eniac)) // If we were able to migrate to ENIAC, perform the query ("CONFIG_1_TRUE") => ("CONFIG_0", application.query(), application.querycondition()) // Try to migrate to ENIAC persistently ("CONFIG_1_FALSE") => ("CONFIG_1", finitestateitinerary.mobility.migratestate(eniac), finitestateitinerary.mobility.mobilitycondition(eniac)) // If the results of the query are ok, then migrate to HOME to // report a successful operation. ("CONFIG_0_TRUE") => ("CONFIG_2", finitestateitinerary.mobility.migratestate(home), finitestateitinerary.mobility.mobilitycondition(home)) // If the results of the query are not ok, then migrate to HOME to // report a failed operation. ("CONFIG_0_FALSE") => ("CONFIG_3", finitestateitinerary.mobility.migratestate(home), finitestateitinerary.mobility.mobilitycondition(home)) // If we are at HOME from CONFIG_2, report a successful operation ("CONFIG_2_TRUE") => ("CONFIG_4", application.reportresult("success"), null) // Try to migrate to HOME persistently from CONFIG_2 ("CONFIG_2_FALSE" => ("CONFIG_2", finitestateitinerary.mobility.migratestate(home), finitestateitinerary.mobility.mobilitycondition(home)) // If we are at HOME from CONFIG_3, report a successful operation ("CONFIG_3_TRUE") => ("CONFIG_5", application.reportresult("failed"), null) // Try to migrate to HOME persistently from CONFIG_3 ("CONFIG_3_FALSE" => ("CONFIG_3", finitestateitinerary.mobility.migratestate(home), finitestateitinerary.mobility.mobilitycondition(home)) // HALT ("CONFIG_4_null") // HALT ("CONFIG_5_null") => ("HALT", finitestateitinerary.halt(), null) => ("HALT", finitestateitinerary.halt(), null)

11 References 1. Papadimitrou, Christos M., Computational Complexity, ISBN , Gersting, Judith L,. Mathematical Structures For Computer Science, ISBN , Gamma, E., Helm, R., Johnson, R., and Vlissides, J Design Patterns: Elements of Reusable Object-Oriented Software Reading, Mass.: Addison Wesley Longman, Inc. 4. Mitsubishi Electric Information Technology Center America, Horizon Systems Laboratory. Concordia White Paper IBM Tokyo Research Lab. Aglets API ObjectSpace, Inc., Voyager White Paper Lentini, R., Rao, G., Thies, J., Kay, J., EMAA: An Extendable Mobile Agent Architecture. Fifteenth National Conference on Artificial Intelligence (AAAI-98) Workshop on Software Tools for Developing Agents, Technical Report WS July 27, Madison, WI. 8. Bigus, J. Constructing Intelligent Agents with Java. Wiley Computer Publishing Java Object Serialization Specification

Rapid Application Development Using Agent Itinerary Patterns

Rapid Application Development Using Agent Itinerary Patterns Rapid Application Development Using Agent Itinerary Patterns Daria Chacón, John McCormick, Susan McGrath, and Craig Stoneking Lockheed Martin Advanced Technology Laboratories 1 Federal Street A&E 3W Camden,

More information

for (i=1; i<=100000; i++) { x = sqrt (y); // square root function cout << x+i << endl; }

for (i=1; i<=100000; i++) { x = sqrt (y); // square root function cout << x+i << endl; } Ex: The difference between Compiler and Interpreter The interpreter actually carries out the computations specified in the source program. In other words, the output of a compiler is a program, whereas

More information

for (i=1; i<=100000; i++) { x = sqrt (y); // square root function cout << x+i << endl; }

for (i=1; i<=100000; i++) { x = sqrt (y); // square root function cout << x+i << endl; } Ex: The difference between Compiler and Interpreter The interpreter actually carries out the computations specified in the source program. In other words, the output of a compiler is a program, whereas

More information

Microthread. An Object Behavioral Pattern for Managing Object Execution. 1.0 Intent. 2.0 Also Known As. 3.0 Classification. 4.0 Motivation/Example

Microthread. An Object Behavioral Pattern for Managing Object Execution. 1.0 Intent. 2.0 Also Known As. 3.0 Classification. 4.0 Motivation/Example Microthread An Object Behavioral Pattern for Managing Object Execution Joe Hoffert and Kenneth Goldman {joeh,kjg}@cs.wustl.edu Distributed Programing Environments Group Department of Computer Science,

More information

A Mobile Agent-Based Framework for Active Networks. Ichiro Satoh

A Mobile Agent-Based Framework for Active Networks. Ichiro Satoh A Mobile -Based Framework for Active Networks Ichiro Satoh Department of Information Sciences, Ochanomizu University 2-1-1 Otsuka Bunkyo-ku Tokyo 112-8610, Japan E-mail: ichiro@is.ocha.ac.jp IEEE Systems,

More information

Using a Declarative Chain of Responsibility Pattern to Write Robust, Self- Correcting Distributed Applications

Using a Declarative Chain of Responsibility Pattern to Write Robust, Self- Correcting Distributed Applications Using a Declarative Chain of Responsibility Pattern to Write Robust, Self- Correcting Distributed Applications Dan Stieglitz Principal Consultant Stieglitech, LLC dan@stieglitech.com Abstract Businesses

More information

Behavioral Design Patterns Used in Data Structures Implementation

Behavioral Design Patterns Used in Data Structures Implementation Behavioral Design Patterns Used in Data Structures Implementation Niculescu Virginia Department of Computer Science Babeş-Bolyai University, Cluj-Napoca email address: vniculescu@cs.ubbcluj.ro November,

More information

School of Informatics, University of Edinburgh

School of Informatics, University of Edinburgh CS1Bh Solution Sheet 4 Software Engineering in Java This is a solution set for CS1Bh Question Sheet 4. You should only consult these solutions after attempting the exercises. Notice that the solutions

More information

Implementing Object Equivalence in Java Using the Template Method Design Pattern

Implementing Object Equivalence in Java Using the Template Method Design Pattern Implementing Object Equivalence in Java Using the Template Method Design Pattern Daniel E. Stevenson and Andrew T. Phillips Computer Science Department University of Wisconsin-Eau Claire Eau Claire, WI

More information

Java for Programmers Course (equivalent to SL 275) 36 Contact Hours

Java for Programmers Course (equivalent to SL 275) 36 Contact Hours Java for Programmers Course (equivalent to SL 275) 36 Contact Hours Course Overview This course teaches programmers the skills necessary to create Java programming system applications and satisfies the

More information

Symbol Tables Symbol Table: In computer science, a symbol table is a data structure used by a language translator such as a compiler or interpreter, where each identifier in a program's source code is

More information

Java 2. Course Outcome Summary. Western Technical College. Course Information. Course History. Course Competencies

Java 2. Course Outcome Summary. Western Technical College. Course Information. Course History. Course Competencies Western Technical College 10152155 Java 2 Course Outcome Summary Course Information Description Career Cluster Instructional Level Total Credits 4.00 Total Hours 90.00 The goal as programmers, is to create

More information

Object-Oriented Programming

Object-Oriented Programming Object-Oriented Programming 3/18/14 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser, Wiley, 2014 Object-Oriented

More information

Control Message. Abstract. Microthread pattern?, Protocol pattern?, Rendezvous pattern? [maybe not applicable yet?]

Control Message. Abstract. Microthread pattern?, Protocol pattern?, Rendezvous pattern? [maybe not applicable yet?] Control Message An Object Behavioral Pattern for Managing Protocol Interactions Joe Hoffert and Kenneth Goldman {joeh,kjg@cs.wustl.edu Distributed Programing Environments Group Department of Computer Science,

More information

More on Design. CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson

More on Design. CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson More on Design CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson Outline Additional Design-Related Topics Design Patterns Singleton Strategy Model View Controller Design by

More information

Does this program exist? Limits of computability. Does this program exist? A helper function. For example, if the string program is

Does this program exist? Limits of computability. Does this program exist? A helper function. For example, if the string program is Does this program exist? For example, if the string program is Limits of computability public void abc(string s) { if( s == "abc" ) { print "Hello world!"; } else { print "Whatever"; }} then test called

More information

ECS 120 Lesson 16 Turing Machines, Pt. 2

ECS 120 Lesson 16 Turing Machines, Pt. 2 ECS 120 Lesson 16 Turing Machines, Pt. 2 Oliver Kreylos Friday, May 4th, 2001 In the last lesson, we looked at Turing Machines, their differences to finite state machines and pushdown automata, and their

More information

Towards a Java Framework for Knowledge Representation and Inference

Towards a Java Framework for Knowledge Representation and Inference Towards a Java Framework for Knowledge Representation and Inference Adrian GIURCA University of Craiova, Faculty of Mathematics and Computer Science Email: giurca@inf.ucv.ro Abstract. The Knowledge Representation

More information

Lecture 20. Java Exceptional Event Handling. Dr. Martin O Connor CA166

Lecture 20. Java Exceptional Event Handling. Dr. Martin O Connor CA166 Lecture 20 Java Exceptional Event Handling Dr. Martin O Connor CA166 www.computing.dcu.ie/~moconnor Topics What is an Exception? Exception Handler Catch or Specify Requirement Three Kinds of Exceptions

More information

Introduction to Object-Oriented Programming

Introduction to Object-Oriented Programming 1/9 Introduction to Object-Oriented Programming Conception et programmation orientées object, B. Meyer, Eyrolles Object-Oriented Software Engineering, T. C. Lethbridge, R. Laganière, McGraw Hill Design

More information

Generating Functional Implementations of Finite State Automata in C# 3.0

Generating Functional Implementations of Finite State Automata in C# 3.0 Workshop on Generative Technologies 2008 Generating Functional Implementations of Finite State Automata in C# 3.0 Mihály Biczó Department of Programming Languages and Compilers Eötvös Loránd University

More information

Basics of Java: Expressions & Statements. Nathaniel Osgood CMPT 858 February 15, 2011

Basics of Java: Expressions & Statements. Nathaniel Osgood CMPT 858 February 15, 2011 Basics of Java: Expressions & Statements Nathaniel Osgood CMPT 858 February 15, 2011 Java as a Formal Language Java supports many constructs that serve different functions Class & Interface declarations

More information

CS21 Decidability and Tractability

CS21 Decidability and Tractability CS21 Decidability and Tractability Lecture 9 January 26, 2018 Outline Turing Machines and variants multitape TMs nondeterministic TMs Church-Turing Thesis decidable, RE, co-re languages Deciding and Recognizing

More information

Object oriented programming. Instructor: Masoud Asghari Web page: Ch: 7

Object oriented programming. Instructor: Masoud Asghari Web page:   Ch: 7 Object oriented programming Instructor: Masoud Asghari Web page: http://www.masses.ir/lectures/oops2017sut Ch: 7 1 In this slide We follow: https://docs.oracle.com/javase/tutorial/index.html Trail: Essential

More information

C++ INTERFACE CLASSES STRENGTHENING ENCAPSULATION

C++ INTERFACE CLASSES STRENGTHENING ENCAPSULATION C++ INTERFACE CLASSES STRENGTHENING ENCAPSULATION Separating a class s interface from its implementation is fundamental to good quality object oriented software design/programming. However C++ (when compared

More information

Designing Robust Classes

Designing Robust Classes Designing Robust Classes Learning Goals You must be able to:! specify a robust data abstraction! implement a robust class! design robust software! use Java exceptions Specifications and Implementations

More information

A web application serving queries on renewable energy sources and energy management topics database, built on JSP technology

A web application serving queries on renewable energy sources and energy management topics database, built on JSP technology International Workshop on Energy Performance and Environmental 1 A web application serving queries on renewable energy sources and energy management topics database, built on JSP technology P.N. Christias

More information

Comp 249 Programming Methodology Chapter 9 Exception Handling

Comp 249 Programming Methodology Chapter 9 Exception Handling Comp 249 Programming Methodology Chapter 9 Exception Handling Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia University, Montreal, Canada These slides has been extracted,

More information

Coalition formation in multi-agent systems an evolutionary approach

Coalition formation in multi-agent systems an evolutionary approach Proceedings of the International Multiconference on Computer Science and Information Technology pp. 30 ISBN 978-83-6080-4-9 ISSN 896-7094 Coalition formation in multi-agent systems an evolutionary approach

More information

Virtualians.ning.pk. 2 - Java program code is compiled into form called 1. Machine code 2. native Code 3. Byte Code (From Lectuer # 2) 4.

Virtualians.ning.pk. 2 - Java program code is compiled into form called 1. Machine code 2. native Code 3. Byte Code (From Lectuer # 2) 4. 1 - What if the main method is declared as private? 1. The program does not compile 2. The program compiles but does not run 3. The program compiles and runs properly ( From Lectuer # 2) 4. The program

More information

An Architecture for Next Generation Mobile Agent Infrastructure

An Architecture for Next Generation Mobile Agent Infrastructure An Architecture for Next Generation Mobile Agent Infrastructure Ichiro Satoh Department of Information Sciences, Ochanomizu University / Japan Science and Technology Corporation Abstract This paper presents

More information

ECE 122 Engineering Problem Solving with Java

ECE 122 Engineering Problem Solving with Java ECE 122 Engineering Problem Solving with Java Introduction to Programming for ECE Lecture 1 Course Overview Welcome! What is this class about? Java programming somewhat software somewhat Solving engineering

More information

Recursively Enumerable Languages, Turing Machines, and Decidability

Recursively Enumerable Languages, Turing Machines, and Decidability Recursively Enumerable Languages, Turing Machines, and Decidability 1 Problem Reduction: Basic Concepts and Analogies The concept of problem reduction is simple at a high level. You simply take an algorithm

More information

Motivation was to facilitate development of systems software, especially OS development.

Motivation was to facilitate development of systems software, especially OS development. A History Lesson C Basics 1 Development of language by Dennis Ritchie at Bell Labs culminated in the C language in 1972. Motivation was to facilitate development of systems software, especially OS development.

More information

25.1 Introduction Façade Design Pattern Identification Problem Structure Participants...

25.1 Introduction Façade Design Pattern Identification Problem Structure Participants... Department of Computer Science Tackling Design Patterns Chapter 25: Façade Design Pattern Copyright c 2016 by Linda Marshall and Vreda Pieterse. All rights reserved. Contents 25.1 Introduction.................................

More information

Topics. Java arrays. Definition. Data Structures and Information Systems Part 1: Data Structures. Lecture 3: Arrays (1)

Topics. Java arrays. Definition. Data Structures and Information Systems Part 1: Data Structures. Lecture 3: Arrays (1) Topics Data Structures and Information Systems Part 1: Data Structures Michele Zito Lecture 3: Arrays (1) Data structure definition: arrays. Java arrays creation access Primitive types and reference types

More information

Variants of Turing Machines

Variants of Turing Machines November 4, 2013 Robustness Robustness Robustness of a mathematical object (such as proof, definition, algorithm, method, etc.) is measured by its invariance to certain changes Robustness Robustness of

More information

Patterns for Asynchronous Invocations in Distributed Object Frameworks

Patterns for Asynchronous Invocations in Distributed Object Frameworks Patterns for Asynchronous Invocations in Distributed Object Frameworks Patterns for Asynchronous Invocations in Distributed Object Frameworks Markus Voelter Michael Kircher Siemens AG, Corporate Technology,

More information

Certification In Java Language Course Course Content

Certification In Java Language Course Course Content Introduction Of Java * What Is Java? * How To Get Java * A First Java Program * Compiling And Interpreting Applications * The JDK Directory Structure Certification In Java Language Course Course Content

More information

Lecture 5: The Halting Problem. Michael Beeson

Lecture 5: The Halting Problem. Michael Beeson Lecture 5: The Halting Problem Michael Beeson Historical situation in 1930 The diagonal method appears to offer a way to extend just about any definition of computable. It appeared in the 1920s that it

More information

Using AOP to build complex data centric component frameworks

Using AOP to build complex data centric component frameworks Using AOP to build complex data centric component frameworks Tom Mahieu, Bart Vanhaute, Karel De Vlaminck, Gerda Janssens, Wouter Joosen Katholieke Universiteit Leuven Computer Science Dept. - Distrinet

More information

Design Aspects of the Standard I/O Library. Design with Java:

Design Aspects of the Standard I/O Library. Design with Java: Design Aspects of the Standard I/O Library Design with Java: QUOIN 1208 Massachusetts Avenue, Suite 3 Cambridge, Massachusetts 02138 tel: 617.492.6461 fax: 617.492.6461 email: info@quoininc.com web: www.quoininc.com

More information

Synchronization SPL/2010 SPL/20 1

Synchronization SPL/2010 SPL/20 1 Synchronization 1 Overview synchronization mechanisms in modern RTEs concurrency issues places where synchronization is needed structural ways (design patterns) for exclusive access 2 Overview synchronization

More information

Reflective Design Patterns to Implement Fault Tolerance

Reflective Design Patterns to Implement Fault Tolerance Reflective Design Patterns to Implement Fault Tolerance Luciane Lamour Ferreira Cecília Mary Fischer Rubira Institute of Computing - IC State University of Campinas UNICAMP P.O. Box 676, Campinas, SP 3083-970

More information

DESIGN PATTERN - INTERVIEW QUESTIONS

DESIGN PATTERN - INTERVIEW QUESTIONS DESIGN PATTERN - INTERVIEW QUESTIONS http://www.tutorialspoint.com/design_pattern/design_pattern_interview_questions.htm Copyright tutorialspoint.com Dear readers, these Design Pattern Interview Questions

More information

A Commit Scheduler for XML Databases

A Commit Scheduler for XML Databases A Commit Scheduler for XML Databases Stijn Dekeyser and Jan Hidders University of Antwerp Abstract. The hierarchical and semistructured nature of XML data may cause complicated update-behavior. Updates

More information

Evictor. Prashant Jain Siemens AG, Corporate Technology Munich, Germany

Evictor. Prashant Jain Siemens AG, Corporate Technology Munich, Germany 1 Evictor Prashant Jain Prashant.Jain@mchp.siemens.de Siemens AG, Corporate Technology Munich, Germany Evictor 2 Evictor The Evictor 1 pattern describes how and when to release resources such as memory

More information

Coordinator. Example. Prashant Jain Corporate Technology, Siemens AG Munich, Germany

Coordinator. Example. Prashant Jain Corporate Technology, Siemens AG Munich, Germany Coordinator Prashant Jain pjain@gmx.net Corporate Technology, Siemens AG Munich, Germany The Coordinator design pattern describes how to maintain system consistency by coordinating completion of tasks

More information

James Newkirk

James Newkirk Private Interface Class Structural James Newkirk newkirk@oma.com Intent Provide a mechanism that allows specific classes to use a non-public subset of a class interface without inadvertently increasing

More information

A Type Graph Model for Java Programs

A Type Graph Model for Java Programs A Type Graph Model for Java Programs Arend Rensink and Eduardo Zambon Formal Methods and Tools Group, EWI-INF, University of Twente PO Box 217, 7500 AE, Enschede, The Netherlands {rensink,zambon}@cs.utwente.nl

More information

Motivation was to facilitate development of systems software, especially OS development.

Motivation was to facilitate development of systems software, especially OS development. A History Lesson C Basics 1 Development of language by Dennis Ritchie at Bell Labs culminated in the C language in 1972. Motivation was to facilitate development of systems software, especially OS development.

More information

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this

More information

14.1 Encoding for different models of computation

14.1 Encoding for different models of computation Lecture 14 Decidable languages In the previous lecture we discussed some examples of encoding schemes, through which various objects can be represented by strings over a given alphabet. We will begin this

More information

CPS122 Lecture: Design Patterns Last revised March 7, 2017

CPS122 Lecture: Design Patterns Last revised March 7, 2017 CPS122 Lecture: Design Patterns Last revised March 7, 2017 Objectives 1. To introduce and illustrate the idea of design patterns 2. To introduce some key design patterns students have used or will use:

More information

The SIGCSE 2001 Maze Demonstration Program

The SIGCSE 2001 Maze Demonstration Program The SIGCSE 2001 Maze Demonstration Program Richard Rasala, Jeff Raab, Viera K. Proulx College of Computer Science Northeastern University Boston MA 02115 {rasala,jmr,vkp@ccs.neu.edu Abstract This article

More information

SSJ User s Guide. Package stat Tools for Collecting Statistics. Version: December 21, 2006

SSJ User s Guide. Package stat Tools for Collecting Statistics. Version: December 21, 2006 SSJ User s Guide Package stat Tools for Collecting Statistics Version: December 21, 2006 CONTENTS 1 Contents Overview........................................ 2 StatProbe........................................

More information

CPS122 Lecture: Design Patterns Last revised March 20, 2012

CPS122 Lecture: Design Patterns Last revised March 20, 2012 CPS122 Lecture: Design Patterns Last revised March 20, 2012 Objectives 1. To introduce and illustrate the idea of design patterns 2. To introduce some key design patterns students have used or will use:

More information

The ATL Postmaster: A System for Agent Collaboration and Information Dissemination

The ATL Postmaster: A System for Agent Collaboration and Information Dissemination The ATL Postmaster: A System for Agent Collaboration and Information Dissemination Jennifer Kay, Julius Etzl, Goutham Rao, and Jon Thies Lockheed Martin Advanced Technology Laboratories 1 Federal Street

More information

Assoc. Prof. Marenglen Biba. (C) 2010 Pearson Education, Inc. All rights reserved.

Assoc. Prof. Marenglen Biba. (C) 2010 Pearson Education, Inc. All rights reserved. Assoc. Prof. Marenglen Biba Exception handling Exception an indication of a problem that occurs during a program s execution. The name exception implies that the problem occurs infrequently. With exception

More information

Java Primer. CITS2200 Data Structures and Algorithms. Topic 2

Java Primer. CITS2200 Data Structures and Algorithms. Topic 2 CITS2200 Data Structures and Algorithms Topic 2 Java Primer Review of Java basics Primitive vs Reference Types Classes and Objects Class Hierarchies Interfaces Exceptions Reading: Lambert and Osborne,

More information

Investigating F# as a development tool for distributed multi-agent systems

Investigating F# as a development tool for distributed multi-agent systems PROCEEDINGS OF THE WORKSHOP ON APPLICATIONS OF SOFTWARE AGENTS ISBN 978-86-7031-188-6, pp. 32-36, 2011 Investigating F# as a development tool for distributed multi-agent systems Extended abstract Alex

More information

1.1 Jadex - Engineering Goal-Oriented Agents

1.1 Jadex - Engineering Goal-Oriented Agents 1.1 Jadex - Engineering Goal-Oriented Agents In previous sections of the book agents have been considered as software artifacts that differ from objects mainly in their capability to autonomously execute

More information

Java How to Program, 10/e. Copyright by Pearson Education, Inc. All Rights Reserved.

Java How to Program, 10/e. Copyright by Pearson Education, Inc. All Rights Reserved. Java How to Program, 10/e Copyright 1992-2015 by Pearson Education, Inc. All Rights Reserved. Data structures Collections of related data items. Discussed in depth in Chapters 16 21. Array objects Data

More information

Goals of Lecture. Lecture 27: OO Design Patterns. Pattern Resources. Design Patterns. Cover OO Design Patterns. Pattern Languages of Programming

Goals of Lecture. Lecture 27: OO Design Patterns. Pattern Resources. Design Patterns. Cover OO Design Patterns. Pattern Languages of Programming Goals of Lecture Lecture 27: OO Design Patterns Cover OO Design Patterns Background Examples Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2001 April 24, 2001 Kenneth

More information

Data Mappings in the Model-View-Controller Pattern 1

Data Mappings in the Model-View-Controller Pattern 1 Data Mappings in the Model-View-Controller Pattern 1 Martin Rammerstorfer and Hanspeter Mössenböck University of Linz, Institute of Practical Computer Science {rammerstorfer,moessenboeck@ssw.uni-linz.ac.at

More information

Dynamic Instantiation-Checking Components

Dynamic Instantiation-Checking Components Dynamic Instantiation-Checking Components Nigamanth Sridhar Electrical and Computer Engineering Cleveland State University 318 Stilwell Hall, 2121 Euclid Ave Cleveland OH 44113 n.sridhar1@csuohio.edu ABSTRACT

More information

CS 231 Data Structures and Algorithms, Fall 2016

CS 231 Data Structures and Algorithms, Fall 2016 CS 231 Data Structures and Algorithms, Fall 2016 Dr. Bruce A. Maxwell Department of Computer Science Colby College Course Description Focuses on the common structures used to store data and the standard

More information

Program Correctness and Efficiency. Chapter 2

Program Correctness and Efficiency. Chapter 2 Program Correctness and Efficiency Chapter 2 Chapter Objectives To understand the differences between the three categories of program errors To understand the effect of an uncaught exception and why you

More information

Teiid Designer User Guide 7.5.0

Teiid Designer User Guide 7.5.0 Teiid Designer User Guide 1 7.5.0 1. Introduction... 1 1.1. What is Teiid Designer?... 1 1.2. Why Use Teiid Designer?... 2 1.3. Metadata Overview... 2 1.3.1. What is Metadata... 2 1.3.2. Editing Metadata

More information

Come & Join Us at VUSTUDENTS.net

Come & Join Us at VUSTUDENTS.net Come & Join Us at VUSTUDENTS.net For Assignment Solution, GDB, Online Quizzes, Helping Study material, Past Solved Papers, Solved MCQs, Current Papers, E-Books & more. Go to http://www.vustudents.net and

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 20 GoF Design Patterns Behavioral Department of Computer Engineering Sharif University of Technology 1 GoF Behavioral Patterns Class Class Interpreter: Given a language,

More information

Theory of Languages and Automata

Theory of Languages and Automata Theory of Languages and Automata Chapter 3- The Church-Turing Thesis Sharif University of Technology Turing Machine O Several models of computing devices Finite automata Pushdown automata O Tasks that

More information

Agent-Environment for Small Mobile Devices

Agent-Environment for Small Mobile Devices -Environment for Small Mobile Devices Thomas Strang and Melanie Meyer {firstname.lastname}@dlr.de German Aerospace Center (DLR), Site Oberpfaffenhofen Institute of Communications and Navigation (KN-S)

More information

Mobile Agent. Summer Project Report. Indian Institute of Technology Kanpur Department of Computer Science and Engineering

Mobile Agent. Summer Project Report. Indian Institute of Technology Kanpur Department of Computer Science and Engineering Mobile Agent Summer Project Report Indian Institute of Technology Kanpur Department of Computer Science and Engineering B V V Srirajdutt Sourav Khandelwal Prateek Mishra 1 Abstract In computer science,

More information

Formal languages and computation models

Formal languages and computation models Formal languages and computation models Guy Perrier Bibliography John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman - Introduction to Automata Theory, Languages, and Computation - Addison Wesley, 2006.

More information

Typecasts and Dynamic Dispatch. Dynamic dispatch

Typecasts and Dynamic Dispatch. Dynamic dispatch Typecasts and Dynamic Dispatch Abstract Data Type (ADT) Abstraction Program Robustness Exceptions D0010E Lecture 8 Template Design Pattern Review: I/O Typecasts change the type of expressions as interpreted

More information

In this lab we will practice creating, throwing and handling exceptions.

In this lab we will practice creating, throwing and handling exceptions. Lab 5 Exceptions Exceptions indicate that a program has encountered an unforeseen problem. While some problems place programmers at fault (for example, using an index that is outside the boundaries of

More information

Training topic: OCPJP (Oracle certified professional Java programmer) or SCJP (Sun certified Java programmer) Content and Objectives

Training topic: OCPJP (Oracle certified professional Java programmer) or SCJP (Sun certified Java programmer) Content and Objectives Training topic: OCPJP (Oracle certified professional Java programmer) or SCJP (Sun certified Java programmer) Content and Objectives 1 Table of content TABLE OF CONTENT... 2 1. ABOUT OCPJP SCJP... 4 2.

More information

UWAgents User s Manual (version 1.01)

UWAgents User s Manual (version 1.01) UWAgents User s Manual (version 1.01) Munehiro Fukuda 1 Koichi Kashiwagi 2 Eric Nelson 1,2 Duncan Smith 1 1 Computing & Software Systems, University of Washington, Bothell, 2 Computer Science, Ehime University,

More information

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY JOURNAL OF OBJECT TECHNOLOGY Online at http://www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2010 Vol. 9, No. 1, January-February 2010 A Modern, Compact Implementation of the Parameterized

More information

Disconnected Operation in a Mobile Computation System

Disconnected Operation in a Mobile Computation System Disconnected Operation in a Mobile Computation System Marco T. de O. Valente, Roberto da S. Bigonha, Mariza A. da S. Bigonha, Antonio A.F. Loureiro Department of Computer Science University of Minas Gerais

More information

What is Serialization?

What is Serialization? Serialization 1 Topics What is Serialization? What is preserved when an object is serialized? Transient keyword Process of serialization Process of deserialization Version control Changing the default

More information

Concurrency Control with Java and Relational Databases

Concurrency Control with Java and Relational Databases Concurrency Control with Java and Relational Databases Sérgio Soares and Paulo Borba Informatics Center Federal University of Pernambuco Recife, PE, Brazil scbs,phmb @cin.ufpe.br Abstract As web based

More information

Handout 9: Imperative Programs and State

Handout 9: Imperative Programs and State 06-02552 Princ. of Progr. Languages (and Extended ) The University of Birmingham Spring Semester 2016-17 School of Computer Science c Uday Reddy2016-17 Handout 9: Imperative Programs and State Imperative

More information

Weiss Chapter 1 terminology (parenthesized numbers are page numbers)

Weiss Chapter 1 terminology (parenthesized numbers are page numbers) Weiss Chapter 1 terminology (parenthesized numbers are page numbers) assignment operators In Java, used to alter the value of a variable. These operators include =, +=, -=, *=, and /=. (9) autoincrement

More information

RADX - Rapid development of web applications in XML

RADX - Rapid development of web applications in XML RADX - Rapid development of web applications in XML José Paulo Leal and Jorge Braz Gonçalves DCC-FC, University of Porto R. Campo Alegre, 823 4150 180 Porto, Portugal zp@dcc.fc.up.pt, jgoncalves@ipg.pt

More information

B16 Object Oriented Programming

B16 Object Oriented Programming B16 Object Oriented Programming Michael A. Osborne mosb@robots.ox.ac.uk http://www.robots.ox.ac.uk/~mosb/teaching.html#b16 Hilary 2013 This course will introduce object-oriented programming (OOP). It will

More information

Scenario-based Synthesis of Annotated Class Diagrams in UML

Scenario-based Synthesis of Annotated Class Diagrams in UML Scenario-based Synthesis of Annotated Class Diagrams in UML Petri Selonen and Tarja Systä Tampere University of Technology, Software Systems Laboratory, P.O.Box 553, FIN-33101 Tampere, Finland {pselonen,tsysta}@cs.tut.fi

More information

Exception Handling Alternatives (Part 2)

Exception Handling Alternatives (Part 2) Exception Handling Alternatives (Part 2) First published in Overload 31 Copyright 1999 Detlef Vollmann Resume In part 1, several alternative mechanisms for handling exceptional events were presented. One

More information

Part (04) Introduction to Programming

Part (04) Introduction to Programming Part (04) Introduction to Programming Dr. Ahmed M. ElShafee 1 Dr. Ahmed ElShafee, ACU : Summer 2014, Introduction to CS 1 EVOLUTION To write a program for a computer, we must use a computer language. A

More information

Monitoring System for Distributed Java Applications

Monitoring System for Distributed Java Applications Monitoring System for Distributed Java Applications W lodzimierz Funika 1, Marian Bubak 1,2, and Marcin Smȩtek 1 1 Institute of Computer Science, AGH, al. Mickiewicza 30, 30-059 Kraków, Poland 2 Academic

More information

Abstractions in Multimedia Authoring: The MAVA Approach

Abstractions in Multimedia Authoring: The MAVA Approach Abstractions in Multimedia Authoring: The MAVA Approach Jürgen Hauser, Jing Tian Institute of Parallel and Distributed High-Performance Systems (IPVR) University of Stuttgart, Breitwiesenstr. 20-22, D

More information

Testing Exceptions with Enforcer

Testing Exceptions with Enforcer Testing Exceptions with Enforcer Cyrille Artho February 23, 2010 National Institute of Advanced Industrial Science and Technology (AIST), Research Center for Information Security (RCIS) Abstract Java library

More information

Exceptions. Errors and Exceptions. Dealing with exceptions. What to do about errors and exceptions

Exceptions. Errors and Exceptions. Dealing with exceptions. What to do about errors and exceptions Errors and Exceptions Exceptions An error is a bug in your program dividing by zero going outside the bounds of an array trying to use a null reference An exception is a problem whose cause is outside

More information

Design Patterns. Gunnar Gotshalks A4-1

Design Patterns. Gunnar Gotshalks A4-1 Design Patterns A4-1 On Design Patterns A design pattern systematically names, explains and evaluates an important and recurring design problem and its solution Good designers know not to solve every problem

More information

Make sure you have the latest Hive trunk by running svn up in your Hive directory. More detailed instructions on downloading and setting up

Make sure you have the latest Hive trunk by running svn up in your Hive directory. More detailed instructions on downloading and setting up GenericUDAFCaseStudy Writing GenericUDAFs: A Tutorial User-Defined Aggregation Functions (UDAFs) are an excellent way to integrate advanced data-processing into Hive. Hive allows two varieties of UDAFs:

More information

Cover Page. The handle holds various files of this Leiden University dissertation

Cover Page. The handle   holds various files of this Leiden University dissertation Cover Page The handle http://hdl.handle.net/1887/22891 holds various files of this Leiden University dissertation Author: Gouw, Stijn de Title: Combining monitoring with run-time assertion checking Issue

More information

LarvaLight User Manual

LarvaLight User Manual LarvaLight User Manual LarvaLight is a simple tool enabling the user to succinctly specify monitors which trigger upon events of an underlying Java system, namely method calls and returns. If the events

More information

Concurrent Objects and Linearizability

Concurrent Objects and Linearizability Chapter 3 Concurrent Objects and Linearizability 3.1 Specifying Objects An object in languages such as Java and C++ is a container for data. Each object provides a set of methods that are the only way

More information

Dynamic Adaptability of Services in Enterprise JavaBeans Architecture

Dynamic Adaptability of Services in Enterprise JavaBeans Architecture 1. Introduction Dynamic Adaptability of Services in Enterprise JavaBeans Architecture Zahi Jarir *, Pierre-Charles David **, Thomas Ledoux ** zahijarir@ucam.ac.ma, {pcdavid, ledoux}@emn.fr (*) Faculté

More information