An Empirical Study of Structural Constraint Solving Techniques

Size: px
Start display at page:

Download "An Empirical Study of Structural Constraint Solving Techniques"

Transcription

1 An Empirical Study of Structural Constraint Solving Techniques Junaid Haroon Siddiqui Sarfraz Khurshid University of Texas at Austin ICFEM, Rio de Janeiro 9 December 2009

2 Overview Structural constraint solving enables systematic analyses E.g., scope-bounded testing, symbolic/concolic execution Several existing tools can solve structural constraints We evaluate four such tools Alloy tool-set SAT-based analysis CUTE concolic execution engine Java PathFinder (JPF) model checker Korat specialized solver 2

3 Examples of structural constraints 3

4 Examples of structural constraints

5 Examples of structural constraints root city washington service camera accessability public 2 building whitehouse data-type picture resolution 640 x 480 wing west room oval-office 3

6 Examples of structural constraints root city washington service camera accessability public 2 building whitehouse data-type picture resolution 640 x 480 wing Event 0 west room oval-office Event 1 Event 2 toplevel Event_0 ; Event_0 pand Event_1 Event_2 ISeq_0 ISeq_1 FDep_0 FDep_1 ; Event_1 be replication = 1 ; Event_2 be replication = 1 ; ISeq_0 seq Event_0 ; ISeq_1 seq Event_1 ; FDep_0 fdep trigger = Event_0 Event_1 ; FDep_1 fdep trigger = Event_1 Event_2 ; Event_1 dist=exponential rate=.0004 cov=0 res=.5 spt=.5 dorm=0 ; Event_2 dist=exponential rate=.0004 cov=0 res=.5 spt=.5 dorm=. 5 ; 3

