SQL for Deep Dynamic Analysis?

Size: px
Start display at page:

Download "SQL for Deep Dynamic Analysis?"

Transcription

1 SQL for Deep Dynamic Analysis? Mohammad R. Azadmanesh Università della Svizzera italiana, Lugano, Switzerland Matthias Hauswirth Università della Svizzera italiana, Lugano, Switzerland Abstract If we develop a new dynamic analysis tool, how should we expose its functionalities? Through an interactive user interface, a DSL, a specific API, or in some other way? In this paper, we discuss how to use an already existing language familiar to most software engineers, SQL, to perform deep dynamic analyses. The goal is to explore the trade-off between expressiveness and ease-of-use. We use BLAST as the dynamic analysis tool and map its trace information to a relational database. We find that, even though SQL is expressive enough for deep analysis of program executions and information flow, it is not quite straight forward to express some of the queries software engineers might be interested in. However, it removes the burden of learning a new language from scratch, which could make it worthwhile as an option in some cases. Categories and Subject Descriptors D.2.5 [Software Engineering]: Testing and Debugging Diagnostics, Debugging aids, Tracing, SQL, BLAST Keywords Dynamic analysis, SQL, query-based analysis, program trace 1. Introduction Software developers use dynamic analysis for different purposes such as debugging, memory analysis, information flow analysis, and exploring the program behavior. Dynamic analysis tools make a trade-off between expressiveness and easeof-use in their interfaces. On one hand are easy-to-use tools like traditional debuggers, where one can easily set breakpoints in the source code or add a watchpoints on program variables to understand program behavior. However, it can be cumbersome or impossible to find a particular occurrence This is the author s version of the work. It is posted here for your personal use. Not for redistribution. The definitive version was published in the following publication: WODA 15, October 26, 2015, Pittsburgh, PA, USA c 2015 ACM /15/ of a program point or a particular instance of a class, and to navigate causal links between uses and definitions. On the other hand there are tools which sacrifice ease-of-use in favor of expressiveness. Usually, such tools come together with an expressive language that a software developer can use for precisely specifying a desired analysis. Examples of such tools are PQL [8], PTQL [3], or even ASM [2]. Even though one can perform deep and precise analysis using these tools, they are not quite easy to use for common developers, and they often require learning a new language. Given the spectrum of approaches, we want to shine the spotlight on an approach in the middle of the spectrum: an approach that benefits from the ease-of-use of an already existing and familiar language and at the same time is expressive enough to perform some deep analysis. In particular, we believe it might be worthwhile investigating SQL as a query language for dynamic analysis. We prototype our idea on top of a low-level dynamic analysis framework for Java programs called BLAST [1]. SQL is a specific language for defining and manipulating data in a relational database management system (RDBMS). The relations in an RDBMS prescribe a rather rigid form as opposed to the complex data structures normally used for keeping information flow traces about a program execution. By building our prototype we can see the consequences of encoding full-fledged information flow traces in a relational model. Specifically, we are interested in whether it would be easy to formulate the kinds of queries necessary for basic debugging (breakpoints, watchpoints), call stack analysis, heap analysis, and program slicing. 2. Data Model Figure 1 presents the data model we use for representing Java execution traces in an RDBMS. A database can store multiple program traces (table Traces). A Trace is composed of a set of Events. Each Event is generated upon executing a Java bytecode. The Events of a given Thread in a given Trace are ordered by a virtual timestamp stored in their index attribute. The event id attribute uniquely identifies an Event across all Traces and Threads. Attribute class code specifies the kind of bytecode (as given by BLAST) the Event executed. 2

2 Figure 1. Physical data model of BLAST for keeping the program traces Each bytecode in Java belongs to a method Activation (act id) and is executed in the context of a Thread (thread id). An Activation has local variables (Locals), operand stack slots (StackSlots), and a return value (ReturnValueLocs). Attribute provider in Activations specifies which (invocation) bytecode Event created this Activation. BLAST uses a use-def model to represent the Values used/defined by each Event. Each Event can use/define zero or more Values which reside in some kind of memory location. Each Value can be used by zero or more Events, but it can be defined only by a single Event. As a result, we introduce a junction table called Uses to represent the many-to-many relationship between an Event and its used Values, whereas for the defined Values, we use the attribute provider in Values to specify the event which provided that value. Attribute location id in Values specifies the memory location to which the Value is bound by referring to the attribute id of MemoryLocs. The following tables represent the different kinds of memory location available in Java: ArrayElements, IFields (instance fields), CFields (static fields), StackSlots (operand stack slots), Locals, ReturnValueLocs, and PseudoLocs (pseudo-locations for control-dependencies). The attribute location id in each of these tables can be used as a foreign key to join these tables with MemoryLocs. 3. Debugging 3.1 Breakpoint Traditional debuggers allow a programmer to inspect the runtime state of a program step by step starting from a breakpoint. In this section, we show how to perform a typical debugging scenario using SQL on BLAST s data model. Setting a breakpoint boils down to specifying a line number in source code, but it doesn t specify which occurrence. The SQL query in Listing 1 shows how to find all the occurrences of a line number in a specific source file. An occurrence of a specific source line can end up with several bytecode events. If we want to have a deeper anal- 3

