Declare Your Language: Dynamic SemanticsEelco Visser
This document provides an overview of DynSem, a domain-specific language for specifying the dynamic semantics of programming languages. It discusses the design goals of DynSem in being concise, modular, executable, portable, and high-performance. The document then provides an example DynSem specification for the semantics of a simple language with features like arithmetic, booleans, functions, and mutable variables. It describes how DynSem specifications are organized into modules that can be composed to define the semantics.
Specifying compatible sharing in data structuresAsankhaya Sharma
Automated verification of programs that utilize data structures with intrinsic sharing is a challenging problem. We develop an extension to separation logic that can reason about aliasing in heaps using a notion of compatible sharing. Compatible sharing can model a variety of fine grained sharing and aliasing scenarios with concise specifications. Given these specifications, our entailment procedure enables fully automated verification of a number of challenging programs manipulating data structures with non-trivial sharing. We benchmarked our prototype with examples derived from practical algorithms found in systems code, such as those using threaded trees and overlaid data structures.
NSC #2 - D2 06 - Richard Johnson - SAGEly AdviceNoSuchCon
The document discusses automated testing techniques for software, including fuzzing and concolic testing. Fuzzing involves generating random inputs to exercise a program, while concolic testing uses symbolic execution to track data flows and observe how program logic is influenced by inputs. Concolic testing can generate inputs that cover more program states but requires instrumenting the code to analyze execution.
The document discusses mutating and testing tests. It introduces the concept of mutation analysis, where tests are evaluated by seeding real bugs into the code and checking if the tests detect these bugs. The document provides an example of applying mutation analysis to a factorial function code and test cases. It finds bugs in the test cases like weak oracles and missing test inputs. The document also compares the Pit mutation testing tool with the Descartes tool, finding Descartes generates fewer but coarser-grained mutants, making it more scalable for large projects.
Java is a cross-platform language originally developed by James Gosling at Sun Microsystems. It enables writing programs for many operating systems using a C/C++-like syntax but with a simpler object model and fewer low-level facilities. Java programs are compiled to bytecode that can run on any Java Virtual Machine (JVM) regardless of computer architecture. Common Java development tools include Eclipse and NetBeans integrated development environments.
In this chapter we will discuss exceptions in the object-oriented programming and in Java in particular. We will learn how to handle exceptions using the try-catch construct, how to pass them to the calling methods and how to throw standard or our own exceptions using the throw construct.
This document provides an overview of Java collections basics, including arrays, lists, strings, sets, and maps. It defines each type of collection and provides examples of how to use them. Arrays allow storing fixed-length sequences of elements and can be accessed by index. Lists are like resizable arrays that allow adding, removing and inserting elements using the ArrayList class. Strings represent character sequences and provide various methods for manipulation and comparison. Sets store unique elements using HashSet or TreeSet. Maps store key-value pairs using HashMap or TreeMap.
This document outlines Unit 2 of a course on algorithmic problem solving. It covers the problem solving process, algorithms, control structures like sequence, selection, and repetition, and examples of writing pseudocode algorithms. It also explains Euclid's algorithm for finding the greatest common divisor of two integers through step-by-step examples and pseudocode.
In this chapter we will learn about arrays as a way to work with sequences of elements of the same type. We will explain what arrays are, how we declare, create, instantiate and use them. We will examine one-dimensional and multidimensional arrays. We will learn different ways to iterate through the array, read from the standard input and write to the standard output. We will give many example exercises, which can be solved using arrays and we will show how useful they really are.
MuVM: Higher Order Mutation Analysis Virtual Machine for CSusumu Tokumoto
Mutation analysis is a method for evaluating the effectiveness of a test suite by seeding faults artificially and measuring the fraction of seeded faults detected by the test suite. The major limitation of mutation analysis is its lengthy execution time because it involves generating, compiling and running large numbers of mutated programs, called mutants. Our tool MuVM achieves a significant runtime improvement by performing higher order mutation analysis using four techniques, metamutation, mutation on virtual machine, higher order split-stream execution, and online adaptation technique. In order to obtain the same behavior as mutating the source code directly, metamutation preserves the mutation location information which may potentially be lost during bitcode compilation and optimization. Mutation on a virtual machine reduces the compilation and testing cost by compiling a program once and invoking a process once. Higher order split-stream execution also reduces the testing cost by executing common parts of the mutants together and splitting the execution at a seeded fault. Online adaptation technique reduces the number of generated mutants by omitting infeasible mutants. Our comparative experiments indicate that our tool is significantly superior to an existing tool, an existing technique (mutation schema generation), and no-split-stream execution in higher order mutation.
EdSketch: Execution-Driven Sketching for JavaLisa Hua
Sketching is a relatively recent approach to program synthesis, which has shown much promise. The key idea in sketching is to allow users to write partial programs that have “holes” and provide test harnesses or reference implementations, and let synthesis tools create program fragments that the holes such that the resulting complete program has the desired functionality. Traditional solutions to the sketching problem perform a translation to SAT and employ CEGIS. While e ective for a range of programs, when applied to real applications, such translation-based approaches have a key limitation: they require either translating all relevant libraries that are invoked directly or indirectly by the given sketch – which can lead to impractical SAT problems – or creating models of those libraries – which can require much manual effort.
is paper introduces execution-driven sketching, a novel approach for synthesis of Java programs using a backtracking search that is commonly employed in so ware model checkers. e key novelty of our work is to introduce effective pruning strategies to effciently explore the actual program behaviors in presence of libraries and to provide a practical solution to sketching small parts of real-world applications, which may use complex constructs of modern languages, such as reflection or native calls. Our tool EdSketch embodies our approach in two forms: a stateful search based on the Java PathFinder model checker; and a stateless search based on re-execution inspired by the VeriSoft model checker. Experimental results show that EdSketch’s performance compares well with the well-known SAT-based Sketch system for a range of small but complex programs, and moreover, that EdSketch can complete some sketches that require handling complex constructs.
This is a rapid fire talk that outline some of the issues around multithreaded code, some of the tools you can use to test it and how best to spend your resources doing so
The document provides examples of various Java programming concepts like displaying messages, using control structures like if-else, for loops, methods, constructors, access specifiers, static variables and more. It shows how to write simple Java programs to print messages, integers, use conditional and looping statements. It also explains concepts like default and parameterized constructors, static and non-static methods, different access specifiers and their usage. The examples help learn how different Java features can be used to develop programs with classes, objects and methods.
19. Java data structures algorithms and complexityIntro C# Book
In this chapter we will compare the data structures we have learned so far by the performance (execution speed) of the basic operations (addition, search, deletion, etc.). We will give specific tips in what situations what data structures to use.
TMPA-2017: Generating Cost Aware Covering Arrays For Free Iosif Itkin
TMPA-2017: Tools and Methods of Program Analysis
3-4 March, 2017, Hotel Holiday Inn Moscow Vinogradovo, Moscow
Generating Cost Aware Covering Arrays For Free
Mustafa Kemal Tas, Hanefi Mercan, Gülşen Demiröz, Kamer Kaya, Cemal Yilmaz, Sabanci University
For video follow the link: https://youtu.be/Wkdd4A0rRjE
Would like to know more?
Visit our website:
www.tmpaconf.org
www.exactprosystems.com/events/tmpa
Follow us:
https://www.linkedin.com/company/exactpro-systems-llc?trk=biz-companies-cym
https://twitter.com/exactpro
Here we are going to take a look how to use for loop, foreach loop and while loop. Also we are going to learn how to use and invoke methods and how to define classes in Java programming language.
This document discusses parameters and return values in Java methods. It provides examples of parameterized methods that take int, double, and String parameters. These include methods that draw lines and boxes of stars of varying lengths/sizes. The document also covers returning values from methods, including examples using Math class methods. Common errors around not storing return values are discussed.
This document discusses steady-state error analysis for unity feedback systems. It defines the position, velocity, and acceleration static error constants, which determine the steady-state error for step, ramp, and parabolic inputs respectively. The system type, defined by the number of integrations in the forward path (n=0 for Type 0, n=1 for Type 1, etc.), also determines the steady-state error formula. For a unit step input, the steady-state error equals the position constant divided by the input. For a unit ramp input, the steady-state error equals the velocity constant divided by the slope of the input ramp. For a parabolic input, the steady-state error equals the acceleration constant divided by
40+ examples of user defined methods in java with explanationHarish Gyanani
The document discusses user defined methods in Java and provides examples of simple programs that utilize methods. Some key points covered include:
- Advantages of using methods to organize and reuse code.
- Examples of methods that perform basic operations like addition, average calculation, data type conversions, etc.
- Passing arrays to methods and returning arrays from methods.
- Differences between functions and methods in Java.
- Overloading methods by changing the number and type of arguments.
- Implementing methods to calculate operations like LCM, HCF, prime number checks, etc.
Compressed Sensing using Generative Modelkenluck2001
This document summarizes Kenneth Emeka Odoh's presentation on using generative models for compressed sensing. It introduces compressed sensing and describes how generative models like variational autoencoders (VAEs) and generative adversarial networks (GANs) can be used to solve the underdetermined linear systems that arise in compressed sensing. The document also compares VAEs to standard autoencoders and discusses how generative models may require fewer training examples due to regularization imposing structure on the problem.
TMPA-2015: Implementing the MetaVCG Approach in the C-light SystemIosif Itkin
Alexei Promsky, Dmitry Kondtratyev, A.P. Ershov Institute of Informatics Systems, Novosibirsk
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
This presentation describes the results published in the following paper published in the Journal INFORMATION AND SOFTWARE TECHNOLOGY
TITLE: A Large Scale Empirical Comparison of State-of-the-art Search-based Test Case Generators
AUTHORS: Annibale Panichella, Fitsum Kifetew, Paolo Tonella
ABSTRACT: Context: Replication studies and experiments form an important foundation in advancing scientific research. While their prevalence in Software Engineering is increasing, there is still more to be done. Objective: This article aims to extend our previous replication study on search-based test generation techniques by performing a large-scale empirical comparison with further techniques from state of the art. Method: We designed a comprehensive experimental study involving six techniques, a benchmark composed of 180 non-trivial Java classes, and a total of 21,600 independent executions. Metrics regarding the effectiveness and efficiency of the techniques were collected and analyzed by means of statistical methods. Results: Our empirical study shows that single-target approaches are generally outperformed by multi-target approaches, while within the multi-target approaches, DynaMOSA/MOSA, which are based on many-objective optimization, outperform the others, in particular for complex classes. Conclusion: The results obtained from our large-scale empirical investigation con rm what has been reported in previous studies, while also highlighting striking differences and novel observations. Future studies, on different benchmarks and considering additional techniques, could further reinforce and extend our findings.
Recent years have seen the emergence of several static analysis techniques for reasoning about programs. This talk presents several major classes of techniques and tools that implement these techniques. Part of the presentation will be a demonstration of the tools.
Dr. Subash Shankar is an Associate Professor in the Computer Science department at Hunter College, CUNY. Prior to joining CUNY, he received a PhD from the University of Minnesota and was a postdoctoral fellow in the model checking group at Carnegie Mellon University. Dr. Shankar also has over 10 years of industrial experience, mostly in the areas of formal methods and tools for analyzing hardware and software systems.
- An interface in Java is a blueprint of a class that defines static constants and abstract methods. Interfaces are used to achieve abstraction and multiple inheritance in Java. A class implements an interface by providing method bodies for the abstract methods defined in the interface. Interfaces allow for loose coupling between classes.
- The main reasons to use interfaces are for abstraction, to support multiple inheritance functionality, and to achieve loose coupling between classes. An interface is declared using the interface keyword and contains only method signatures, not method bodies. A class implementing an interface must implement all of its methods.
- Interfaces can extend other interfaces, requiring implementing classes to provide implementations for all methods in the inherited interfaces as well. Object cloning uses the clone()
The document discusses Java operators, arrays, packages, and Javadoc comments. It includes code examples demonstrating the use of arithmetic, unary, and relational operators. It also shows how to declare and initialize single and multi-dimensional arrays. Examples of user-defined packages and importing packages are provided. Finally, it briefly explains what Javadoc comments are and their purpose.
Automated Repair of Feature Interaction Failures in Automated Driving SystemsLionel Briand
The document describes an approach called ARIEL for automatically repairing feature interaction failures in automated driving systems. ARIEL uses a customized genetic programming algorithm that leverages fault localization weighted by test failure severity and generates patches through threshold changes and condition reordering. An evaluation on two industrial case studies found ARIEL outperformed baselines in fully repairing the systems within 16 hours. Domain experts judged the synthesized patches to be valid, understandable, useful and superior to what could be produced manually.
This document provides an overview of a tutorial on event processing under uncertainty. It begins with an introduction that discusses how most real-world data contains some level of uncertainty and an illustrative example of using event processing to detect crimes from uncertain video surveillance and citizen reports. It then outlines the topics to be covered, including representing and modeling different types of uncertainty, and extending event processing techniques to handle uncertain event data.
Debs 2010 context based computing tutorialOpher Etzion
The document discusses context-aware computing and its utilization in event-based systems. It provides an agenda for a tutorial that covers context in general, context categories including temporal, spatial, state and segmentation contexts, and context implementation in practice and event processing. The document also provides examples of different types of contexts and how context can be composed from multiple contexts.
This document outlines Unit 2 of a course on algorithmic problem solving. It covers the problem solving process, algorithms, control structures like sequence, selection, and repetition, and examples of writing pseudocode algorithms. It also explains Euclid's algorithm for finding the greatest common divisor of two integers through step-by-step examples and pseudocode.
In this chapter we will learn about arrays as a way to work with sequences of elements of the same type. We will explain what arrays are, how we declare, create, instantiate and use them. We will examine one-dimensional and multidimensional arrays. We will learn different ways to iterate through the array, read from the standard input and write to the standard output. We will give many example exercises, which can be solved using arrays and we will show how useful they really are.
MuVM: Higher Order Mutation Analysis Virtual Machine for CSusumu Tokumoto
Mutation analysis is a method for evaluating the effectiveness of a test suite by seeding faults artificially and measuring the fraction of seeded faults detected by the test suite. The major limitation of mutation analysis is its lengthy execution time because it involves generating, compiling and running large numbers of mutated programs, called mutants. Our tool MuVM achieves a significant runtime improvement by performing higher order mutation analysis using four techniques, metamutation, mutation on virtual machine, higher order split-stream execution, and online adaptation technique. In order to obtain the same behavior as mutating the source code directly, metamutation preserves the mutation location information which may potentially be lost during bitcode compilation and optimization. Mutation on a virtual machine reduces the compilation and testing cost by compiling a program once and invoking a process once. Higher order split-stream execution also reduces the testing cost by executing common parts of the mutants together and splitting the execution at a seeded fault. Online adaptation technique reduces the number of generated mutants by omitting infeasible mutants. Our comparative experiments indicate that our tool is significantly superior to an existing tool, an existing technique (mutation schema generation), and no-split-stream execution in higher order mutation.
EdSketch: Execution-Driven Sketching for JavaLisa Hua
Sketching is a relatively recent approach to program synthesis, which has shown much promise. The key idea in sketching is to allow users to write partial programs that have “holes” and provide test harnesses or reference implementations, and let synthesis tools create program fragments that the holes such that the resulting complete program has the desired functionality. Traditional solutions to the sketching problem perform a translation to SAT and employ CEGIS. While e ective for a range of programs, when applied to real applications, such translation-based approaches have a key limitation: they require either translating all relevant libraries that are invoked directly or indirectly by the given sketch – which can lead to impractical SAT problems – or creating models of those libraries – which can require much manual effort.
is paper introduces execution-driven sketching, a novel approach for synthesis of Java programs using a backtracking search that is commonly employed in so ware model checkers. e key novelty of our work is to introduce effective pruning strategies to effciently explore the actual program behaviors in presence of libraries and to provide a practical solution to sketching small parts of real-world applications, which may use complex constructs of modern languages, such as reflection or native calls. Our tool EdSketch embodies our approach in two forms: a stateful search based on the Java PathFinder model checker; and a stateless search based on re-execution inspired by the VeriSoft model checker. Experimental results show that EdSketch’s performance compares well with the well-known SAT-based Sketch system for a range of small but complex programs, and moreover, that EdSketch can complete some sketches that require handling complex constructs.
This is a rapid fire talk that outline some of the issues around multithreaded code, some of the tools you can use to test it and how best to spend your resources doing so
The document provides examples of various Java programming concepts like displaying messages, using control structures like if-else, for loops, methods, constructors, access specifiers, static variables and more. It shows how to write simple Java programs to print messages, integers, use conditional and looping statements. It also explains concepts like default and parameterized constructors, static and non-static methods, different access specifiers and their usage. The examples help learn how different Java features can be used to develop programs with classes, objects and methods.
19. Java data structures algorithms and complexityIntro C# Book
In this chapter we will compare the data structures we have learned so far by the performance (execution speed) of the basic operations (addition, search, deletion, etc.). We will give specific tips in what situations what data structures to use.
TMPA-2017: Generating Cost Aware Covering Arrays For Free Iosif Itkin
TMPA-2017: Tools and Methods of Program Analysis
3-4 March, 2017, Hotel Holiday Inn Moscow Vinogradovo, Moscow
Generating Cost Aware Covering Arrays For Free
Mustafa Kemal Tas, Hanefi Mercan, Gülşen Demiröz, Kamer Kaya, Cemal Yilmaz, Sabanci University
For video follow the link: https://youtu.be/Wkdd4A0rRjE
Would like to know more?
Visit our website:
www.tmpaconf.org
www.exactprosystems.com/events/tmpa
Follow us:
https://www.linkedin.com/company/exactpro-systems-llc?trk=biz-companies-cym
https://twitter.com/exactpro
Here we are going to take a look how to use for loop, foreach loop and while loop. Also we are going to learn how to use and invoke methods and how to define classes in Java programming language.
This document discusses parameters and return values in Java methods. It provides examples of parameterized methods that take int, double, and String parameters. These include methods that draw lines and boxes of stars of varying lengths/sizes. The document also covers returning values from methods, including examples using Math class methods. Common errors around not storing return values are discussed.
This document discusses steady-state error analysis for unity feedback systems. It defines the position, velocity, and acceleration static error constants, which determine the steady-state error for step, ramp, and parabolic inputs respectively. The system type, defined by the number of integrations in the forward path (n=0 for Type 0, n=1 for Type 1, etc.), also determines the steady-state error formula. For a unit step input, the steady-state error equals the position constant divided by the input. For a unit ramp input, the steady-state error equals the velocity constant divided by the slope of the input ramp. For a parabolic input, the steady-state error equals the acceleration constant divided by
40+ examples of user defined methods in java with explanationHarish Gyanani
The document discusses user defined methods in Java and provides examples of simple programs that utilize methods. Some key points covered include:
- Advantages of using methods to organize and reuse code.
- Examples of methods that perform basic operations like addition, average calculation, data type conversions, etc.
- Passing arrays to methods and returning arrays from methods.
- Differences between functions and methods in Java.
- Overloading methods by changing the number and type of arguments.
- Implementing methods to calculate operations like LCM, HCF, prime number checks, etc.
Compressed Sensing using Generative Modelkenluck2001
This document summarizes Kenneth Emeka Odoh's presentation on using generative models for compressed sensing. It introduces compressed sensing and describes how generative models like variational autoencoders (VAEs) and generative adversarial networks (GANs) can be used to solve the underdetermined linear systems that arise in compressed sensing. The document also compares VAEs to standard autoencoders and discusses how generative models may require fewer training examples due to regularization imposing structure on the problem.
TMPA-2015: Implementing the MetaVCG Approach in the C-light SystemIosif Itkin
Alexei Promsky, Dmitry Kondtratyev, A.P. Ershov Institute of Informatics Systems, Novosibirsk
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
This presentation describes the results published in the following paper published in the Journal INFORMATION AND SOFTWARE TECHNOLOGY
TITLE: A Large Scale Empirical Comparison of State-of-the-art Search-based Test Case Generators
AUTHORS: Annibale Panichella, Fitsum Kifetew, Paolo Tonella
ABSTRACT: Context: Replication studies and experiments form an important foundation in advancing scientific research. While their prevalence in Software Engineering is increasing, there is still more to be done. Objective: This article aims to extend our previous replication study on search-based test generation techniques by performing a large-scale empirical comparison with further techniques from state of the art. Method: We designed a comprehensive experimental study involving six techniques, a benchmark composed of 180 non-trivial Java classes, and a total of 21,600 independent executions. Metrics regarding the effectiveness and efficiency of the techniques were collected and analyzed by means of statistical methods. Results: Our empirical study shows that single-target approaches are generally outperformed by multi-target approaches, while within the multi-target approaches, DynaMOSA/MOSA, which are based on many-objective optimization, outperform the others, in particular for complex classes. Conclusion: The results obtained from our large-scale empirical investigation con rm what has been reported in previous studies, while also highlighting striking differences and novel observations. Future studies, on different benchmarks and considering additional techniques, could further reinforce and extend our findings.
Recent years have seen the emergence of several static analysis techniques for reasoning about programs. This talk presents several major classes of techniques and tools that implement these techniques. Part of the presentation will be a demonstration of the tools.
Dr. Subash Shankar is an Associate Professor in the Computer Science department at Hunter College, CUNY. Prior to joining CUNY, he received a PhD from the University of Minnesota and was a postdoctoral fellow in the model checking group at Carnegie Mellon University. Dr. Shankar also has over 10 years of industrial experience, mostly in the areas of formal methods and tools for analyzing hardware and software systems.
- An interface in Java is a blueprint of a class that defines static constants and abstract methods. Interfaces are used to achieve abstraction and multiple inheritance in Java. A class implements an interface by providing method bodies for the abstract methods defined in the interface. Interfaces allow for loose coupling between classes.
- The main reasons to use interfaces are for abstraction, to support multiple inheritance functionality, and to achieve loose coupling between classes. An interface is declared using the interface keyword and contains only method signatures, not method bodies. A class implementing an interface must implement all of its methods.
- Interfaces can extend other interfaces, requiring implementing classes to provide implementations for all methods in the inherited interfaces as well. Object cloning uses the clone()
The document discusses Java operators, arrays, packages, and Javadoc comments. It includes code examples demonstrating the use of arithmetic, unary, and relational operators. It also shows how to declare and initialize single and multi-dimensional arrays. Examples of user-defined packages and importing packages are provided. Finally, it briefly explains what Javadoc comments are and their purpose.
Automated Repair of Feature Interaction Failures in Automated Driving SystemsLionel Briand
The document describes an approach called ARIEL for automatically repairing feature interaction failures in automated driving systems. ARIEL uses a customized genetic programming algorithm that leverages fault localization weighted by test failure severity and generates patches through threshold changes and condition reordering. An evaluation on two industrial case studies found ARIEL outperformed baselines in fully repairing the systems within 16 hours. Domain experts judged the synthesized patches to be valid, understandable, useful and superior to what could be produced manually.
This document provides an overview of a tutorial on event processing under uncertainty. It begins with an introduction that discusses how most real-world data contains some level of uncertainty and an illustrative example of using event processing to detect crimes from uncertain video surveillance and citizen reports. It then outlines the topics to be covered, including representing and modeling different types of uncertainty, and extending event processing techniques to handle uncertain event data.
Debs 2010 context based computing tutorialOpher Etzion
The document discusses context-aware computing and its utilization in event-based systems. It provides an agenda for a tutorial that covers context in general, context categories including temporal, spatial, state and segmentation contexts, and context implementation in practice and event processing. The document also provides examples of different types of contexts and how context can be composed from multiple contexts.
This document provides an agenda for a tutorial on context aware computing and its use in event-based systems. The tutorial will be presented at DEBS 2010 on July 12, 2010. It will cover context in general, context in depth, and context in practice. Specifically, it will introduce context in pragmatics and language. It will also discuss roles of contexts in computing and event processing. Additionally, it will cover temporal, segmentation, spatial, and state contexts as well as context composition. Finally, it will discuss operational semantics of context and implementations of context in event processing and other computing areas.
Context refers to information that can characterize an entity's situation, such as a user's location, identity, activity, time, nearby objects and people. Context-aware computing uses sensors to automatically collect context and adapt applications and services to the user's context. There is a need for context-aware computing because computers lack the implicit contextual cues that humans use in communication. Context-aware applications can make interactions between humans and computers more natural by tailoring information and services to the user's changing context.
The document discusses algorithms complexity and data structures efficiency. It covers topics like asymptotic notation to analyze algorithm complexity, different time and memory complexities like constant, logarithmic, linear, quadratic, and exponential. Examples are provided to illustrate complexity calculations for algorithms with operations on arrays, matrices and recursion. Choosing the right data structures depends on the algorithm complexity and problem requirements.
This document discusses algorithmic research problems and different types of algorithms used to solve them. It begins by defining an algorithm and providing examples of common algorithm types like search, sorting, shortest path, and more. It then covers different types of algorithmic problems like polynomial problems, which can be solved in polynomial time by polynomial algorithms, and NP-hard or combinatorial problems, which typically require exponential algorithms. Several examples are given of problems that fall into each category. The document also discusses how problem complexity is analyzed and how it relates to the algorithm types.
The document describes a multistage system for monitoring the technical condition of aircraft gas turbine engines. It proposes using soft computing methods like fuzzy logic and neural networks at early stages when data is limited or uncertain. At later stages, it uses statistical analysis methods like analyzing changes in skewness, kurtosis, and correlation coefficients of engine parameters. Fuzzy regression models are developed using these techniques to estimate engine condition. The system provides staged estimation of engine technical conditions from initial to later stages of operation.
This document discusses pointcuts and static analysis in aspect-oriented programming. It provides an example of using aspects to ensure thread safety in Swing by wrapping method calls in invokeLater. It proposes representing pointcuts as relational queries over a program representation, and rewriting pointcuts as Datalog queries for static analysis. Representing programs and pointcuts relationally in this way enables precise static analysis of crosscutting concerns.
The document describes an algorithm for detecting R-peaks in an electrocardiogram (ECG) signal using MATLAB. It involves several steps: (1) removing low frequency components from the ECG signal using FFT, (2) finding local maxima using a windowed filter, (3) removing small values and storing significant peaks, (4) adjusting the filter size and repeating steps 2-3. The algorithm is demonstrated on two ECG data samples, showing the processed signal and detected peaks at each step. Finally, the document explains how to implement the algorithm in a neural network using the MATLAB Neural Network Toolbox.
This R code document contains code for implementing the Expectation-Maximization (EM) algorithm for Gaussian mixture models with 1, 2, and 3 clusters of data. The code includes functions for the EM steps, starting values, and plotting the results. It applies the EM algorithm to real datasets with 1 and 2 dimensions and to a simulated 3 cluster dataset.
This document proposes an approach to assist developers in verifying the deployment of big data analytics applications on Hadoop clouds. The approach involves three main steps: 1) log abstraction reduces the size of logs by grouping similar log lines, 2) log linking provides context by linking logs with the same task IDs, and 3) sequence simplification deals with repeated logs by removing duplicate events. This helps address issues like the large amount of log data and lack of context when verifying applications at scale in cloud environments.
The document discusses Bluespec, a hardware description language that combines features of Haskell and SystemVerilog assertions (SVA). Bluespec models all state explicitly using guarded atomic actions on state. Behavior is expressed as rules with guards and actions. Assertions in Bluespec are compiled into finite state machines and checked concurrently as rules. The document provides an example of using Bluespec to write functional and performance assertions for a cache controller design.
Complete and Interpretable Conformance Checking of Business ProcessesMarlon Dumas
This document presents a new approach for conformance checking of business processes that identifies all differences between a process model and an event log. It generates natural language statements to describe each difference. The approach works by translating the model and log into prime event structures and extracting mismatches by comparing their partially synchronized product. It can identify seven elementary mismatch patterns to characterize deviations. The approach was implemented in a standalone Java tool and evaluated on a real-life process with over 150,000 event traces.
This document defines algorithms and how to analyze them. It begins by defining an algorithm informally as a tool for solving computational problems and formally in terms of mathematical models of computation. It then discusses analyzing algorithms to determine their performance characteristics like running time. In particular, it focuses on analyzing the time or space complexity of algorithms, usually expressed as functions of the input size. The document provides examples and conventions for analyzing simple algorithms like linear search. It emphasizes analyzing asymptotic worst-case complexity to compare algorithms and determine how efficiently they solve problems even for large inputs.
1.[1 5]implementation of pre compensation fuzzy for a cascade pid controller ...Alexander Decker
1) The document describes a fuzzy logic-based pre-compensation scheme for a PID controller to improve its performance for processes with nonlinear dynamics.
2) A fuzzy pre-compensator uses error and change in error as inputs to generate a correction term that is added to the controller command signal.
3) 47 fuzzy rules are used in the pre-compensator to modify the command signal and compensate for overshoot and undershoot based on the current error and error change.
4) Simulation results show that the fuzzy pre-compensated PID controller provides better response and disturbance rejection compared to a conventional PID controller.
This document discusses detecting R-peaks in an electrocardiogram (ECG) signal using MATLAB. It describes the basic task of ECG processing as R-peak detection and some challenges like irregular peaks and breathing noise. The key steps are presented as removing low frequencies, applying a window filter twice to detect peaks, and optimizing the filter window size. Code examples are provided to demonstrate the processing pipeline on two ECG samples, showing the original signal and results of each step. The document concludes by instructing the reader to type "ecgdemo" in the MATLAB command window to run the code.
1. AlphaZero uses self-play reinforcement learning to train a neural network to evaluate board positions and select moves. It trains offline by playing games against itself, using the results to iteratively improve its network.
2. During online play, AlphaZero uses Monte Carlo tree search with the neural network to select moves. It evaluates many random simulations of possible future games to a certain depth, using the network to approximate values beyond that depth.
3. The success of AlphaZero is due to skillfully combining known reinforcement learning techniques like self-play training, neural network function approximation, and Monte Carlo tree search with powerful computational resources.
Real Time System Identification of Speech Signal Using Tms320c6713IOSRJVSP
In this paper real time system identification is implemented on TMS320C6713 for speech signal using standard IEEE sentence (SP23) of NOIZEUS database with different types of real world noises at different level SNR taken from AURORA data base. The performance is measured in terms of signal to noise ratio (SNR) improvement. The implementation is done with “C’ program for least mean square (LMS) and recursive least square (RLS) algorithms and processed using DSP processor with Code composer studio.
Brief introduction to Algorithm analysis Anantha Ramu
Slide explains concepts
1. What is Asymptotic analysis
2. Why do we need it
3. Examples of Notation
4. What are the various kinds of Asymptotic analysis
5. How to compute Big O Notation
6. Big Oh examples
The document discusses fundamentals of analyzing algorithm efficiency, including:
- Measuring an algorithm's time efficiency based on input size and number of basic operations.
- Using asymptotic notations like O, Ω, Θ to classify algorithms by order of growth.
- Analyzing worst-case, best-case, and average-case efficiencies.
- Setting up recurrence relations to analyze recursive algorithms like merge sort.
DEBS 2019 tutorial : correctness and consistency of event-based systems Opher Etzion
The tutorial includes: temporal correctness, tuning up the semantics of event-based applications, data consistency, and validation and verification of event-based systems
Sw architectures 2018 on microservices and edaOpher Etzion
This document discusses microservices and event-driven architectures. It provides an example of a "smart road" system using these approaches. Events are used to communicate between isolated microservices to handle tasks like vehicle identification, traffic rate calculation, billing, and detecting stolen vehicles. The document also discusses using events to handle consistency requirements when processing salary increases across budget-checking and other microservices. Events allow microservices to remain independent while coping with global consistency needs through approaches like compensating transactions triggered by event notifications.
ER 2017 tutorial - On Paradoxes, Autonomous Systems and dilemmasOpher Etzion
This document discusses paradoxes, autonomous systems, and the dilemmas they present. It covers paradoxes like Russell's paradox and Zeno's paradox to illustrate logical contradictions. It then outlines how autonomous systems work by sensing their environment, making sense of inputs, decision-making, and acting. Examples of current and future applications of healthcare, industrial, and military robotics are provided. However, it also notes the dangers of causal inference from correlation and sources of uncertainty. Deep learning allows autonomous systems to self-learn but lacks transparency. This could enable remote killing and raises issues around social equality if advanced systems surpass human
This presentation given in the un-conference on technology and art is a first glance into new research on taking event-driven technology to create a new type of literature.
Has Internet of Things really happened? Opher Etzion
The document discusses challenges facing widespread adoption of the Internet of Things (IoT). While sensor technology exists, each sensor operates in isolation and multi-sensor systems are difficult to construct. Other challenges include data quality issues, lack of ubiquitous networks, integration difficulties, need for more sensor innovation, and inadequate security for the status quo. Standardization efforts are underway but democratizing use through sensor integration, personalization, and pervasive applications remains challenging.
On the personalization of event-based systems Opher Etzion
The document discusses personalizing event-based systems to better assist elderly individuals. It proposes sensors around the home that can detect events like an unlocked door, falling, or vocal distress to alert family members. While the technology exists, it needs to be more personalized, affordable, and simple to use. The research requires a multi-disciplinary effort across technology, human factors, economics, and specific domains. Personalizing such systems to individuals and simplifying the technology is seen as key to widespread adoption.
On Internet of Everything and Personalization. Talk in INTEROP 2014Opher Etzion
This document discusses the Internet of Everything (IoE) and personalization. It begins by defining the IoE as connecting people and machines through technologies like sensors. Examples are given of how sensors can detect situations and trigger actions. Challenges to the IoE include data quality issues, lack of integration between sensors, and complexity that limits widespread use. The document argues for standards and simplifying models to make IoE technologies more accessible and customizable to individual needs and situations. Security, privacy and the democratization of IoE technologies are also addressed.
Introduction to the institute of technological empowermentOpher Etzion
This short presentation was presented in July-9-2014 at a meeting with people interested in the Institute of Technology Empowerment and provides brief introduction to the institute's goals and activities.
DEBS 2014 tutorial on the Internet of Everything. Opher Etzion
This document provides an overview of the Internet of Everything (IoE) and event processing. It discusses how IoE is an extension of concepts like the Internet of Things (IoT) and how everything will become connected. The document outlines how IoE will impact different areas like healthcare, agriculture, cities, retail, homes and more. It also presents a futuristic view where driverless cars and automated personal assistants become common due to advances in sensors and connectivity.
The Internet of Things and some introduction to the Technological Empowerment...Opher Etzion
This document outlines the vision for the Technological Empowerment Institute, which aims to empower people and businesses in developing areas through smart sensor-based systems for situation awareness. The institute will have three legs: a multi-disciplinary research leg, an implementation leg through partnerships, and an education leg. Some example target applications mentioned are assistance for elderly independent living through situational awareness alerts, supply chain monitoring, agriculture environmental control, and water quality monitoring. The overall goal is to help realize the power of event-driven systems to create a better world.
ER 2013 tutorial: modeling the event driven world Opher Etzion
This document discusses event-driven thinking and modeling compared to traditional request-driven computing. Some key points made:
1) Event-driven applications follow the "4D" paradigm of detect, derive, decide, do to achieve awareness and reaction, while traditional systems are more request-driven.
2) Event-driven logic is sensitive to the timing and order of events, rather than just the event occurrence. Temporal considerations are important.
3) State handling is more complex with events, as logic may depend on patterns spanning unmatched past events.
Existing event processing languages still require technical skills and do not fully address modeling at the business level in an intuitive way. Purely computational approaches are not enough
Debs 2013 tutorial : Why is event-driven thinking different from traditional ...Opher Etzion
This document discusses the differences between traditional and event-driven thinking in computing. It begins with a brief history of event processing, noting its origins in academic projects in the early 2000s and increased adoption in recent years driven by big data and IoT trends. The document then outlines some key differences in event-driven thinking, such as its focus on reacting immediately to events rather than responding to periodic queries. It provides an example of using events to detect suspicious banking activity in real-time. Finally, it discusses challenges in expressing event-driven logic and temporal considerations using traditional request-driven approaches.
This document proposes using event processing as a key to immortality. It discusses recent medical research using sensors and actuators to monitor and treat diseases at the cellular level. The goal is to create an "ultimate automatic physician" that can detect any sickness, react proactively or reactively, and make treatment decisions using event processing networks as its "brain". The challenge presented is using such techniques to significantly extend the human lifespan.
The presentation introduced a basic proactive model for taking timely actions to optimize outcomes given anticipated unplanned events. It uses event patterns to predict events and their timing with uncertainty, then determines the optimal action over time by considering action costs and impacts. Several application scenarios were discussed. While demonstrating feasibility, further work is needed to address challenges like real-time optimization for other cases, improved forecasting models, usability, and scalability.
Proactive event-driven computing is a new paradigm that aims to take proactive actions based on forecasted events before problems occur. It involves detecting events, forecasting future events, making real-time decisions, and taking proactive actions. The document discusses challenges in creating proactive solutions and outlines key aspects of proactive computing including uncertainty handling, real-time decision making under uncertainty, and learning patterns and causal relationships.
Event processing systems have evolved from early reactive systems to now support predictive capabilities using techniques like machine learning. Key challenges for these systems include handling uncertain and incomplete event data, performing predictive event processing through graphical model techniques, leveraging machine learning to automate pattern discovery and modeling, and evolving from purely reactive systems to proactively take actions based on predictions. Addressing these challenges will help make event processing systems more intelligent and adaptive.
Debs 2011 tutorial on non functional properties of event processingOpher Etzion
The document discusses various non-functional properties of event processing systems including performance, scalability, availability, usability, and security considerations. It covers topics such as performance benchmarks and indicators, approaches to scaling systems both vertically and horizontally, high availability techniques using redundancy and duplication, usability factors like learnability and satisfaction, and validation methods for ensuring correctness.
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPathCommunity
Join this UiPath Community Berlin meetup to explore the Orchestrator API, Swagger interface, and the Test Manager API. Learn how to leverage these tools to streamline automation, enhance testing, and integrate more efficiently with UiPath. Perfect for developers, testers, and automation enthusiasts!
📕 Agenda
Welcome & Introductions
Orchestrator API Overview
Exploring the Swagger Interface
Test Manager API Highlights
Streamlining Automation & Testing with APIs (Demo)
Q&A and Open Discussion
Perfect for developers, testers, and automation enthusiasts!
👉 Join our UiPath Community Berlin chapter: https://community.uipath.com/berlin/
This session streamed live on April 29, 2025, 18:00 CET.
Check out all our upcoming UiPath Community sessions at https://community.uipath.com/events/.
Technology Trends in 2025: AI and Big Data AnalyticsInData Labs
At InData Labs, we have been keeping an ear to the ground, looking out for AI-enabled digital transformation trends coming our way in 2025. Our report will provide a look into the technology landscape of the future, including:
-Artificial Intelligence Market Overview
-Strategies for AI Adoption in 2025
-Anticipated drivers of AI adoption and transformative technologies
-Benefits of AI and Big data for your business
-Tips on how to prepare your business for innovation
-AI and data privacy: Strategies for securing data privacy in AI models, etc.
Download your free copy nowand implement the key findings to improve your business.
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025BookNet Canada
Book industry standards are evolving rapidly. In the first part of this session, we’ll share an overview of key developments from 2024 and the early months of 2025. Then, BookNet’s resident standards expert, Tom Richardson, and CEO, Lauren Stewart, have a forward-looking conversation about what’s next.
Link to recording, transcript, and accompanying resource: https://bnctechforum.ca/sessions/standardsgoals-for-2025-standards-certification-roundup/
Presented by BookNet Canada on May 6, 2025 with support from the Department of Canadian Heritage.
Dev Dives: Automate and orchestrate your processes with UiPath MaestroUiPathCommunity
This session is designed to equip developers with the skills needed to build mission-critical, end-to-end processes that seamlessly orchestrate agents, people, and robots.
📕 Here's what you can expect:
- Modeling: Build end-to-end processes using BPMN.
- Implementing: Integrate agentic tasks, RPA, APIs, and advanced decisioning into processes.
- Operating: Control process instances with rewind, replay, pause, and stop functions.
- Monitoring: Use dashboards and embedded analytics for real-time insights into process instances.
This webinar is a must-attend for developers looking to enhance their agentic automation skills and orchestrate robust, mission-critical processes.
👨🏫 Speaker:
Andrei Vintila, Principal Product Manager @UiPath
This session streamed live on April 29, 2025, 16:00 CET.
Check out all our upcoming Dev Dives sessions at https://community.uipath.com/dev-dives-automation-developer-2025/.
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersToradex
Toradex brings robust Linux support to SMARC (Smart Mobility Architecture), ensuring high performance and long-term reliability for embedded applications. Here’s how:
• Optimized Torizon OS & Yocto Support – Toradex provides Torizon OS, a Debian-based easy-to-use platform, and Yocto BSPs for customized Linux images on SMARC modules.
• Seamless Integration with i.MX 8M Plus and i.MX 95 – Toradex SMARC solutions leverage NXP’s i.MX 8 M Plus and i.MX 95 SoCs, delivering power efficiency and AI-ready performance.
• Secure and Reliable – With Secure Boot, over-the-air (OTA) updates, and LTS kernel support, Toradex ensures industrial-grade security and longevity.
• Containerized Workflows for AI & IoT – Support for Docker, ROS, and real-time Linux enables scalable AI, ML, and IoT applications.
• Strong Ecosystem & Developer Support – Toradex offers comprehensive documentation, developer tools, and dedicated support, accelerating time-to-market.
With Toradex’s Linux support for SMARC, developers get a scalable, secure, and high-performance solution for industrial, medical, and AI-driven applications.
Do you have a specific project or application in mind where you're considering SMARC? We can help with Free Compatibility Check and help you with quick time-to-market
For more information: https://www.toradex.com/computer-on-modules/smarc-arm-family
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungenpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-nomad-web-best-practices-und-verwaltung-von-multiuser-umgebungen/
HCL Nomad Web wird als die nächste Generation des HCL Notes-Clients gefeiert und bietet zahlreiche Vorteile, wie die Beseitigung des Bedarfs an Paketierung, Verteilung und Installation. Nomad Web-Client-Updates werden “automatisch” im Hintergrund installiert, was den administrativen Aufwand im Vergleich zu traditionellen HCL Notes-Clients erheblich reduziert. Allerdings stellt die Fehlerbehebung in Nomad Web im Vergleich zum Notes-Client einzigartige Herausforderungen dar.
Begleiten Sie Christoph und Marc, während sie demonstrieren, wie der Fehlerbehebungsprozess in HCL Nomad Web vereinfacht werden kann, um eine reibungslose und effiziente Benutzererfahrung zu gewährleisten.
In diesem Webinar werden wir effektive Strategien zur Diagnose und Lösung häufiger Probleme in HCL Nomad Web untersuchen, einschließlich
- Zugriff auf die Konsole
- Auffinden und Interpretieren von Protokolldateien
- Zugriff auf den Datenordner im Cache des Browsers (unter Verwendung von OPFS)
- Verständnis der Unterschiede zwischen Einzel- und Mehrbenutzerszenarien
- Nutzung der Client Clocking-Funktion
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul
Artificial intelligence is changing how businesses operate. Companies are using AI agents to automate tasks, reduce time spent on repetitive work, and focus more on high-value activities. Noah Loul, an AI strategist and entrepreneur, has helped dozens of companies streamline their operations using smart automation. He believes AI agents aren't just tools—they're workers that take on repeatable tasks so your human team can focus on what matters. If you want to reduce time waste and increase output, AI agents are the next move.
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxAnoop Ashok
In today's fast-paced retail environment, efficiency is key. Every minute counts, and every penny matters. One tool that can significantly boost your store's efficiency is a well-executed planogram. These visual merchandising blueprints not only enhance store layouts but also save time and money in the process.
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfAbi john
Analyze the growth of meme coins from mere online jokes to potential assets in the digital economy. Explore the community, culture, and utility as they elevate themselves to a new era in cryptocurrency.
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...Alan Dix
Talk at the final event of Data Fusion Dynamics: A Collaborative UK-Saudi Initiative in Cybersecurity and Artificial Intelligence funded by the British Council UK-Saudi Challenge Fund 2024, Cardiff Metropolitan University, 29th April 2025
https://alandix.com/academic/talks/CMet2025-AI-Changes-Everything/
Is AI just another technology, or does it fundamentally change the way we live and think?
Every technology has a direct impact with micro-ethical consequences, some good, some bad. However more profound are the ways in which some technologies reshape the very fabric of society with macro-ethical impacts. The invention of the stirrup revolutionised mounted combat, but as a side effect gave rise to the feudal system, which still shapes politics today. The internal combustion engine offers personal freedom and creates pollution, but has also transformed the nature of urban planning and international trade. When we look at AI the micro-ethical issues, such as bias, are most obvious, but the macro-ethical challenges may be greater.
At a micro-ethical level AI has the potential to deepen social, ethnic and gender bias, issues I have warned about since the early 1990s! It is also being used increasingly on the battlefield. However, it also offers amazing opportunities in health and educations, as the recent Nobel prizes for the developers of AlphaFold illustrate. More radically, the need to encode ethics acts as a mirror to surface essential ethical problems and conflicts.
At the macro-ethical level, by the early 2000s digital technology had already begun to undermine sovereignty (e.g. gambling), market economics (through network effects and emergent monopolies), and the very meaning of money. Modern AI is the child of big data, big computation and ultimately big business, intensifying the inherent tendency of digital technology to concentrate power. AI is already unravelling the fundamentals of the social, political and economic world around us, but this is a world that needs radical reimagining to overcome the global environmental and human challenges that confront us. Our challenge is whether to let the threads fall as they may, or to use them to weave a better future.
AI and Data Privacy in 2025: Global TrendsInData Labs
In this infographic, we explore how businesses can implement effective governance frameworks to address AI data privacy. Understanding it is crucial for developing effective strategies that ensure compliance, safeguard customer trust, and leverage AI responsibly. Equip yourself with insights that can drive informed decision-making and position your organization for success in the future of data privacy.
This infographic contains:
-AI and data privacy: Key findings
-Statistics on AI data privacy in the today’s world
-Tips on how to overcome data privacy challenges
-Benefits of AI data security investments.
Keep up-to-date on how AI is reshaping privacy standards and what this entails for both individuals and organizations.
Big Data Analytics Quick Research Guide by Arthur MorganArthur Morgan
This is a Quick Research Guide (QRG).
QRGs include the following:
- A brief, high-level overview of the QRG topic.
- A milestone timeline for the QRG topic.
- Links to various free online resource materials to provide a deeper dive into the QRG topic.
- Conclusion and a recommendation for at least two books available in the SJPL system on the QRG topic.
QRGs planned for the series:
- Artificial Intelligence QRG
- Quantum Computing QRG
- Big Data Analytics QRG
- Spacecraft Guidance, Navigation & Control QRG (coming 2026)
- UK Home Computing & The Birth of ARM QRG (coming 2027)
Any questions or comments?
- Please contact Arthur Morgan at [email protected].
100% human made.
Artificial Intelligence is providing benefits in many areas of work within the heritage sector, from image analysis, to ideas generation, and new research tools. However, it is more critical than ever for people, with analogue intelligence, to ensure the integrity and ethical use of AI. Including real people can improve the use of AI by identifying potential biases, cross-checking results, refining workflows, and providing contextual relevance to AI-driven results.
News about the impact of AI often paints a rosy picture. In practice, there are many potential pitfalls. This presentation discusses these issues and looks at the role of analogue intelligence and analogue interfaces in providing the best results to our audiences. How do we deal with factually incorrect results? How do we get content generated that better reflects the diversity of our communities? What roles are there for physical, in-person experiences in the digital world?
2. Motivation Adi A., Etzion O. Amit - the situation manager. The VLDB Journal – The International Journal on Very Large Databases. Volume 13 Issue 2, 2004. Previous studies indicate that there is a major performance degradation as application complexity increases. Mendes M., Bizarro P., Marques P. Benchmarking event processing systems: current state and future directions. WOSP/SIPEW 2010: 259-260 . Optimize complex scenarios
4. An example of a complex scenario E1 E2 E3 E15 E16 A process has 16 steps, that have to be executed in a predefined order; termination of each step creates an event with a status-code (SC). The process is reported as committed when The 16 steps have completed in the correct order (sequence pattern) and the pattern assertion is satisfied. The assertion that may look like: E 1 .SC == E2.SC or E3.SC < 4 For this scenario we succeeded to achieve more than tenfold decrease of latency, or more than 20% increase in throughput
5. Pattern Rewriting Approach The goal: create equivalent pattern that provides better performance Rewriting techniques exist in other domains such as: rule system, SQL queries Due to the inherent complexity of event processing patterns there are some unique challenges seq(E1,E2,E3,E4) seq(E1,E2,E3,E5,E6) seq(E1,E2,E3) seq(DE,E4) seq(DE,E5,E6) all(E1,E2,E3,E4) all(E1,E2) all(E3,E4) all(DE1,DE2) subsumption of a common logic splitting for parallel execution DE1 DE2 DE
6. Challenges: Assertion Split A pattern assertion (PA) is a predicate that event collection needs to satisfied for the pattern to be matched. seq(E1,E2) with PA’ seq(DE,E3) with PA’’ DE seq(E1,E2,E3) with pattern assertion: E1.SC == E2.SC OR E3.SC < 4 E1.SC == E2.SC OR E3.SC <4 E1.SC == E2.SC E3.SC < 4 seq(E1,E2,E3) with PA the direct connection of the two patterns implies “AND” operator between PA’ and PA’’ seq(E1,E3) with PA’ seq(DE,E2) with PA’’ DE seq(E1,E2,E3) with pattern assertion: E1.SC == E3.SC AND E2.SC = 0 E1.SC == E3.SC AND E2.SC = 0 E1.SC == E3.SC E2.SC = 0 seq(E1,E2,E3) with PA the assertion should be separable in terms of its variables
7. Assertion Split – Solution Convert the pattern assertion expression into conjunctive normal form (CNF). Identify independent participants’ sub-groups, by generating assertion variables dependency graph. Maximal number of independent partitions implies the finest granulation of the assertion expression. E1 E2 E4 E5 E6 E3 (E1.SC > E2.SC) AND (E4.SC > E5.SC) AND NOT ((E5.SC==E6.SC) AND (E3.SC==77)) (E1.SC > E2.SC) AND (E4.SC > E5.SC) AND (NOT(E5.SC==E6.SC) OR NOT(E3.SC==77)) CNF
8. Pattern Matching - Policies Pattern: seq(PG, ATM-W) within 10 minutes PG1 PG2 ATM-W1 Instance selection policy PG1 PG2 ATM-W1 ATM-W2 first detection additional detection? Cardinality policy PG1 PG2 ATM-W1 first detection – are instances consumed? ATM-W2 Consumption policy
9. Naïve pattern split, keeping the original policies in the rewritten version will result in incorrect matching: Challenges: Policies Mapping seq(E1,E2,E3) {single, last, …} seq(E1,E2) {single, last, …} seq(DE,E3) {single, last, …} e1.1 e3.1 e1.1 e3.1 e2.1 blood pressure measure e2.2 blood pressure measure e2.1 blood pressure measure e2.2 blood pressure measure detection point detection point detection point
10. Policies Mapping – Solution Mapping of policies in the rewritten alternative (f2’ + f2’’), based on the original pattern (f1): - reuse - Consumption last last last Instance selection single unrestricted single Cardinality rewritten (f2’’) rewritten (f2’) original (f1) policy seq(E1,E2,E3) seq(E1,E2) seq(DE,E3) + pattern assertion extensions consume reuse consume Consumption last each last Instance selection unrestricted unrestricted unrestricted Cardinality rewritten (f2’’) rewritten (f2’) original (f1) policy
11. Denotational semantics approach: Event processing pattern is a function (f) , mapping pattern’s input (participant set - PS) into its output (matching set - MS). We formally demonstrate that for the same PS both alternatives produce the identical MS: f1(PS, …) == f2’( (f2’’(PS’, …) PS’’) , …) PS Equivalence assurance seq(E 1 ,…, E N ) PA, Policies seq(E 1 , …, E K ) PA’, Policies’ seq(DE, E K+1 , …, E N ) PA’’, Policies’’ participant set (PS) participant set (PS) matching set (MS) matching set (MS)
12. Throughput vs. Latency Tradeoff Pattern throughput is an average rate of events it can process The detecting event latency as a delay between the last input event causing a this pattern detection and the detection itself, resulting in derivation of an output event. Example : seq(E1,E2,E3) produces derived event DE Detecting event latency = DE.detection_time - E3.detection_time DE.detection_time: time DE was detected by the system E3.detection_time: time E3 arrived to the system seq(E 1 ,…, E N ) seq(E 1 , …, E N-2 ) seq(DE, E N-1 , E N ) throughput latency throughput latency lazy evaluation eager evaluation
13. Bi-objective Performance Optimization Define bi-objective performance function Assign a scalar weight for each objective to be optimized Weight of to pattern throughput (th) Complementary weight (1- ) to the detecting event latency (lt) Minimize the goal function of the form: g = *lt + C*(1- )*(1/th) Simulation-based approach to select the optimal rewriting alternative (minimizing the goal function g) For a set of rewriting alternatives A = {A 1 , … A K } , find argmin Ai ( g )
14. Experimental Results Simulation results for seq (E1, …, E16) split of pairs The Pareto frontier Min latency Max throughput The base pattern Not in the Pareto frontier 15 95 7 : 1 8 32 163 6 : 2 7 63 172 5 : 3 6 95 165 4 : 4 5 rewritten pattern 147 155 3 : 5 4 174 142 2 : 6 3 189 110 1 : 7 2 260 140 0 : 8 1 Detected event latency (ms) throughput (event/s) rewriting # lazy eager
15. Pattern rewriting framework for event processing optimization With more than tenfold performance improvement between the original pattern and its rewritten alternative Future research and practical activities Investigation of additional rewritings Using patterns of the same type (e.g., for all pattern) Additional methods for rewriting (e.g. seq using all and filter agents) Elaborating an algorithm for event processing network rewriting Exploring heuristic-based approach for selection of the rewriting alternative of the sequence pattern Future Work
16.
Editor's Notes
#3: This was a bit of background on event processing and now lets explain what is the motivation for this optimization work. Performance studies of event processing systems demonstrate that there is a significant performance degradation as application’s complexity increases. At the left we can see that there is a major decrease in system’s throughput as we make our scenario more complex – starting with simple filtering, going through aggregations and eventually pattern detection is the one with worst performance with respect to system throughput. At the right we can see another example of a system performing well on standby world (...) but running into worse throughput (the upper one) and latency (the bottom one) as scenario complexity increases.
#6: In this work we define a framework for pattern rewriting, in order to gain optimized yet logically equivalent alternative. The rewriting capability exists in most declarative languages, and we’ve explored using this technique for event processing patterns. What can be the usage of such a rewriting: we can see two example here – the first one is extracting a piece of common logic from two patterns, reusing its result twice and saving cpu time for the whole system; the second example demonstrates how pattern of type all (conjunction of several events where the order is not important), can be rewritten into three all patterns, such that the first two can be executed in parallel, in case we are running in a distributed environment or on a multi-core platform. Our basic technique is splitting a single pattern into two patterns of the same type, where the first one produces a derived event which in turn is used as an input to the second one. The split of a pattern into two (kind of independent) parts gives rise to some challenges, when performing the split and I go into details on the next couple of slides.
#7: As specified here pattern assertion is the condition events need to meet in order to satisfy the pattern. As an example, in the speculative customer scenario we are looking for six events, in this order, where each pair indicate buy and sell transactions of the same stock. So the pattern assertion will have this form … When splitting the single pattern with six participants into two consecutive patterns with let’s say two and four participants respectively, we also need to spit the pattern assertion that originally refers to all six participants in a single statement. The most intuitive this to do is to separate the assertion into two parts where the first one refers to the first part participants and the other part to the second pattern. The intuition is pretty much correct, however, we need to make sure that the assertion after split satisfies two requirements: (1) both parts of the split condition are connected by the “AND” operator – due to the nature of this connection (both assertions parts will be necessarily satisfied by the final detection), and (2) the assertion split generated two independent parts in terms of participants (we can not have the same participant both in the left and in the right side of the split). These two requirements make the pattern assertion split a non-trivial task, and an informal algorithm for that is presented in the next slide…
#8: First we convert a pattern assertion, which is an expression with mathematical and logical operators into CNF; that in order to generate an expression with sub-expressions connected by “AND” which is required be the split. We can see an example here – the original expression is not in CNF and this one is, since NOT is in before a literal now and not before a complex clause. Now we can visually separate the assertion into three part, however its still incorrect – because we have the event type E appearing both in this clause and in this one as well, which creates a dependency between these two clauses. In order to go ahead and identify independent components we need to analyze the dependencies between the clauses of the rewritten assertion and this can be some by generating variable dependency graph, as demonstrated. Two variables are connected if they appear at the same literal or if they appear in the same OR clause. Unconnected components of such a graph imply the finest granulation of the pattern assertion, and in turn the maximal number of interconnected sub-patterns in the rewritten version. Note that the presented technique is valid for both all and sequence patterns, however, for the sequence pattern it only will be valid if the order of events after assertion split is preserved, since the occurrence time is of importance.
#10: Pattern policies that we’ve mentioned at the beginning of this presentation pose another challenge for rewriting. Naïve pattern split preserving the original policies does not provide a sufficient solution, as illustrated at this slide - … The reason for the incorrect matching resides in the fact that the rewritten pattern version, with two separate part, lost the synchronization that existed inherently in the original version, due to the fact that it was one single piece. The solution to this anomaly is in modifying pattern policies of the rewritten version (of its left part actually), so that it will work harder but produce sufficient input for the right hand pattern, that will eventually compensate the lack of synchronization caused by the split. In this example our intuition about the first pattern in the rewritten version is that it should report matching sets in an unrestricted manner and not a single one, that in order to finally report the one that is actually the last one before the entire detection, and since we would like to get the entire picture on this last and correct report we should keep instances and not consume them on particular detections before the critical last one. Next slide demonstrates policies mapping of the original and the rewritten version that lead to the correct detection and desired solution from our perspective.
#11: The upper table demonstrates mapping done for the rewriting we’ve talked about in the previous slide. While this example is quite a simple one (due to the single cardinality policy), the bottom table demonstrates mapping of a more complex case, were we report matching sets in an unrestricted manner, i.e. multiple times within a single time window. As you can see, the last instance selection policy is not sufficient any more, we need to use “each” instead, and consumption switches to reuse like in the previous case. Due to the multiple reports, the reuse policy used here raises a problem since we don’t need to keep instance in the left pattern of the rewritten version forever, but only till they are consumed by the final detection. The extended pattern assertion assures, among others, that instanced participated in the final matching set are not reported any more. The policies mapping and pattern assertion here are the schematic solution, there can be several implementations following this schema.
#12: We’ve supported our intuition about rewriting correctness with formal proof, were we formally defined pattern types (sequence, all), patterns’ split and demonstrated with formal statements that the original alternative is equivalent to the rewritten one. Using the denotational semantics we show that for the same input the original and the rewritten pattern forms produce identical output. Once we know how to split sequence and all patterns, we’ve leveraged this technique to balance different performance objectives of the sequence pattern, as demonstrated at the next slide.
#13: Pattern throughput is … Pattern latency is… We can see that in the blue alternative we gain pretty good throughput, since we only do work on EN instances arrival. All the rest are pushed into pattern’s internal state, which makes the throughput of this original pattern very high. However, this high throughput comes at the cost of latency, since the amount of work we will have to perform on EN instance arrival is big. To summarize, the left alternative provides good throughput, but quite a poor latency. The green rewriting, where as much weight as possible is on the left side, and only the necessary remainder is on the right side provides much better latency since we perform preprocessing (as much as possible) in advance, the DE represents the result of this preprocessing, and only a small delta is executed here upon EN instance arrival. This rewriting provides good latency along with poor throughput; the latter is caused by the hard work this pattern is required to perform, including generation of the derived events and its transmission. Its easy to notice that throughput versus latency tradeoff of the sequence pattern mirrors the eager versus latency evaluation of the pattern, similar to different evaluation modes of database queries.
#14: Once we know how throughput and latency are affected by different rewritings, the event processing application developer can configure his preference regarding the balance between this two. We can assign weight a to pattern latency and complementary weight (1-a) to pattern throughput and find the rewriting alternative minimizing our combined goal function g using simulation base approach. Experimental results are presented at the next slide.
#15: At this slide we demonstrate results of the basic experiment, where sequence pattern with 8 participants was split in 3 different manners, for example at the second line two participants (a pair) were left at this side and six participants were moved to the right side - it is denoted by 1:3. And the last rewriting left as few participants as possible at the right side (a pair), and all the rest are at the left side – it is 3:1. Not surprisingly, the first line demonstrates the best throughput and the worst latency, and the last line – the opposite: worst throughput and best latency. You can see that the second line is this table is dominated by the third line both in sense of throughput and latency, so the rest three results actually create a set of paretto optimal solutions. The second table shows values of the g function based on values assigned to a in the goal function. We can see that following the previous observation regarding the second line it is never chosen as an optimal solution.
#16: We believe that the potential of this work leaves much for further exploratory and practical activities. Among our future plans are …