7 Examples of structural constraints root Event 0 Event 1 Event 2 2 city washington building whitehouse wing west room oval-office toplevel Event_0 ; Event_0 pand Event_1 Event_2 ISeq_0 ISeq_1 FDep_0 FDep_1 ; Event_1 be replication = 1 ; Event_2 be replication = 1 ; ISeq_0 seq Event_0 ; ISeq_1 seq Event_1 ; FDep_0 fdep trigger = Event_0 Event_1 ; FDep_1 fdep trigger = Event_1 Event_2 ; Event_1 dist=exponential rate=.0004 cov=0 res=.5 spt=.5 dorm=0 ; Event_2 dist=exponential rate=.0004 cov=0 res=.5 spt=.5 dorm=. 5 ; service camera data-type picture module meta_spec sig Signature sig Test accessability public resolution 640 x 480 static sig S1 extends Test static sig S0 extends Signature fun Main() { run Main for 3 3

8 Background: Scope-bounded testing Tests against all inputs within a given bound on input size Inspired by model checking To test a Java method: Use the method precondition to enumerate valid inputs Run the method on each input Check each output using the method postcondition Incremental Scope-bounded Checking 4

9 Example: binary search tree class BinarySearchTree { Node root; int size; static class Node { int info; Node left, right; 5

10 Example: binary search tree class BinarySearchTree { Node root; int size; static class Node { int info; Node left, right; void remove(int i) { 5

11 Example: binary search tree class BinarySearchTree { Node root; int size; static class Node { int info; Node left, right; void remove(int i) { precondition: istree() && isordered() 5

12 Example: binary search tree class BinarySearchTree { Node root; int size; static class Node { int info; Node left, right; void remove(int i) { precondition: istree() && isordered() postcondition: istree() && isordered() 5

13 Example: binary search tree class BinarySearchTree { Node root; int size; static class Node { int info; Node left, right; void remove(int i) { precondition: istree() && isordered() postcondition: istree() && isordered() && removes only i 5

14 Example: non-isomorphic trees of size 3 N 0 : 1 N 0 : 1 N 0 : 3 N 0 : 3 N 0 : 2 right right left left left right N 1 : 2 N 1 : 3 N 1 : 1 N 1 : 2 N 1 : 1 N 2 : 3 right left right left N 2 : 3 N 2 : 2 N 2 : 2 N 2 : 1 6

15 Example: non-isomorphism N 0 : 2 left right N 1 : 1 N 2 : 3 N 0 : 2 left right N 2 : 1 N 1 : 3 N 1 : 2 left right N 0 : 1 N 2 : 3 N 2 : 2 left right N 0 : 1 N 1 : 3 N 1 : 2 left right N 2 : 1 N 0 : 3 N 2 : 2 left right N 1 : 1 N 0 : 3 7

16 Example: non-isomorphism N 0 : 2 left right N 1 : 1 N 2 : 3 N 0 : 2 left right N 2 : 1 N 1 : 3 N 1 : 2 left right N 0 : 1 N 2 : 3 N 2 : 2 left right N 0 : 1 N 1 : 3 N 1 : 2 left right N 2 : 1 N 0 : 3 N 2 : 2 left right N 1 : 1 N 0 : 3 7

17 Outline Four tools Research Questions The Experiment Results Summary 8

18 Alloy tool-set [Jackson+2000] Alloy is a first-order, relational language The Alloy Analyzer is a fully automatic, SAT-based tool Kodkod model finder optimizes the analysis [Torlak +2007] Originally motivated by checking of designs Applications to code Static checking of code [Vaziri+2000] Systematic testing [Marinov+2001] To run Alloy Iteratively set scope, run analysis, fix design/code,... Until solver times out Incremental Scope-bounded Checking 9

19 Java PathFinder (JPF) [Visser+2000] General purpose model checker for Java programs Bounded depth search (iterative deepening) Implements customized JVM to enable model checking Systematic thread interleaving Non-deterministic assignment Originally designed for checking concurrent reactive systems Generalized symbolic execution using lazy initialization allows structural constraint solving [Khurshid+2003] 10

20 Korat [Boyapati+2002] Korat is a tool for automated generation of structurally complex test inputs Given a Java predicate, Korat enumerates inputs for which the predicate returns true Korat performs a backtracking search of a bounded space of candidate inputs Prunes the space by monitoring field accesses 11

21 CUTE [Sen+2005] Combines concrete execution with symbolic execution Supports pointers as well as primitives Motivated by a basic limitation of symbolic execution: Complexity of solving and undecidability of path conditions Uses concrete values to replace some symbolic values Reduces complexity of path conditions 12

22 Example: acyclicity constraint in Alloy precondition boolean istree() { # root.*(left + right) = size // consistency of size all n: root.*(left + right) { n!in n.^(left + right) // no directed cycles sole n.~(left + right) // at most one parent no n.left & n.right // left and right child not the same node boolean isordered() { // binary search 13

23 Example: acyclicity constraint in Alloy precondition boolean istree() { # root.*(left + right) = size // consistency of size all n: root.*(left + right) { n!in n.^(left + right) // no directed cycles sole n.~(left + right) // at most one parent no n.left & n.right // left and right child not the same node boolean isordered() { // binary search 13

24 Example: acyclicity constraint in Alloy precondition boolean istree() { # root.*(left + right) = size // consistency of size all n: root.*(left + right) { n!in n.^(left + right) // no directed cycles sole n.~(left + right) // at most one parent no n.left & n.right // left and right child not the same node boolean isordered() { // binary search 13

25 Example: acyclicity constraint in Alloy precondition boolean istree() { # root.*(left + right) = size // consistency of size all n: root.*(left + right) { n!in n.^(left + right) // no directed cycles sole n.~(left + right) // at most one parent no n.left & n.right // left and right child not the same node boolean isordered() { // binary search 13

26 Example: acyclicity constraint in Alloy precondition boolean istree() { # root.*(left + right) = size // consistency of size all n: root.*(left + right) { n!in n.^(left + right) // no directed cycles sole n.~(left + right) // at most one parent no n.left & n.right // left and right child not the same node boolean isordered() { // binary search 13

27 Example: acyclicity constraint in Alloy precondition boolean istree() { # root.*(left + right) = size // consistency of size all n: root.*(left + right) { n!in n.^(left + right) // no directed cycles sole n.~(left + right) // at most one parent no n.left & n.right // left and right child not the same node boolean isordered() { // binary search 13

28 Example: acyclicity constraint in Alloy precondition boolean istree() { # root.*(left + right) = size // consistency of size all n: root.*(left + right) { n!in n.^(left + right) // no directed cycles sole n.~(left + right) // at most one parent no n.left & n.right // left and right child not the same node boolean isordered() { // binary search 13

29 Example: acyclicity constraint in Java precondition boolean istree() { if (root == null) return size == 0; // empty tree has size 0 Set visited = new HashSet(); visited.add(root); List worklist = new LinkedList(); worklist.add(root); while (!worklist.isempty()) { Node current = (Node)workList.removeFirst(); if (current.left!= null) { if (!visited.add(current.left)) return false; // acyclicity worklist.add(current.left); if (current.right!= null) { if (!visited.add(current.right)) return false; // acyclicity worklist.add(current.right); if (visited.size()!= size) return false; return true; // consistency of size 14

30 Outline Four tools Research Questions The Experiment Results Summary 15

31 Research Questions Writing constraints and Defining bounds Output format Performance for small sizes Performance with complex constraints Time complexity 16

32 The Experiment Subjects of increasing complexity Binary Tree, Binary Search Tree, Red Black Tree Singly Linked List, Doubly Linked List, Sorted Linked List Measured Quantitative: time and candidates generated Qualitative: Input (constraints and bounds) formatting and output (test cases) formatting 17

33 Outline Four tools Research Questions The Experiment Results Summary 18

34 Results: Performance on trees 19

35 Results: Performance on lists 20

36 Results: Isomorphism Handling Subject CUTE Korat Alloy JPF Binary Tree YES YES NO YES Binary Search Tree YES YES YES YES Red Black Tree NO YES YES YES Singly Linked List YES YES NO YES Doubly Linked List YES YES NO YES Sorted List YES YES YES YES 21

37 Results: Constraints, Bounds and Output Format Alloy uses declarative constraints while all other tools use imperative constraints Korat and Alloy support the most direct bounds specification by design Alloy results need to be translated into actual structures Translation time is insignificant compared to solving time 22

38 Results: Summary Fastest tool for small sizes is Korat Lazy initialization with JPF is effectively a slower Korat Declarative constraints are the most concise CUTE provides better time complexity CUTE requires minor tweaking of predicates to work Korat produces no isomorphic solutions 23

39 Results: Summary Fastest tool for small sizes is Korat Lazy initialization with JPF is effectively a slower Korat Declarative constraints are the most concise CUTE provides better time complexity CUTE requires minor tweaking of predicates to work Korat produces no isomorphic solutions jsiddiqui khurshid@ece.utexas.edu 23

assertion-driven analyses from compile-time checking to runtime error recovery

assertion-driven analyses from compile-time checking to runtime error recovery assertion-driven analyses from compile-time checking to runtime error recovery sarfraz khurshid the university of texas at austin state of the art in software testing and analysis day, 2008 rutgers university

More information

Automated Test-Input Generation

Automated Test-Input Generation Automated Test-Input Generation Tao Xie North Carolina State University Department of Computer Science Nov 2005 http://www.csc.ncsu.edu/faculty/xie/ Why Automate Testing? Software testing is important

More information

Korat: Automated Testing Based on Java Predicates. Jeff Stuckman

Korat: Automated Testing Based on Java Predicates. Jeff Stuckman Korat: Automated Testing Based on Java Predicates Jeff Stuckman Korat Korat is a specification-based automated testing tool ideal for testing data structures Korat generates synthetic test data based on

More information

Automated Software Testing in the Absence of Specifications

Automated Software Testing in the Absence of Specifications Automated Software Testing in the Absence of Specifications Tao Xie North Carolina State University Department of Computer Science Nov 2005 http://www.csc.ncsu.edu/faculty/xie/ Why Automate Testing? Software

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

Automatic Test Generation. Galeotti/Gorla/Rau Saarland University

Automatic Test Generation. Galeotti/Gorla/Rau Saarland University Automatic Test Generation Galeotti/Gorla/Rau Saarland University Testing : Find inputs that make the program fail Debugging : The process of finding the cause of a failure. Test Case Values/Test Input/Test

More information

Bounded Exhaustive Test-Input Generation on GPUs

Bounded Exhaustive Test-Input Generation on GPUs Bounded Exhaustive Test-Input Generation on GPUs AHMET CELIK, The University of Texas at Austin, USA SREEPATHI PAI, The University of Texas at Austin, USA SARFRAZ KHURSHID, The University of Texas at Austin,

More information

We have the pointers reference the next node in an inorder traversal; called threads

We have the pointers reference the next node in an inorder traversal; called threads Leaning Objective: In this Module you will be learning the following: Threaded Binary Tree Introduction: Threaded Binary Tree is also a binary tree in which all left child pointers that are NULL (in Linked

More information

State Extensions for Java PathFinder

State Extensions for Java PathFinder State Extensions for Java PathFinder Darko Marinov University of Illinois at Urbana-Champaign JPF Workshop May 1, 2008 Broader Context: Work on JPF at UIUC Two lines of work Extend functionality Improve

More information

Repairing Structurally Complex Data

Repairing Structurally Complex Data Repairing Structurally Complex Data Sarfraz Khurshid and Iván García and Yuk Lai Suen Department of Electrical and Computer Engineering The University of Texas at Austin 1 University Station C5000 Austin,

More information

PKorat: Parallel Generation of Structurally Complex Test Inputs

PKorat: Parallel Generation of Structurally Complex Test Inputs PKorat: Parallel Generation of Structurally Complex Test Inputs Junaid Haroon Siddiqui University of Texas at Austin Austin, TX 78712 jsiddiqui@ece.utexas.edu Sarfraz Khurshid University of Texas at Austin

More information

Generating Structurally Complex Tests from Declarative Constraints. Sarfraz Khurshid

Generating Structurally Complex Tests from Declarative Constraints. Sarfraz Khurshid Generating Structurally Complex Tests from Declarative Constraints by Sarfraz Khurshid S.M., Massachusetts Institute of Technology (2000) Part III of the Mathematical Tripos, Trinity College Cambridge

More information

A Case for Efficient Solution Enumeration

A Case for Efficient Solution Enumeration A Case for Efficient Solution Enumeration Sarfraz Khurshid Darko Marinov Ilya Shlyakhter Daniel Jackson MIT Laboratory for Computer Science 200 Technology Square Cambridge, MA 02139 USA {khurshid,marinov,ilya

More information

Bounded Exhaustive Test Input Generation from Hybrid Invariants

Bounded Exhaustive Test Input Generation from Hybrid Invariants Bounded Exhaustive Test Input Generation from Hybrid Invariants Nicolás Rosner Dept. of Computer Science FCEyN, University of Buenos Aires Buenos Aires, Argentina nrosner@dc.uba.ar Nazareno Aguirre Dept.

More information

Korat: Automated Testing Based on Java Predicates

Korat: Automated Testing Based on Java Predicates Korat: Automated Testing Based on Java Predicates Chandrasekhar Boyapati, Sarfraz Khurshid, and Darko Marinov MIT Laboratory for Computer Science 200 Technology Square Cambridge, MA 02139 USA {chandra,khurshid,marinov@lcs.mit.edu

More information

STARC: Static Analysis for Efficient Repair of Complex Data

STARC: Static Analysis for Efficient Repair of Complex Data STARC: Static Analysis for Efficient Repair of Complex Data Bassem Elkarablieh Sarfraz Khurshid University of Texas at Austin {elkarabl,khurshid@ece.utexas.edu Duy Vu Kathryn S. McKinley University of

More information

Using Coverage Criteria on RepOK to Reduce Bounded-Exhaustive Test Suites

Using Coverage Criteria on RepOK to Reduce Bounded-Exhaustive Test Suites Using Coverage Criteria on RepOK to Reduce Bounded-Exhaustive Test Suites Valeria Bengolea 1,4, Nazareno Aguirre 1,4, Darko Marinov 2, and Marcelo F. Frias 3,4 1 Department of Computer Science, FCEFQyN,

More information

Rigorous Software Development CSCI-GA

Rigorous Software Development CSCI-GA Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 7 Today s Topic: Automated Test Case Generation How to Test Effectively? public class Factorial { /*@ requires

More information

An incremental approach to scope-bounded checking using a lightweight formal method

An incremental approach to scope-bounded checking using a lightweight formal method An incremental approach to scope-bounded checking using a lightweight formal method Danhua Shao Sarfraz Khurshid Dewayne E. Perry Department of Electrical and Computer Engineering The University of Texas

More information

ITI Introduction to Computing II

ITI Introduction to Computing II ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Binary search tree (part I) Version of March 24, 2013 Abstract These lecture notes are meant

More information

ITI Introduction to Computing II

ITI Introduction to Computing II ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Binary search tree (part I) Version of March 24, 2013 Abstract These lecture notes are meant

More information

An Incremental Approach to Scope-Bounded Checking Using a Lightweight Formal Method

An Incremental Approach to Scope-Bounded Checking Using a Lightweight Formal Method An Incremental Approach to Scope-Bounded Checking Using a Lightweight Formal Method Danhua Shao, Sarfraz Khurshid, and Dewayne E. Perry Department of Electrical and Computer Engineering The University

More information

Abstractions and small languages in synthesis CS294: Program Synthesis for Everyone

Abstractions and small languages in synthesis CS294: Program Synthesis for Everyone Abstractions and small languages in synthesis CS294: Program Synthesis for Everyone Ras Bodik Emina Torlak Division of Computer Science University of California, Berkeley Today Today: we describe why high-level

More information

Evaluating State Modeling Techniques in Alloy

Evaluating State Modeling Techniques in Alloy 16 Evaluating State Modeling Techniques in Alloy ALLISON SULLIVAN, KAIYUAN WANG, and SARFRAZ KHURSHID, The University of Texas at Austin, USA DARKO MARINOV, University of Illinois at Urbana-Champaign,

More information

Unit 9 Practice Test (AB27-30)

Unit 9 Practice Test (AB27-30) Unit 9 Practice Test (AB27-30) Name 1. Consider the following method: public static int checktree(treenode root) return 0; int x = checktree(root.getleft()); if ( x >= 0 && checktree(root.getright()) ==

More information

An Automated Approach for Writing Alloy Specifications Using Instances

An Automated Approach for Writing Alloy Specifications Using Instances An Automated Approach for Writing Alloy Specifications Using Instances Sarfraz Khurshid Muhammad Zubair Malik Engin Uzuncaova Software Verification, Validation and Testing Group The University of Texas

More information

Symbolic and Concolic Execution of Programs

Symbolic and Concolic Execution of Programs Symbolic and Concolic Execution of Programs Information Security, CS 526 Omar Chowdhury 10/7/2015 Information Security, CS 526 1 Reading for this lecture Symbolic execution and program testing - James

More information

Optimizing Incremental Scope-bounded Checking with Data-flow Analysis

Optimizing Incremental Scope-bounded Checking with Data-flow Analysis Optimizing Incremental Scope-bounded Checking with Data-flow Analysis Danhua Shao Divya Gopinath Sarfraz Khurshid Dewayne E. Perry Electrical and Computer Engineering Department The University of Texas

More information

TWO main approaches used to increase software quality

TWO main approaches used to increase software quality EDIC RESEARCH PROPOSAL 1 Combining Testing and Verification Tihomir Gvero LARA, I&C, EPFL Abstract The paper presents techniques used in both software testing and verification. Korat is the tool that has

More information

Generating Test Inputs for Fault-Tree Analyzers using Imperative Predicates

Generating Test Inputs for Fault-Tree Analyzers using Imperative Predicates Generating Test Inputs for Fault-Tree Analyzers using Imperative Predicates Saša Misailović Aleksandar Milićević University of Belgrade Belgrade, Serbia {sasa.misailovic,aca.milicevic@gmail.com Sarfraz

More information

1B1b Implementing Data Structures Lists, Hash Tables and Trees

1B1b Implementing Data Structures Lists, Hash Tables and Trees 1B1b Implementing Data Structures Lists, Hash Tables and Trees Agenda Classes and abstract data types. Containers. Iteration. Lists Hash Tables Trees Note here we only deal with the implementation of data

More information

A survey of new trends in symbolic execution for software testing and analysis

A survey of new trends in symbolic execution for software testing and analysis Int J Softw Tools Technol Transfer (2009) 11:339 353 DOI 10.1007/s10009-009-0118-1 REGULAR PAPER A survey of new trends in symbolic execution for software testing and analysis Corina S. Păsăreanu Willem

More information

CSE373 Fall 2013, Midterm Examination October 18, 2013

CSE373 Fall 2013, Midterm Examination October 18, 2013 CSE373 Fall 2013, Midterm Examination October 18, 2013 Please do not turn the page until the bell rings. Rules: The exam is closed-book, closed-note, closed calculator, closed electronics. Please stop

More information

Outline. iterator review iterator implementation the Java foreach statement testing

Outline. iterator review iterator implementation the Java foreach statement testing Outline iterator review iterator implementation the Java foreach statement testing review: Iterator methods a Java iterator only provides two or three operations: E next(), which returns the next element,

More information

Generation of Test Data Structures Using Constraint Logic Programming

Generation of Test Data Structures Using Constraint Logic Programming 1 / 45 Generation of Test Data Structures Using Constraint Logic Programming Valerio Senni 1, Fabio Fioravanti 2 1 Department of Computer Science, Systems and Production University of Rome Tor Vergata,

More information

CMPSCI 187: Programming With Data Structures. Lecture #28: Binary Search Trees 21 November 2011

CMPSCI 187: Programming With Data Structures. Lecture #28: Binary Search Trees 21 November 2011 CMPSCI 187: Programming With Data Structures Lecture #28: Binary Search Trees 21 November 2011 Binary Search Trees The Idea of a Binary Search Tree The BinarySearchTreeADT Interface The LinkedBinarySearchTree

More information

Advanced Java Concepts Unit 5: Trees. Notes and Exercises

Advanced Java Concepts Unit 5: Trees. Notes and Exercises Advanced Java Concepts Unit 5: Trees. Notes and Exercises A Tree is a data structure like the figure shown below. We don t usually care about unordered trees but that s where we ll start. Later we will

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 07: Linked Lists MOUNA KACEM mouna@cs.wisc.edu Spring 2019 Linked Lists 2 Introduction Linked List Abstract Data Type SinglyLinkedList ArrayList Keep in Mind Introduction:

More information

JPF SE: A Symbolic Execution Extension to Java PathFinder

JPF SE: A Symbolic Execution Extension to Java PathFinder JPF SE: A Symbolic Execution Extension to Java PathFinder Saswat Anand 1,CorinaS.Păsăreanu 2, and Willem Visser 2 1 College of Computing, Georgia Institute of Technology saswat@cc.gatech.edu 2 QSS and

More information

Improving Program Testing and Understanding via Symbolic Execution

Improving Program Testing and Understanding via Symbolic Execution Improving Program Testing and Understanding via Symbolic Execution Kin-Keung Ma PhD Dissertation Defense December 9 th, 2011 Motivation } Every year, billions of dollars are lost due to software system

More information

a graph is a data structure made up of nodes in graph theory the links are normally called edges

a graph is a data structure made up of nodes in graph theory the links are normally called edges 1 Trees Graphs a graph is a data structure made up of nodes each node stores data each node has links to zero or more nodes in graph theory the links are normally called edges graphs occur frequently in

More information

Lecture 15 Binary Search Trees

Lecture 15 Binary Search Trees Lecture 15 Binary Search Trees 15-122: Principles of Imperative Computation (Fall 2017) Frank Pfenning, André Platzer, Rob Simmons, Iliano Cervesato In this lecture, we will continue considering ways to

More information

Linked Lists. Linked List Nodes. Walls and Mirrors Chapter 5 10/25/12. A linked list is a collection of Nodes: item next -3.

Linked Lists. Linked List Nodes. Walls and Mirrors Chapter 5 10/25/12. A linked list is a collection of Nodes: item next -3. Linked Lists Walls and Mirrors Chapter 5 Linked List Nodes public class Node { private int item; private Node next; public Node(int item) { this(item,null); public Node(int item, Node next) { setitem(item);

More information

Index. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107

Index. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107 A abbreviations 17 abstract class 105 abstract data types 105 abstract method 105 abstract types 105 abstraction 92, 105 access level 37 package 114 private 115 protected 115 public 115 accessors 24, 105

More information

Engineering Abstractions in Model Checking and Testing. Michael Achenbach Klaus Ostermann

Engineering Abstractions in Model Checking and Testing. Michael Achenbach Klaus Ostermann Engineering Abstractions in Model Checking and Testing Michael Achenbach Klaus Ostermann 1 This Talk What is abstraction engineering? How can we integrate abstractions with current tools? What more is

More information

Model Solutions. COMP 103: Mid-term Test. 19th of August, 2016

Model Solutions. COMP 103: Mid-term Test. 19th of August, 2016 Family Name:............................. Other Names:............................. ID Number:............................... Signature.................................. Instructions Time allowed: 45 minutes

More information

MULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR

MULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR STUDENT IDENTIFICATION NO MULTIMEDIA COLLEGE JALAN GURNEY KIRI 54100 KUALA LUMPUR FIFTH SEMESTER FINAL EXAMINATION, 2014/2015 SESSION PSD2023 ALGORITHM & DATA STRUCTURE DSEW-E-F-2/13 25 MAY 2015 9.00 AM

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

History-Aware Data Structure Repair Using SAT

History-Aware Data Structure Repair Using SAT History-Aware Data Structure Repair Using SAT Razieh Nokhbeh Zaeem 1, Divya Gopinath 1, Sarfraz Khurshid 1, and Kathryn S. McKinley 2 1 The University of Texas at Austin {nokhbeh,divyagopinath}@utexas.edu,khurshid@ece.utexas.edu

More information

Principles of Computer Science

Principles of Computer Science Principles of Computer Science Binary Trees 08/11/2013 CSCI 2010 - Binary Trees - F.Z. Qureshi 1 Today s Topics Extending LinkedList with Fast Search Sorted Binary Trees Tree Concepts Traversals of a Binary

More information

Algorithms and complexity: 2 The dictionary problem: search trees

Algorithms and complexity: 2 The dictionary problem: search trees Algorithms and complexity: 2 The dictionary problem: search trees The dictionary problem Given: a set of objects (data) where each element can be identified by a unique key (integer, string,... ). Goal:

More information

CUTE: A Concolic Unit Testing Engine for C

CUTE: A Concolic Unit Testing Engine for C CUTE: A Concolic Unit Testing Engine for C Koushik Sen Darko Marinov Gul Agha University of Illinois Urbana-Champaign Goal Automated Scalable Unit Testing of real-world C Programs Generate test inputs

More information

Universal Symbolic Execution and its Application to Likely Data Structure Invariant Generation

Universal Symbolic Execution and its Application to Likely Data Structure Invariant Generation Universal Symbolic Execution and its Application to Likely Data Structure Invariant Generation Yamini Kannan EECS, UC Berkeley yamini@eecs.berkeley.edu Koushik Sen EECS, UC Berkeley ksen@cs.berkeley.edu

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 07: Linked Lists and Iterators MOUNA KACEM mouna@cs.wisc.edu Fall 2018 Linked Lists 2 Introduction Linked List Abstract Data Type General Implementation of the ListADT

More information

Lecture Notes on Binary Search Trees

Lecture Notes on Binary Search Trees Lecture Notes on Binary Search Trees 15-122: Principles of Imperative Computation Frank Pfenning André Platzer Lecture 16 March 17, 2015 1 Introduction In this lecture, we will continue considering ways

More information

DO NOT REPRODUCE. CS61B, Fall 2008 Test #3 (revised) P. N. Hilfinger

DO NOT REPRODUCE. CS61B, Fall 2008 Test #3 (revised) P. N. Hilfinger CS6B, Fall 2008 Test #3 (revised) P. N. Hilfinger. [7 points] Please give short answers to the following, giving reasons where called for. Unless a question says otherwise, time estimates refer to asymptotic

More information

Software Model Checking. Xiangyu Zhang

Software Model Checking. Xiangyu Zhang Software Model Checking Xiangyu Zhang Symbolic Software Model Checking CS510 S o f t w a r e E n g i n e e r i n g Symbolic analysis explicitly explores individual paths, encodes and resolves path conditions

More information

Lecture 15 Notes Binary Search Trees

Lecture 15 Notes Binary Search Trees Lecture 15 Notes Binary Search Trees 15-122: Principles of Imperative Computation (Spring 2016) Frank Pfenning, André Platzer, Rob Simmons 1 Introduction In this lecture, we will continue considering ways

More information

DIT960 Datastrukturer

DIT960 Datastrukturer DIT960 Datastrukturer suggested solutions for exam 2017-08-17 1. Assume that n is a non-negative integer, that s is an integer set implemented with a hash table and containing at most n elements, that

More information

Trees. Chapter 6. strings. 3 Both position and Enumerator are similar in concept to C++ iterators, although the details are quite different.

Trees. Chapter 6. strings. 3 Both position and Enumerator are similar in concept to C++ iterators, although the details are quite different. Chapter 6 Trees In a hash table, the items are not stored in any particular order in the table. This is fine for implementing Sets and Maps, since for those abstract data types, the only thing that matters

More information

Daniel Jackson Computer Science & Artificial Intelligence Lab MIT Microsoft Research March 21, 2005

Daniel Jackson Computer Science & Artificial Intelligence Lab MIT Microsoft Research March 21, 2005 modelling & analyzing software abstractions Daniel Jackson Computer Science & Artificial Intelligence Lab MIT Microsoft Research March 21, 2005 premise #1: abstractions the design of software abstractions

More information

Instructions. Definitions. Name: CMSC 341 Fall Question Points I. /12 II. /30 III. /10 IV. /12 V. /12 VI. /12 VII.

Instructions. Definitions. Name: CMSC 341 Fall Question Points I. /12 II. /30 III. /10 IV. /12 V. /12 VI. /12 VII. CMSC 341 Fall 2013 Data Structures Final Exam B Name: Question Points I. /12 II. /30 III. /10 IV. /12 V. /12 VI. /12 VII. /12 TOTAL: /100 Instructions 1. This is a closed-book, closed-notes exam. 2. You

More information

CS171 Final Practice Exam

CS171 Final Practice Exam CS171 Final Practice Exam Name: You are to honor the Emory Honor Code. This is a closed-book and closed-notes exam. You have 150 minutes to complete this exam. Read each problem carefully, and review your

More information

Runtime Checking for Program Verification Systems

Runtime Checking for Program Verification Systems Runtime Checking for Program Verification Systems Karen Zee, Viktor Kuncak, and Martin Rinard MIT CSAIL Tuesday, March 13, 2007 Workshop on Runtime Verification 1 Background Jahob program verification

More information

Optimized Execution of Deterministic Blocks in Java PathFinder

Optimized Execution of Deterministic Blocks in Java PathFinder Optimized Execution of Deterministic Blocks in Java PathFinder Marcelo d Amorim, Ahmed Sobeih, and Darko Marinov Department of Computer Science University of Illinois at Urbana-Champaign 201 N. Goodwin

More information

CS314 Exam 2 - Fall Suggested Solution and Criteria 1

CS314 Exam 2 - Fall Suggested Solution and Criteria 1 CS314 Fall 2017 Exam 2 Solution and Grading Criteria. Grading acronyms: AIOBE - Array Index out of Bounds Exception may occur BOD - Benefit of the Doubt. Not certain code works, but, can't prove otherwise

More information

Prelim 1. CS 2110, October 1, 2015, 5:30 PM Total Question Name True Short Testing Strings Recursion

Prelim 1. CS 2110, October 1, 2015, 5:30 PM Total Question Name True Short Testing Strings Recursion Prelim 1 CS 2110, October 1, 2015, 5:30 PM 0 1 2 3 4 5 Total Question Name True Short Testing Strings Recursion False Answer Max 1 20 36 16 15 12 100 Score Grader The exam is closed book and closed notes.

More information

Advanced Java Concepts Unit 5: Trees. Notes and Exercises

Advanced Java Concepts Unit 5: Trees. Notes and Exercises dvanced Java Concepts Unit 5: Trees. Notes and Exercises Tree is a data structure like the figure shown below. We don t usually care about unordered trees but that s where we ll start. Later we will focus

More information

CS211, LECTURE 20 SEARCH TREES ANNOUNCEMENTS:

CS211, LECTURE 20 SEARCH TREES ANNOUNCEMENTS: CS211, LECTURE 20 SEARCH TREES ANNOUNCEMENTS: OVERVIEW: motivation naive tree search sorting for trees and binary trees new tree classes search insert delete 1. Motivation 1.1 Search Structure continuing

More information

Scaling Symbolic Execution using Ranged Analysis

Scaling Symbolic Execution using Ranged Analysis Scaling Symbolic Execution using Ranged Analysis Junaid Haroon Siddiqui University of Texas at Austin 1 University Station Austin, TX 78712 {jsiddiqui,khurshid}@ece.utexas.edu Sarfraz Khurshid Abstract

More information

CS 314 Exam 2 Spring

CS 314 Exam 2 Spring Points off 1 2 3 4 5 Total off CS 314 Exam 2 Spring 2017 Your Name Your UTEID Instructions: 1. There are 5 questions on this test. 100 points available. Scores will be scaled to 200 points. 2. You have

More information

COS 226 Algorithms and Data Structures Fall Midterm

COS 226 Algorithms and Data Structures Fall Midterm COS 226 Algorithms and Data Structures Fall 2017 Midterm This exam has 10 questions (including question 0) worth a total of 55 points. You have 0 minutes. This exam is preprocessed by a computer, so please

More information

Points off A 4B 5 Total off Net Score. CS 314 Final Exam Spring 2015

Points off A 4B 5 Total off Net Score. CS 314 Final Exam Spring 2015 Points off 1 2 3 4A 4B 5 Total off Net Score CS 314 Final Exam Spring 2015 Your Name Your UTEID Instructions: 1. There are 5 questions on this test. 100 points available. 2. You have 3 hours to complete

More information

Binary Search Trees. Chapter 21. Binary Search Trees

Binary Search Trees. Chapter 21. Binary Search Trees Chapter 21 Binary Search Trees Binary Search Trees A Binary Search Tree is a binary tree with an ordering property that allows O(log n) retrieval, insertion, and removal of individual elements. Defined

More information

Implementation. Learn how to implement the List interface Understand the efficiency trade-offs between the ArrayList and LinkedList implementations

Implementation. Learn how to implement the List interface Understand the efficiency trade-offs between the ArrayList and LinkedList implementations Readings List Implementations Chapter 20.2 Objectives Learn how to implement the List interface Understand the efficiency trade-offs between the ArrayList and LinkedList implementations Additional references:

More information

Static Program Checking

Static Program Checking Bounded Verification Jalloy Automated Software Analysis Group, Institute of Theoretical Informatics Jun.-prof. Mana Taghdiri June 5, 2014 KIT University of the State of Baden-Wuerttemberg and National

More information

CSE 431S Type Checking. Washington University Spring 2013

CSE 431S Type Checking. Washington University Spring 2013 CSE 431S Type Checking Washington University Spring 2013 Type Checking When are types checked? Statically at compile time Compiler does type checking during compilation Ideally eliminate runtime checks

More information

CS 307 Final Fall 2009

CS 307 Final Fall 2009 Points off 1 2 3 4 5 6 Total off Net Score CS 307 Final Fall 2009 Name UTEID login name Instructions: 1. Please turn off your cell phones. 2. There are 6 questions on this test. 3. You have 3 hours to

More information

More on Verification and Model Checking

More on Verification and Model Checking More on Verification and Model Checking Wednesday Oct 07, 2015 Philipp Rümmer Uppsala University Philipp.Ruemmer@it.uu.se 1/60 Course fair! 2/60 Exam st October 21, 8:00 13:00 If you want to participate,

More information

NAME: c. (true or false) The median is always stored at the root of a binary search tree.

NAME: c. (true or false) The median is always stored at the root of a binary search tree. EE 322C Spring 2009 (Chase) Exam 2: READ THIS FIRST. Please use the back side of each page for scratch paper. For some of the questions you may need to think quite a bit before you write down an answer.

More information

Chapter 9. Priority Queue

Chapter 9. Priority Queue Chapter 9 Priority Queues, Heaps, Graphs Spring 2015 1 Priority Queue Priority Queue An ADT in which only the item with the highest priority can be accessed 2Spring 2015 Priority Depends on the Application

More information

Systematic Testing of Database Engines Using a Relational Constraint Solver

Systematic Testing of Database Engines Using a Relational Constraint Solver Systematic Testing of Database Engines Using a Relational Constraint Solver Shadi Abdul Khalek Department of Electrical and Computer Engineering The University of Texas at Austin Austin TX, USA shadi@mail.utexas.edu

More information

Prelim 2. CS 2110, November 20, 2014, 7:30 PM Extra Total Question True/False Short Answer

Prelim 2. CS 2110, November 20, 2014, 7:30 PM Extra Total Question True/False Short Answer Prelim 2 CS 2110, November 20, 2014, 7:30 PM 1 2 3 4 5 Extra Total Question True/False Short Answer Complexity Induction Trees Graphs Extra Credit Max 20 10 15 25 30 5 100 Score Grader The exam is closed

More information

FINAL EXAMINATION. COMP-250: Introduction to Computer Science - Fall 2011

FINAL EXAMINATION. COMP-250: Introduction to Computer Science - Fall 2011 STUDENT NAME: STUDENT ID: McGill University Faculty of Science School of Computer Science FINAL EXAMINATION COMP-250: Introduction to Computer Science - Fall 2011 December 13, 2011 2:00-5:00 Examiner:

More information

CSL 201 Data Structures Mid-Semester Exam minutes

CSL 201 Data Structures Mid-Semester Exam minutes CL 201 Data tructures Mid-emester Exam - 120 minutes Name: Roll Number: Please read the following instructions carefully This is a closed book, closed notes exam. Calculators are allowed. However laptops

More information

Java PathFinder. Pavel Parízek. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Java PathFinder. Pavel Parízek.  CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Java PathFinder http://d3s.mff.cuni.cz Pavel Parízek CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Java PathFinder (JPF) Verification framework for Java programs Explicit state space

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 11: Binary Search Trees MOUNA KACEM mouna@cs.wisc.edu Fall 2018 General Overview of Data Structures 2 Introduction to trees 3 Tree: Important non-linear data structure

More information

DDS Dynamic Search Trees

DDS Dynamic Search Trees DDS Dynamic Search Trees 1 Data structures l A data structure models some abstract object. It implements a number of operations on this object, which usually can be classified into l creation and deletion

More information

CS32 Discussion Week 3

CS32 Discussion Week 3 CS32 Discussion Week 3 Muhao Chen muhaochen@ucla.edu http://yellowstone.cs.ucla.edu/~muhao/ 1 Outline Doubly Linked List Sorted Linked List Reverse a Linked List 2 Doubly Linked List A linked list where

More information

Motivation Computer Information Systems Storage Retrieval Updates. Binary Search Trees. OrderedStructures. Binary Search Tree

Motivation Computer Information Systems Storage Retrieval Updates. Binary Search Trees. OrderedStructures. Binary Search Tree Binary Search Trees CMPUT 115 - Lecture Department of Computing Science University of Alberta Revised 21-Mar-05 In this lecture we study an important data structure: Binary Search Tree (BST) Motivation

More information

Outline. Computer Science 331. Heap Shape. Binary Heaps. Heap Sort. Insertion Deletion. Mike Jacobson. HeapSort Priority Queues.

Outline. Computer Science 331. Heap Shape. Binary Heaps. Heap Sort. Insertion Deletion. Mike Jacobson. HeapSort Priority Queues. Outline Computer Science 33 Heap Sort Mike Jacobson Department of Computer Science University of Calgary Lectures #5- Definition Representation 3 5 References Mike Jacobson (University of Calgary) Computer

More information

Testing, Debugging, Program Verification

Testing, Debugging, Program Verification Testing, Debugging, Program Verification Automated Test Case Generation, Part II Wolfgang Ahrendt & Vladimir Klebanov & Moa Johansson 12 December 2012 TDV: ATCG II /GU 2011-12-12 1 / 17 Recap Specification-/Model-Based

More information

CS 314 Exam 2 Fall 2017

CS 314 Exam 2 Fall 2017 Points off 1 2 3 4 5 Total off CS 314 Exam 2 Fall 2017 Your Name Your UTEID Circle your TAs Name: Gilbert Jacob Jorge Joseph Lucas Rebecca Shelby Instructions: 1. There are 5 questions on this test. 100

More information

Object-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018

Object-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018 Object-oriented programming 1 and data-structures CS/ENGRD 2110 SUMMER 2018 Lecture 1: Types and Control Flow http://courses.cs.cornell.edu/cs2110/2018su Lecture 1 Outline 2 Languages Overview Imperative

More information

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 7. (A subset of) the Collections Interface. The Java Collections Interfaces

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 7. (A subset of) the Collections Interface. The Java Collections Interfaces Taking Stock IE170: Algorithms in Systems Engineering: Lecture 7 Jeff Linderoth Department of Industrial and Systems Engineering Lehigh University January 29, 2007 Last Time Practice Some Sorting Algs

More information

Final exam. CS 2110, December 15, 2016, 9:00AM

Final exam. CS 2110, December 15, 2016, 9:00AM Final exam CS 2110, December 15, 2016, 9:00AM Question Short Trie Loop Exp Rec Gen Span Mon BigO Data Total Max 20 7 9 10 9 9 8 10 10 8 100 Score Grader The exam is closed book and closed notes. Do not

More information

Software Testing CS 408. Lecture 11: Review 2/20/18

Software Testing CS 408. Lecture 11: Review 2/20/18 Software Testing CS 408 Lecture 11: Review 2/20/18 Lecture 1: Basics 2 Two Views Verification: Prove the absence, and conjecture the presence, of bugs Ex: types: Not all ill-typed programs are wrong But,

More information

CS165 Practice Midterm Problems Fall 2018

CS165 Practice Midterm Problems Fall 2018 CS165 Practice Midterm Problems Fall 2018 The following is a collection of practice problems for the CS165: Data Structures and Applications second midterm. The questions are similar to what they would

More information

CMSC 330: Organization of Programming Languages

CMSC 330: Organization of Programming Languages CMSC 330: Organization of Programming Languages Operational Semantics CMSC 330 Summer 2018 1 Formal Semantics of a Prog. Lang. Mathematical description of the meaning of programs written in that language

More information

CMPSCI 187: Programming With Data Structures. Lecture #26: Binary Search Trees David Mix Barrington 9 November 2012

CMPSCI 187: Programming With Data Structures. Lecture #26: Binary Search Trees David Mix Barrington 9 November 2012 CMPSCI 187: Programming With Data Structures Lecture #26: Binary Search Trees David Mix Barrington 9 November 2012 Binary Search Trees Why Binary Search Trees? Trees, Binary Trees and Vocabulary The BST

More information