3 1 SELECT e.* 2 FROM Events e, Activations a 3 WHERE e. source_line_no 4 and e. act_id = a. act_id 5 and a. source_name Listing 1. Finding all occurrences of a source line 1 SELECT * 2 FROM Values v, Locals l 3 WHERE l. name 4 and l. act_id 5 and l. location_id = v. location_id Listing 2. Finding all the value changes of a memory location ysis, say finding the Nth occurrence, then there is not any straight forward query on the given data model. It requires bypassing N-1 set of bytecode events where there is at least an occurrence of a bytecode event belonging to another source line number between each two consecutive occurrences. This clearly is not a straightforward query in our model. 3.2 Watchpoint We can introduce a watchpoint by specifying the memory location on which we would like to set the watchpoint, i.e., the name of the program variable, the context in which it is active, and the desired occurrence number. The context can be an activation record for local variables and stack slots, and an object/class for fields. The SQL query in Listing 2 shows how to find all the value changes of a specific memory location, e.g., a local variable named LOCAL in a specific activation record ACT ID. This query returns all the values assigned to this memory location in its lifetime. To specify a particular row, there is not a standard solution among the implementations of SQL in different RDBMSs. For example, in Oracle, we could use rownum, whereas in Postgres, we could use limit,offset. 3.3 Slicing Program slicing prunes a program such that those parts that could not have contributed to the failure are ruled out. The slicing process normally starts from a slicing criterion. A slicing criterion for a program specifies a window for observing its behavior [10]. Program slicing is a useful technique in debugging. Similar to program slicing, trace slicing determines all points in the execution that influenced a given point in time and space, but in terms of instruction occurrences in the trace, rather than instructions in the program. Given that BLAST provides program traces, we focus on how to slice a trace using SQL. Finding a backward slice requires tracking the use-def dependencies of events recursively, so it demands a recursive query. The query in Listing 3 shows how to find the backward slice with the slicing criterion set to SC EVENT ID. It starts 1 WITH RECURSIVE BackwardSlice ( n) AS ( 2 3 UNION 4 SELECT v. provider 5 FROM Uses u, BackwardSlice s, 6 Values v 7 WHERE u. event_id = s. n 8 and v. value_id = u. value_id 9 and v. provider IS NOT NULL 10 ) 11 SELECT * FROM BackwardSlice ; Listing 3. Finding backward slice for a slicing criterion 1 int [][] multiply ( int [][] a, int [][] b){ 2 int [][] c = new int [a. length ][b [0]. length ]; 3 for ( int i = 0; i < a. length ; i ++) { 4 for ( int j = 0; j < b[ i]. length ; j ++) { 5 int temp = 0; 6 for ( int k = 0; k < a. length ; k ++) { 7 temp += a[i][k] * b[k][j]; 8 } 9 c[i][j] = temp ; 10 } 11 } 12 } Listing 4. A buggy matrix multiplication algorithm with the slicing criterion itself (line 2) and recursively adds the events providing the use set of already visited events to the slice (lines 4-9). It continues this process up until it reaches to a point where there is nothing to follow back, i.e. the provider is null (line 9). 3.4 Case Study We now focus on a somewhat more realistic debugging scenario. Consider the code snippet in Listing 4, a buggy implementation of matrix multiplication in Java. To debug this program, we need to formulate a hypothesis and verify it with respect to the corresponding state of the program at runtime. Assume we run this program to multiply a 2*3 matrix by a 3*4 one, and we do not get the expected result. For debugging, we could then formulate a hypothesis; for example the following hypothesis about one of the elements of the resulting matrix C. HYPOTHESIS 1. c 13 = a 10 b 03 + a 11 b 13 + a 12 b 23 One trivial aspect about this hypothesis is that there have to be 6 array elements involved in computing the value of c 13. We can verify our hypothesis by formulating a query to determine which array elements were indeed used in computing the value of c 13. We break down this query into two steps: Step1: We first need to specify which element we would like to know the history about, i.e., the slicing criterion. The following query shows how to do this: 4

4 1 SELECT MAX ( event_index ) 2 FROM Events 3 WHERE event_class_code 4 and trace_id This asks for the last event that writes into an array element in a particular run identified by TRACE. Step 2: Now we need to find all array element locations that were used in computing the value of c 13. The following query shows how to perform this step in SQL: 1 SELECT l.* 2 FROM Events e, Uses u, 3 MemoryLocs l, Values v 4 WHERE e. event_id = u. event_id 5 and v. value_id = u. value_id 6 and v. location_id = l. location_id 7 and l. location_type 8 and v. type_id 9 and e. event_id in ( 10 SELECT event_id 11 FROM BackwardSlice ) 12 ) Starting with all the events in the backward slice of the slicing criterion (Lines 9-11), we keep only those that use a value coming from an array element memory location (Lines 4-7). Given that in Java, multi-dimensional arrays are represented as arrays of arrays, the result of this query includes those reads from arrays pointing to a sub-array. To fix this problem, we filter the results to include only those read values which are not of reference type (Line 8). The result includes only four rows. This is not compatible with our hypothesis that says there should be 6 elements involved. This tells us that there is a missing computation in computing the value of c 13. A precise look into the results reveals which elements were missing in the computation. 4. Heap Analysis In Java, all objects and array reside in the heap. One of the useful analyses for programmers is to traverse the object graph of a heap snapshot corresponding to a particular point of the execution. The data model shown in Figure 1 provides the required relationships to traverse that object graph. The first requirement for a heap analysis is to provide a heap snapshot on which one can apply a query. BLAST traces each step of program execution. Given the large size of a program trace, BLAST does not store a full snapshot of the memory state for each step, but it just keeps the delta of state modification upon executing each event. That said, we need to extract the state of the heap from a particular point of execution. In other terms, we need to find all reachable objects and the relationship among them at a particular point of execution. One way to do this is to start from a root node in object graph and recursively traverse the reference fields. However, a program can assign different values to the instance fields of an object during the lifetime of the object. We need to specify which state of an instance field 1 SELECT o. object_id, i. location_id, 2 MAX (v. value_id ) 3 FROM IFields i, Objects o, 4 Values v, Events e 5 WHERE i. object_id = o. object_id 6 and o. object_id 7 and o. trace_id 8 and v. location_id = i. location_id 9 and v. provider = e. event_id 10 and e. event_index 11 GROUP BY o. object_id, i. location_id ; 12 Listing 5. Finding the last values for the instance fields of a particular object in a designated trace and time corresponds to the point of execution we are aiming for. We break down the problem of traversing a heap graph into two steps: Step 1: Starting from a root object with the id OID, we find the last values for each one of its instance fields provided that the values are assigned before the time we would like to have the snapshot, say TIME. The query in Listing 5 shows how to get the results for this step. The query first finds all values for each instance field of the object. Each value is provided by an event, so the constraint in line 10 rules out those values whose provider event occurred after TIME. Finally, it applies an aggregate function (in this case, MAX(value id)) on each combination of an object and one of its instance fields to find its last value satisfying all the aforementioned conditions. For reusability purposes, we cast this query as a stored procedure called LAST VALUES BEFORE(OID, TRACE, TIME). Step 2: Step 1 provided the desired state for only a single level in the object graph traversal. We can perform the same logic recursively to traverse all reference fields the same way up until we visit all the objects reachable from the root in that particular snapshot. SQL-99 introduces the syntax for writing recursive queries. Listing 6 shows the corresponding query. It starts with the last values for each instance field of the root object (Lines 2-3) and in each step of recursion, it adds the objects pointed at via the last values of the reference fields of the objects visited so far (Lines 5-9). It should be noted that the union as opposed to union all, removes the possibility of an infinite loop in case of a cycle in the object graph. For the reusability purposes, we can cast the query in Listing 6 into a stored procedure. For the rest of this text, we refer to this stored procedure as TRAVERSE(oid,trace id,time). Given the possibility of heap traversal, let s use it for a real heap traversal example. In order to have a realistic comparison, we compare our approach against a DSL designed specifically for heap analysis, called FQL [9]. For demonstration purposes it uses the object graph of a program with a doubly-linked list of Student objects. The list itself is represented by a LinkedList object which has two references to Link objects representing the head and tail of the list. Each Link object has two references to other Link objects (the 5

5 1 WITH RECURSIVE Traverse ( n) AS ( 2 SELECT object_id, instance_field_id, last_value_id 3 FROM ) 4 UNION 5 SELECT l. object_id, l. instance_field_id, 6 l. last_value_id 7 FROM Values v, Traverse t, 8 LAST_VALUES_BEFORE ( ) l 9 WHERE v. value_id = t. last_value_id 10 ) 11 SELECT * FROM Traverse ; Listing 6. Traversing an object graph from a root object 1 WITH RECURSIVE StackTrace AS ( 2 SELECT a.* 3 FROM Activations a, Events e 4 WHERE e. act_id = a. act_id 5 and e. event_id 6 UNION 7 SELECT a.* 8 FROM Activations a, Events e, 9 StackTrace s 10 WHERE s. provider = e. event_id 11 and a. act_id = e. act_id 12 ) 13 SELECT * FROM StackTrace ; Listing 8. Extracting stack trace for a particular point of execution 1 SELECT COUNT ( tr. object_id ) 2 FROM ) tr, 3 Classes c1, Classes c2, 4 Objects o1, Objects o2 5 IFields i, Values v 6 where tr. object_id = o1. object_id 7 and o1. class_id = c1. class_id 8 and c1. class_name = Link 9 and tr. instance_field_id = 10 i. instance_field_id 11 and i. field_name = element 12 and tr. last_value_id = v. value_id 13 and v. object_id = o2. object_id 14 and o2. object_id = c2. class_id 15 and c2. class_name = Student ; Listing 7. Counting the number of Link nodes pointing to a Student previous and the next links in the list), and a third reference to one of the Student objects contained in the list. One of the examples used for explaining FQL is about reporting the number of Links that store an object of type Student. Here is the query written in FQL: 1 qcount (" fstringproperty (" pclassname ", 2 " Student ", ffield (" element ", 3 fstringproperty (" pclassname ", 4 " Link ", fsnapshot ())))"); The corresponding query in SQL on our data model is presented in Listing 7. Line 2 traverses the subset of the object graph reachable from the root node LinkedList identified by OID at the time specified by TIME. The constraints specified in lines 6-8 filter out those rows that include information about any object which is not of type Link. Given that the results of traverse include a row for each field of an object, lines 9-11 prunes the results to include the results referring to the field named element of each object. Lines filter the results to contain only those rows that point to an object of type Student. 5. Call Stack Analysis Stack traces are useful clues for debugging. A dynamic analysis tool can provide stack traces at different points during program execution. The data model presented in Figure 1 provides enough information to recover the state of the call stack at any point of interest. The query in Listing 8 shows how to retrieve the state of the stack at a particular point (TIME). It is again a recursive query, starting from the activation record which was active while our event of interest occurred (Lines 2-5). It finds the invocation event that created the activation record already visited and recursively finds its enclosing activation record and so on (Lines 7-11). 6. Lessons Learned Using SQL enables programmers to formulate deep dynamic analysis queries without the need to learn a new language. However, this does not come without challenges: 1. Keeping data in a normalized database causes lots of joins, even for very simple analyses. This can be cumbersome. 2. Most of the analyses performed depend on the support for SQL-99 and in particular, recursive queries. This is not something that all RDBMSs support. Writing the queries without using recursive queries would be quite complicated and confusing. 3. Most of the built-in functions of SQL are not standard and different implementations in different RDBMSs have different syntax for that (see Section 3.2). This limits portability of queries between different RDBMSs. 4. Program traces are usually large. We have not evaluated performance yet, but we expect queries to be slow. 5. Even though SQL is a familiar language, it is not quite straightforward to write deep queries for dynamic analysis. It requires some time for the programmer to get familiar with the data model to issue deep queries correctly. 6. Parameterized stored procedures seem quite useful for dynamic analysis given the similarity of analyses one may need to perform during a session. 6

6 7. Related Work There is a large body of work on dynamic analysis tools with a specific query language. PTQL [3] is a query language that performs on program traces online. It instruments the programs at appropriate points to gather the information required for satisfying the query. It uses a relational query model on a schema composed of only two relations. Our approach is an offline approach on a database schema with more details. PQL [8] is a query language that allows programmers to verify design rules of an application. The focus of PQL is to track how objects flow through the program, how methods get called, and fields get accessed, whereas the data model we discussed can be used for deeper analysis. Lencevicius et. al. [6] implemented a query-based debugger for exploring large object spaces to verify the relationships among objects. This technique is confined to a single state of the program whereas our approach targets the whole program execution. FQL [9] is a query-based debugger performing on heap snapshots. It is confined to a single heap snapshot, whereas our approach is applied to a full history of the heap. On the other hand, there are dynamic analysis tools requiring a general purpose language to implement the actual analysis. DiSL [7] is a framework for bytecode instrumentation based on aspects. A programmer can perform an analysis by writing instrumentation code. The framework weaves the instrumentation code at appropriate locations in the bytecode array. ASM [2] is a Java bytecode engineering library with two types of APIs, core and tree API. BLAST [1] is a dynamic analysis tool for Java programs at the bytecode level. Its low-level instrumentation provides a thorough information flow analysis on program traces. Finally, Whyline [4, 5] is an interrogative debugger that allows the programmer to ask why did and why didn t questions about the program execution. It uses the dynamic slicing to provide answers to the questions raised by the programmer. 8. Conclusion Based on our preliminary experience, we believe that using SQL could be an interesting compromise between expressiveness and ease-of-use for deep dynamic analysis. Our BLAST-based data model allows the formulation of deep analyses in a somewhat intuitive way, and many developers already are familiar at least with the simpler parts of SQL. However, the queries become quite verbose, especially due to the many joins required to navigate across all the involved tables. Moreover, most meaningful queries are recursive, a feature of SQL that developers might not be familiar with and that not all DBMSs support. Providing a clean set of abstractions in the form of stored procedures might help to get a user experience that is not too different from that of less expressive dynamic analysis DSLs. Acknowledgments The first author was funded by Swiss National Science Foundation grant References [1] M. R. Azadmanesh and M. Hauswirth. Blast: Bytecode-level analysis on sliced traces. In Proceedings of the Principles and Practices of Programming on The Java Platform, PPPJ 15, pages , New York, NY, USA, ACM. ISBN [2] E. Bruneton, R. Lenglet, and T. Coupaye. Asm: a code manipulation tool to implement adaptable systems. Adaptable and extensible component systems, 30, [3] S. F. Goldsmith, R. O Callahan, and A. Aiken. Relational queries over program traces. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA 05, pages , New York, NY, USA, ACM. [4] A. J. Ko and B. A. Myers. Designing the whyline: A debugging interface for asking questions about program behavior. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, CHI 04, pages , New York, NY, USA, ACM. ISBN [5] A. J. Ko and B. A. Myers. Finding causes of program output with the java whyline. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, CHI 09, pages , New York, NY, USA, ACM. ISBN [6] R. Lencevicius, U. Hölzle, and A. K. Singh. Query-based debugging of object-oriented programs. In Proceedings of the 12th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA 97, pages , New York, NY, USA, ACM. ISBN [7] L. Marek, A. Villazón, Y. Zheng, D. Ansaloni, W. Binder, and Z. Qi. Disl: a domain-specific language for bytecode instrumentation. In Proceedings of the 11th annual international conference on Aspect-oriented Software Development, pages ACM, [8] M. Martin, B. Livshits, and M. S. Lam. Finding application errors and security flaws using pql: A program query language. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA 05, pages , New York, NY, USA, ACM.. [9] A. Potanin, J. Noble, and R. Biddle. Snapshot query-based debugging. In Proceedings of the 2004 Australian Software Engineering Conference, ASWEC 04, pages 251, Washington, DC, USA, IEEE Computer Society. [10] M. Weiser. Program slicing. In Proceedings of the 5th international conference on Software engineering, ICSE 81, pages , Piscataway, NJ, USA, IEEE Press. ISBN

Towards a Moldable Debugger

Towards a Moldable Debugger Towards a Moldable Debugger Andrei Chiş Software Composition Group University of Bern, Switzerland http://scg.unibe.ch//staff/ andreichis Oscar Nierstrasz Software Composition Group University of Bern,

More information

Temporal Data Model for Program Debugging

Temporal Data Model for Program Debugging Temporal Data Model for Program Debugging Demian Lessa Jan Chomicki Bharat Jayaraman Department of Computer Science and Engineering State University of New York, Buffalo August 29, 2011 Current Debuggers

More information

Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior

Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior Andrew J. Ko and Brad A. Myers School of Computer Science, Carnegie Mellon University Presenter: Shaosong Li

More information

COMPOSABILITY, PROVABILITY, REUSABILITY (CPR) FOR SURVIVABILITY

COMPOSABILITY, PROVABILITY, REUSABILITY (CPR) FOR SURVIVABILITY AFRL-IF-RS-TR-2002-61 Final Technical Report April 2002 COMPOSABILITY, PROVABILITY, REUSABILITY (CPR) FOR SURVIVABILITY Kestrel Institute Sponsored by Defense Advanced Research Projects Agency DARPA Order

More information

Snapshot Query-Based Debugging

Snapshot Query-Based Debugging Snapshot Query-Based Debugging Alex Potanin, James Noble, Robert Biddle School of Mathematical and Computing Sciences Victoria University of Wellington New Zealand {alex,kjx,robert}@mcs.vuw.ac.nz Abstract

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

Program Partitioning - A Framework for Combining Static and Dynamic Analysis

Program Partitioning - A Framework for Combining Static and Dynamic Analysis Program Partitioning - A Framework for Combining Static and Dynamic Analysis Pankaj Jalote, Vipindeep V, Taranbir Singh, Prateek Jain Department of Computer Science and Engineering Indian Institute of

More information

Numerical static analysis with Soot

Numerical static analysis with Soot Numerical static analysis with Soot Gianluca Amato Università G. d Annunzio di Chieti Pescara ACM SIGPLAN International Workshop on the State Of the Art in Java Program Analysis SOAP 2013 (joint work with

More information

Tracechecks: Defining semantic interfaces with temporal logic

Tracechecks: Defining semantic interfaces with temporal logic Tracechecks Defining semantic interfaces with temporal logic Eric Bodden 1 Volker Stolz 2 1 Sable Research Group McGill University, Montréal, Canada 2 MOVES: Software Modeling and Verification RWTH Aachen

More information

Asking and Answering Why and Why Not Questions about Program Behavior. Andrew Ko Brad Myers

Asking and Answering Why and Why Not Questions about Program Behavior. Andrew Ko Brad Myers Asking and Answering Why and Why Not Questions about Program Behavior Andrew Ko Brad Myers Asking and Answering Why and Why Not Questions about Program Behavior Andrew Ko Brad Myers now at the University

More information

An Extensible AOP Framework for Runtime Monitoring

An Extensible AOP Framework for Runtime Monitoring An Extensible AOP Framework for Runtime Monitoring Gholamali Rahnavard Amjad Nusayr Jonathan Cook New Mexico State University University of Houston - Victoria New Mexico State University rah@nmsu.edu nusayra@uhv.edu

More information

Automatic Generation of Graph Models for Model Checking

Automatic Generation of Graph Models for Model Checking Automatic Generation of Graph Models for Model Checking E.J. Smulders University of Twente edwin.smulders@gmail.com ABSTRACT There exist many methods to prove the correctness of applications and verify

More information

Synthesis of Equivalent Method Calls in Guava

Synthesis of Equivalent Method Calls in Guava Synthesis of Equivalent Method Calls in Guava Andrea Mattavelli 1, Alberto Goffi 1 and Alessandra Gorla 2 1 Università della Svizzera italiana (USI), Lugano, Switzerland {andrea.mattavelli,alberto.goffi}@usi.ch

More information

Declarative and Visual Debugging in Eclipse

Declarative and Visual Debugging in Eclipse Declarative and Visual Debugging in Eclipse Jeffrey K. Czyz Computer Science and Engineering University at Buffalo (SUNY) jkczyz@cse.buffalo.edu Bharat Jayaraman Computer Science and Engineering University

More information

Implementing Table Operations Using Structured Query Language (SQL) Using Multiple Operations. SQL: Structured Query Language

Implementing Table Operations Using Structured Query Language (SQL) Using Multiple Operations. SQL: Structured Query Language Implementing Table Operations Using Structured Query Language (SQL) Using Multiple Operations Show Only certain columns and rows from the join of Table A with Table B The implementation of table operations

More information

CSE 410: Systems Programming

CSE 410: Systems Programming CSE 410: Systems Programming Recitation 4: Introduction to gdb Introduction The GNU Debugger, or gdb, is a powerful symbolic debugger. Symbolic debuggers are available for many languages and platforms,

More information

2. Use elementary row operations to rewrite the augmented matrix in a simpler form (i.e., one whose solutions are easy to find).

2. Use elementary row operations to rewrite the augmented matrix in a simpler form (i.e., one whose solutions are easy to find). Section. Gaussian Elimination Our main focus in this section is on a detailed discussion of a method for solving systems of equations. In the last section, we saw that the general procedure for solving

More information

Static type safety guarantees for the operators of a relational database querying system. Cédric Lavanchy

Static type safety guarantees for the operators of a relational database querying system. Cédric Lavanchy Static type safety guarantees for the operators of a relational database querying system Cédric Lavanchy June 6, 2008 Contents 1 Previous work 2 2 Goal 3 3 Theory bases 4 3.1 Typing a relation...........................

More information

Comment-based Keyword Programming

Comment-based Keyword Programming Comment-based Keyword Programming Yusuke Sakamoto, Haruhiko Sato, Satoshi Oyama, Masahito Kurihara Abstract Keyword programming is a technique to generate code fragments automatically from the several

More information

Control Flow Analysis with SAT Solvers

Control Flow Analysis with SAT Solvers Control Flow Analysis with SAT Solvers Steven Lyde, Matthew Might University of Utah, Salt Lake City, Utah, USA Abstract. Control flow analyses statically determine the control flow of programs. This is

More information

JIVE: Dynamic Analysis for Java

JIVE: Dynamic Analysis for Java JIVE: Dynamic Analysis for Java Overview, Architecture, and Implementation Demian Lessa Computer Science and Engineering State University of New York, Buffalo Dec. 01, 2010 Outline 1 Overview 2 Architecture

More information

A Propagation Engine for GCC

A Propagation Engine for GCC A Propagation Engine for GCC Diego Novillo Red Hat Canada dnovillo@redhat.com May 1, 2005 Abstract Several analyses and transformations work by propagating known values and attributes throughout the program.

More information

A Special-Purpose AOP Framework for Runtime Monitoring

A Special-Purpose AOP Framework for Runtime Monitoring A Special-Purpose AOP Framework for Runtime Monitoring Amjad Nusayr Jonathan Cook Gholamali Rahnavard University of Houston - Victoria New Mexico State University New Mexico State University anusayr@cs.nmsu.edu

More information

Computer Science 210 Data Structures Siena College Fall Topic Notes: Recursive Methods

Computer Science 210 Data Structures Siena College Fall Topic Notes: Recursive Methods Computer Science 210 Data Structures Siena College Fall 2017 Topic Notes: Recursive Methods You have seen in this course and in your previous work that iteration is a fundamental building block that we

More information

Microsoft. [MS20762]: Developing SQL Databases

Microsoft. [MS20762]: Developing SQL Databases [MS20762]: Developing SQL Databases Length : 5 Days Audience(s) : IT Professionals Level : 300 Technology : Microsoft SQL Server Delivery Method : Instructor-led (Classroom) Course Overview This five-day

More information

Unit-5 Dynamic Programming 2016

Unit-5 Dynamic Programming 2016 5 Dynamic programming Overview, Applications - shortest path in graph, matrix multiplication, travelling salesman problem, Fibonacci Series. 20% 12 Origin: Richard Bellman, 1957 Programming referred to

More information

PREPARING FOR PRELIM 1

PREPARING FOR PRELIM 1 PREPARING FOR PRELIM 1 CS 1110: FALL 2012 This handout explains what you have to know for the first prelim. There will be a review session with detailed examples to help you study. To prepare for the prelim,

More information

Chapter 7. Introduction to Structured Query Language (SQL) Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel

Chapter 7. Introduction to Structured Query Language (SQL) Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel Chapter 7 Introduction to Structured Query Language (SQL) Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel 1 In this chapter, you will learn: The basic commands

More information

Oracle BI 11g R1: Build Repositories

Oracle BI 11g R1: Build Repositories Oracle University Contact Us: 02 6968000 Oracle BI 11g R1: Build Repositories Duration: 5 Days What you will learn This course provides step-by-step procedures for building and verifying the three layers

More information

Developing SQL Databases

Developing SQL Databases Course 20762B: Developing SQL Databases Page 1 of 9 Developing SQL Databases Course 20762B: 4 days; Instructor-Led Introduction This four-day instructor-led course provides students with the knowledge

More information

Visual Detection of Duplicated Code

Visual Detection of Duplicated Code Visual Detection of Duplicated Code Matthias Rieger, Stéphane Ducasse Software Composition Group, University of Berne ducasse,rieger@iam.unibe.ch http://www.iam.unibe.ch/scg/ Abstract Code duplication

More information

GDB Tutorial. A Walkthrough with Examples. CMSC Spring Last modified March 22, GDB Tutorial

GDB Tutorial. A Walkthrough with Examples. CMSC Spring Last modified March 22, GDB Tutorial A Walkthrough with Examples CMSC 212 - Spring 2009 Last modified March 22, 2009 What is gdb? GNU Debugger A debugger for several languages, including C and C++ It allows you to inspect what the program

More information

STARCOUNTER. Technical Overview

STARCOUNTER. Technical Overview STARCOUNTER Technical Overview Summary 3 Introduction 4 Scope 5 Audience 5 Prerequisite Knowledge 5 Virtual Machine Database Management System 6 Weaver 7 Shared Memory 8 Atomicity 8 Consistency 9 Isolation

More information

DOWNLOAD PDF LINKED LIST PROGRAMS IN DATA STRUCTURE

DOWNLOAD PDF LINKED LIST PROGRAMS IN DATA STRUCTURE Chapter 1 : What is an application of linear linked list data structures? - Quora A linked list is a linear data structure, in which the elements are not stored at contiguous memory locations. The elements

More information

20762B: DEVELOPING SQL DATABASES

20762B: DEVELOPING SQL DATABASES ABOUT THIS COURSE This five day instructor-led course provides students with the knowledge and skills to develop a Microsoft SQL Server 2016 database. The course focuses on teaching individuals how to

More information

Physically-Based Laser Simulation

Physically-Based Laser Simulation Physically-Based Laser Simulation Greg Reshko Carnegie Mellon University reshko@cs.cmu.edu Dave Mowatt Carnegie Mellon University dmowatt@andrew.cmu.edu Abstract In this paper, we describe our work on

More information

CS2 Algorithms and Data Structures Note 10. Depth-First Search and Topological Sorting

CS2 Algorithms and Data Structures Note 10. Depth-First Search and Topological Sorting CS2 Algorithms and Data Structures Note 10 Depth-First Search and Topological Sorting In this lecture, we will analyse the running time of DFS and discuss a few applications. 10.1 A recursive implementation

More information

Enhanced Debugging with Traces

Enhanced Debugging with Traces Enhanced Debugging with Traces An essential technique used in emulator development is a useful addition to any programmer s toolbox. Peter Phillips Creating an emulator to run old programs is a difficult

More information

Welcome to the topic of SAP HANA modeling views.

Welcome to the topic of SAP HANA modeling views. Welcome to the topic of SAP HANA modeling views. 1 At the end of this topic, you will be able to describe the three types of SAP HANA modeling views and use the SAP HANA Studio to work with views in the

More information

SQL Server Development 20762: Developing SQL Databases in Microsoft SQL Server Upcoming Dates. Course Description.

SQL Server Development 20762: Developing SQL Databases in Microsoft SQL Server Upcoming Dates. Course Description. SQL Server Development 20762: Developing SQL Databases in Microsoft SQL Server 2016 Learn how to design and Implement advanced SQL Server 2016 databases including working with tables, create optimized

More information

EECS 481 Software Engineering Exam #1. You have 1 hour and 20 minutes to work on the exam.

EECS 481 Software Engineering Exam #1. You have 1 hour and 20 minutes to work on the exam. EECS 481 Software Engineering Exam #1 Write your name and UM uniqname on the exam. There are ten (10) pages in this exam (including this one) and seven (7) questions, each with multiple parts. Some questions

More information

Transformations Debugging Transformations

Transformations Debugging Transformations Transformations Debugging Transformations Māris Jukšs School of Computer Science McGill University Montréal, Québec, Canada Email: mjukss@cs.mcgill.ca Clark Verbrugge School of Computer Science McGill

More information

+ Abstract Data Types

+ Abstract Data Types Linked Lists Abstract Data Types An Abstract Data Type (ADT) is: a set of values a set of operations Sounds familiar, right? I gave a similar definition for a data structure. Abstract Data Types Abstract

More information

Querypoint Debugging. John J. Barton. Abstract. 1. Introduction. IBM Research Almaden San Jose, CA

Querypoint Debugging. John J. Barton. Abstract. 1. Introduction. IBM Research Almaden San Jose, CA Querypoint Debugging Salman Mirghasemi Claude Petitpierre School of Computer and Communication Sciences Ecole Polytechnique Fédérale de Lausanne, Switzerland {salman.mirghasemi,claude.petitpierre}@epfl.ch

More information

Sri Vidya College of Engineering & Technology

Sri Vidya College of Engineering & Technology UNIT I INTRODUCTION TO OOP AND FUNDAMENTALS OF JAVA 1. Define OOP. Part A Object-Oriented Programming (OOP) is a methodology or paradigm to design a program using classes and objects. It simplifies the

More information

Comprehensive Guide to Evaluating Event Stream Processing Engines

Comprehensive Guide to Evaluating Event Stream Processing Engines Comprehensive Guide to Evaluating Event Stream Processing Engines i Copyright 2006 Coral8, Inc. All rights reserved worldwide. Worldwide Headquarters: Coral8, Inc. 82 Pioneer Way, Suite 106 Mountain View,

More information

Garbage Collection (2) Advanced Operating Systems Lecture 9

Garbage Collection (2) Advanced Operating Systems Lecture 9 Garbage Collection (2) Advanced Operating Systems Lecture 9 Lecture Outline Garbage collection Generational algorithms Incremental algorithms Real-time garbage collection Practical factors 2 Object Lifetimes

More information

Java Instrumentation for Dynamic Analysis

Java Instrumentation for Dynamic Analysis Java Instrumentation for Dynamic Analysis and Michael Ernst MIT CSAIL Page 1 Java Instrumentation Approaches Instrument source files Java Debug Interface (JDI) Instrument class files Page 2 Advantages

More information

MID TERM MEGA FILE SOLVED BY VU HELPER Which one of the following statement is NOT correct.

MID TERM MEGA FILE SOLVED BY VU HELPER Which one of the following statement is NOT correct. MID TERM MEGA FILE SOLVED BY VU HELPER Which one of the following statement is NOT correct. In linked list the elements are necessarily to be contiguous In linked list the elements may locate at far positions

More information

Database Management System Dr. S. Srinath Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No.

Database Management System Dr. S. Srinath Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No. Database Management System Dr. S. Srinath Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No. # 13 Constraints & Triggers Hello and welcome to another session

More information

A classic tool: slicing. CSE503: Software Engineering. Slicing, dicing, chopping. Basic ideas. Weiser s approach. Example

A classic tool: slicing. CSE503: Software Engineering. Slicing, dicing, chopping. Basic ideas. Weiser s approach. Example A classic tool: slicing CSE503: Software Engineering David Notkin University of Washington Computer Science & Engineering Spring 2006 Of interest by itself And for the underlying representations Originally,

More information

Efficient Solving of Structural Constraints

Efficient Solving of Structural Constraints Efficient Solving of Structural Constraints Bassem Elkarablieh University of Texas at Austin Austin, TX 78712 elkarabl@ece.utexas.edu Darko Marinov University of Illinois at Urbana Urbana, IL 61801 marinov@cs.uiuc.edu

More information

CS201 Some Important Definitions

CS201 Some Important Definitions CS201 Some Important Definitions For Viva Preparation 1. What is a program? A program is a precise sequence of steps to solve a particular problem. 2. What is a class? We write a C++ program using data

More information

A Java Execution Simulator

A Java Execution Simulator A Java Execution Simulator Steven Robbins Department of Computer Science University of Texas at San Antonio srobbins@cs.utsa.edu ABSTRACT This paper describes JES, a Java Execution Simulator that allows

More information

Debugging. Thomas LaToza D: Human Aspects of Software Development (HASD) Spring, (C) Copyright Thomas D. LaToza

Debugging. Thomas LaToza D: Human Aspects of Software Development (HASD) Spring, (C) Copyright Thomas D. LaToza Debugging Thomas LaToza 05-899D: Human Aspects of Software Development (HASD) Spring, 2011 (C) Copyright Thomas D. LaToza Definitions Error - discrepancy between actual behavior of system and intended

More information

C=(FS) 2 : Cubing by Composition of Faceted Search

C=(FS) 2 : Cubing by Composition of Faceted Search C=(FS) : Cubing by Composition of Faceted Search Ronny Lempel Dafna Sheinwald IBM Haifa Research Lab Introduction to Multifaceted Search and to On-Line Analytical Processing (OLAP) Intro Multifaceted Search

More information

Appendix A: Syntax Diagrams

Appendix A: Syntax Diagrams A. Syntax Diagrams A-1 Appendix A: Syntax Diagrams References: Kathleen Jensen/Niklaus Wirth: PASCAL User Manual and Report, 4th Edition. Springer, 1991. Niklaus Wirth: Compilerbau (in German). Teubner,

More information

D Programming Language

D Programming Language Group 14 Muazam Ali Anil Ozdemir D Programming Language Introduction and Why D? It doesn t come with a religion this is written somewhere along the overview of D programming language. If you actually take

More information

A PARSING APPROACH FOR SYSTEM BEHAVIOUR MODELING

A PARSING APPROACH FOR SYSTEM BEHAVIOUR MODELING IADIS International Conference Applied Computing 2007 A PARSING APPROACH FOR SYSTEM BEHAVIOUR MODELING Lau Sei Ping 1, Wee Bui Lin 2, Nurfauza bt Jali 3 Faculty of Computer Science and Information Technology

More information

Mining Frequent Bug-Fix Code Changes

Mining Frequent Bug-Fix Code Changes Mining Frequent Bug-Fix Code Changes Haidar Osman, Mircea Lungu, Oscar Nierstrasz Software Composition Group University of Bern Bern, Switzerland {osman, lungu, oscar@iam.unibe.ch Abstract Detecting bugs

More information

Rubicon: Scalable Bounded Verification of Web Applications

Rubicon: Scalable Bounded Verification of Web Applications Joseph P. Near Research Statement My research focuses on developing domain-specific static analyses to improve software security and reliability. In contrast to existing approaches, my techniques leverage

More information

Lecture #14 Optimizer Implementation (Part I)

Lecture #14 Optimizer Implementation (Part I) 15-721 ADVANCED DATABASE SYSTEMS Lecture #14 Optimizer Implementation (Part I) Andy Pavlo / Carnegie Mellon University / Spring 2016 @Andy_Pavlo // Carnegie Mellon University // Spring 2017 2 TODAY S AGENDA

More information

Database Systems: Design, Implementation, and Management Tenth Edition. Chapter 7 Introduction to Structured Query Language (SQL)

Database Systems: Design, Implementation, and Management Tenth Edition. Chapter 7 Introduction to Structured Query Language (SQL) Database Systems: Design, Implementation, and Management Tenth Edition Chapter 7 Introduction to Structured Query Language (SQL) Objectives In this chapter, students will learn: The basic commands and

More information

Week. Lecture Topic day (including assignment/test) 1 st 1 st Introduction to Module 1 st. Practical

Week. Lecture Topic day (including assignment/test) 1 st 1 st Introduction to Module 1 st. Practical Name of faculty: Gaurav Gambhir Discipline: Computer Science Semester: 6 th Subject: CSE 304 N - Essentials of Information Technology Lesson Plan Duration: 15 Weeks (from January, 2018 to April, 2018)

More information

Environment Modeling for Automated Testing of Cloud Applications

Environment Modeling for Automated Testing of Cloud Applications Environment Modeling for Automated Testing of Cloud Applications Linghao Zhang 1,2, Tao Xie 2, Nikolai Tillmann 3, Peli de Halleux 3, Xiaoxing Ma 1, Jian lv 1 1 Nanjing University, China, 2 North Carolina

More information

Object Oriented Programming Exception Handling

Object Oriented Programming Exception Handling Object Oriented Programming Exception Handling Budditha Hettige Department of Computer Science Programming Errors Types Syntax Errors Logical Errors Runtime Errors Syntax Errors Error in the syntax of

More information

Hierarchical Pointer Analysis for Distributed Programs

Hierarchical Pointer Analysis for Distributed Programs Hierarchical Pointer Analysis for Distributed Programs Amir Kamil Computer Science Division, University of California, Berkeley kamil@cs.berkeley.edu April 14, 2006 1 Introduction Many distributed, parallel

More information

Object-oriented Compiler Construction

Object-oriented Compiler Construction 1 Object-oriented Compiler Construction Extended Abstract Axel-Tobias Schreiner, Bernd Kühl University of Osnabrück, Germany {axel,bekuehl}@uos.de, http://www.inf.uos.de/talks/hc2 A compiler takes a program

More information

Chapter 9: Dealing with Errors

Chapter 9: Dealing with Errors Chapter 9: Dealing with Errors What we will learn: How to identify errors Categorising different types of error How to fix different errors Example of errors What you need to know before: Writing simple

More information

The Relationships between Domain Specific and General- Purpose Languages

The Relationships between Domain Specific and General- Purpose Languages The Relationships between Domain Specific and General- Purpose Languages Oded Kramer and Arnon Sturm Department of Information Systems Engineering, Ben-Gurion University of the Negev Beer-Sheva, Israel

More information

CompuScholar, Inc. Alignment to Nevada "Computer Science" Course Standards

CompuScholar, Inc. Alignment to Nevada Computer Science Course Standards CompuScholar, Inc. Alignment to Nevada "Computer Science" Course Standards Nevada Course Details: Course Name: Computer Science Primary Cluster: Information and Media Technologies Standards Course Code(s):

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

Implementation of Customized FindBugs Detectors

Implementation of Customized FindBugs Detectors Implementation of Customized FindBugs Detectors Jerry Zhang Department of Computer Science University of British Columbia jezhang@cs.ubc.ca ABSTRACT There are a lot of static code analysis tools to automatically

More information

An Overview of the BLITZ System

An Overview of the BLITZ System An Overview of the BLITZ System Harry H. Porter III Department of Computer Science Portland State University Introduction The BLITZ System is a collection of software designed to support a university-level

More information

DDgraph: a Tool to Visualize Dynamic Dependences

DDgraph: a Tool to Visualize Dynamic Dependences DDgraph: a Tool to Visualize Dynamic Dependences Françoise Balmas Harald Wertz Rim Chaabane Laboratoire Intelligence Artificielle Université Paris 8 93526 Saint-Denis (France) {fb,hw,lysop}@ai.univ-paris8.fr

More information

A New Metric for Code Readability

A New Metric for Code Readability IOSR Journal of Computer Engineering (IOSRJCE) ISSN: 2278-0661, ISBN: 2278-8727Volume 6, Issue 6 (Nov. - Dec. 2012), PP 44-48 A New Metric for Code Readability Rajendar Namani 1, Kumar J 2 1 Department

More information

Interface evolution via public defender methods

Interface evolution via public defender methods Interface evolution via public defender methods Brian Goetz Second draft, May 2010 1. Problem statement Once published, it is impossible to add methods to an interface without breaking existing implementations.

More information

DISCUSSION 5min 2/24/2009. DTD to relational schema. Inlining. Basic inlining

DISCUSSION 5min 2/24/2009. DTD to relational schema. Inlining. Basic inlining XML DTD Relational Databases for Querying XML Documents: Limitations and Opportunities Semi-structured SGML Emerging as a standard E.g. john 604xxxxxxxx 778xxxxxxxx

More information

challenges in domain-specific modeling raphaël mannadiar august 27, 2009

challenges in domain-specific modeling raphaël mannadiar august 27, 2009 challenges in domain-specific modeling raphaël mannadiar august 27, 2009 raphaël mannadiar challenges in domain-specific modeling 1/59 outline 1 introduction 2 approaches 3 debugging and simulation 4 differencing

More information

Lecture Notes on Intermediate Representation

Lecture Notes on Intermediate Representation Lecture Notes on Intermediate Representation 15-411: Compiler Design Frank Pfenning Lecture 10 September 26, 2013 1 Introduction In this lecture we discuss the middle end of the compiler. After the source

More information

Session 6: Relational Databases

Session 6: Relational Databases INFM 603: Information Technology and Organizational Context Session 6: Relational Databases Jimmy Lin The ischool University of Maryland Thursday, October 16, 2014 Databases Yesterday Databases Today What

More information

CSE 12 Abstract Syntax Trees

CSE 12 Abstract Syntax Trees CSE 12 Abstract Syntax Trees Compilers and Interpreters Parse Trees and Abstract Syntax Trees (AST's) Creating and Evaluating AST's The Table ADT and Symbol Tables 16 Using Algorithms and Data Structures

More information

A Study of Bad Smells in Code

A Study of Bad Smells in Code International Journal for Science and Emerging ISSN No. (Online):2250-3641 Technologies with Latest Trends 7(1): 16-20 (2013) ISSN No. (Print): 2277-8136 A Study of Bad Smells in Code Gurpreet Singh* and

More information

Bisection Debugging. 1 Introduction. Thomas Gross. Carnegie Mellon University. Preliminary version

Bisection Debugging. 1 Introduction. Thomas Gross. Carnegie Mellon University. Preliminary version Bisection Debugging Thomas Gross School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 Institut für Computer Systeme ETH Zürich CH 8092 Zürich Preliminary version Abstract This paper

More information

UNIVERSITY OF MALTA THE MATRICULATION EXAMINATION ADVANCED LEVEL. COMPUTING May 2016 EXAMINERS REPORT

UNIVERSITY OF MALTA THE MATRICULATION EXAMINATION ADVANCED LEVEL. COMPUTING May 2016 EXAMINERS REPORT UNIVERSITY OF MALTA THE MATRICULATION EXAMINATION ADVANCED LEVEL COMPUTING May 2016 EXAMINERS REPORT MATRICULATION AND SECONDARY EDUCATION CERTIFICATE EXAMINATIONS BOARD Computing Advanced Level May 2016

More information

CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs Pallavi Joshi 1, Mayur Naik 2, Chang-Seo Park 1, and Koushik Sen 1

CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs Pallavi Joshi 1, Mayur Naik 2, Chang-Seo Park 1, and Koushik Sen 1 CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs Pallavi Joshi 1, Mayur Naik 2, Chang-Seo Park 1, and Koushik Sen 1 1 University of California, Berkeley, USA {pallavi,parkcs,ksen}@eecs.berkeley.edu

More information

Project 4 Query Optimization Part 2: Join Optimization

Project 4 Query Optimization Part 2: Join Optimization Project 4 Query Optimization Part 2: Join Optimization 1 Introduction Out: November 7, 2017 During this semester, we have talked a lot about the different components that comprise a DBMS, especially those

More information

Oracle Database 10g: Introduction to SQL

Oracle Database 10g: Introduction to SQL ORACLE UNIVERSITY CONTACT US: 00 9714 390 9000 Oracle Database 10g: Introduction to SQL Duration: 5 Days What you will learn This course offers students an introduction to Oracle Database 10g database

More information

Lecture Notes on Intermediate Representation

Lecture Notes on Intermediate Representation Lecture Notes on Intermediate Representation 15-411: Compiler Design Frank Pfenning Lecture 10 1 Introduction In this lecture we discuss the middle end of the compiler. After the source has been parsed

More information

Oracle Application Express Schema Design Guidelines Presenter: Flavio Casetta, Yocoya.com

Oracle Application Express Schema Design Guidelines Presenter: Flavio Casetta, Yocoya.com Oracle Application Express Schema Design Guidelines Presenter: Flavio Casetta, Yocoya.com about me Flavio Casetta Founder of Yocoya.com Editor of blog OracleQuirks.blogspot.com 25+ years in the IT 10+

More information

Functions as Conditionally Discoverable Relational Database Tables

Functions as Conditionally Discoverable Relational Database Tables Functions as Conditionally Discoverable Relational Database Tables A. Ondi and T. Hagan Securboration, Inc., Melbourne, FL, USA Abstract - It is beneficial for large enterprises to have an accurate and

More information

Introduction to Databases, Fall 2005 IT University of Copenhagen. Lecture 2: Relations and SQL. September 5, Lecturer: Rasmus Pagh

Introduction to Databases, Fall 2005 IT University of Copenhagen. Lecture 2: Relations and SQL. September 5, Lecturer: Rasmus Pagh Introduction to Databases, Fall 2005 IT University of Copenhagen Lecture 2: Relations and SQL September 5, 2005 Lecturer: Rasmus Pagh Today s lecture What, exactly, is the relational data model? What are

More information

Summer Final Exam Review Session August 5, 2009

Summer Final Exam Review Session August 5, 2009 15-111 Summer 2 2009 Final Exam Review Session August 5, 2009 Exam Notes The exam is from 10:30 to 1:30 PM in Wean Hall 5419A. The exam will be primarily conceptual. The major emphasis is on understanding

More information

Program Slicing in the Presence of Pointers (Extended Abstract)

Program Slicing in the Presence of Pointers (Extended Abstract) Program Slicing in the Presence of Pointers (Extended Abstract) James R. Lyle National Institute of Standards and Technology jimmy@swe.ncsl.nist.gov David Binkley Loyola College in Maryland National Institute

More information

Understanding Impact of J2EE Applications On Relational Databases. Dennis Leung, VP Development Oracle9iAS TopLink Oracle Corporation

Understanding Impact of J2EE Applications On Relational Databases. Dennis Leung, VP Development Oracle9iAS TopLink Oracle Corporation Understanding Impact of J2EE Applications On Relational Databases Dennis Leung, VP Development Oracle9iAS TopLink Oracle Corporation J2EE Apps and Relational Data J2EE is one of leading technologies used

More information

7. Decision or classification trees

7. Decision or classification trees 7. Decision or classification trees Next we are going to consider a rather different approach from those presented so far to machine learning that use one of the most common and important data structure,

More information

Design and Implementation of Java Dynamic Testing Tool using Instrumentation

Design and Implementation of Java Dynamic Testing Tool using Instrumentation Indian Journal of Science and Technology, Vol 8(S1), 475 480, January 2015 ISSN (Online) : 0974-5645 ISSN (Print) : 0974-6846 DOI: 10.17485/ijst/2015/v8iS1/59426 Design and Implementation of Java Dynamic

More information

Polymorphic bytecode instrumentation

Polymorphic bytecode instrumentation SOFTWARE: PRACTICE AND EXPERIENCE Published online 18 December 2015 in Wiley Online Library (wileyonlinelibrary.com)..2385 Polymorphic bytecode instrumentation Walter Binder 1, *,, Philippe Moret 1, Éric

More information

Noopur Gupta Eclipse JDT/UI Committer IBM India

Noopur Gupta Eclipse JDT/UI Committer IBM India Noopur Gupta Eclipse JDT/UI Committer IBM India noopur_gupta@in.ibm.com 1 2 3 Show Workspace Location in the Title Bar (-showlocation) OR 4 Show Workspace Name in the Title Bar (Window > Preferences >

More information