# Detecting Pattern-Match Failures in Haskell. Neil Mitchell and Colin Runciman York University

Save this PDF as:

Size: px
Start display at page:

Download "Detecting Pattern-Match Failures in Haskell. Neil Mitchell and Colin Runciman York University www.cs.york.ac.uk/~ndm/catch"

## Transcription

1 Detecting Pattern-Match Failures in Haskell Neil Mitchell and Colin Runciman York University

2 Does this code crash? risers [] = [] risers [x] = [[x]] risers (x:y:etc) = if x y then (x:s) : ss else [x] : (s:ss) where (s:ss) = risers (y:etc) > risers [1,2,3,1,2] = [[1,2,3],[1,2]]

3 Does this code crash? risers [] = [] risers [x] = [[x]] risers (x:y:etc) = if x y then (x:s) : ss else [x] : (s:ss) where (s:ss) = risers (y:etc) Potential crash > risers [1,2,3,1,2] = [[1,2,3],[1,2]]

4 Does this code crash? risers [] = [] risers [x] = [[x]] risers (x:y:etc) = if x y then (x:s) : ss else [x] : (s:ss) where (s:ss) = risers (y:etc) Potential crash > risers [1,2,3,1,2] = [[1,2,3],[1,2]] Property: risers (_:_) = (_:_)

5 Overview The problem of pattern-matching A framework to solve patterns Constraint languages for the framework The Catch tool A case study: HsColour Conclusions

6 The problem of Pattern-Matching head (x:xs) = x head x_xs = case x_xs of x:xs x [] error head [] Problem: can we detect calls to error

7 Haskell programs go wrong Well-typed programs never go wrong But... Incorrect result/actions requires annotations Non-termination cannot always be fixed Call error not much research done

8 My Goal Write a tool for Haskell 98 GHC/Haskell is merely a front-end issue Check statically that error is not called Conservative, corresponds to a proof Entirely automatic No annotations = Catch

9 Preconditions Each function has a precondition If the precondition to a function holds, and none of its arguments crash, it will not crash pre(head x) = x {(:) } pre(assert x y) = x {True} pre(null x) = True pre(error x) = False

10 Properties A property states that if a function is called with arguments satisfying a constraint, the result will satisfy a constraint x {(:) } (null x) {True} x {(:) [] _} (head x) {[]} x {[]} (head x) {True} Calculation direction

11 Checking a Program (Overview) Start by calculating the precondition of main If the precondition is True, then program is safe Calculate other preconditions and properties as necessary Preconditions and properties are defined recursively, so take the fixed point

12 Checking risers risers r = case r of [] [] x:xs case xs of [] (x:[]) : [] y:etc case risers (y:etc) of [] error pattern match s:ss case x y of True (x:s) : ss False [x] : (s:ss)

13 Checking risers risers r = case r of [] [] x:xs case xs of [] (x:[]) : [] y:etc case risers (y:etc) of [] error pattern match s:ss case x y of True (x:s) : ss False [x] : (s:ss)

14 Checking risers risers r = case r of [] [] x:xs case xs of [] (x:[]) : [] y:etc case risers (y:etc) of [] error pattern match s:ss case x y of True (x:s) : ss False [x] : (s:ss) r {[]} xs {[]} risers (y:etc) {(:) }

15 Checking risers risers r = case r of [] [] x:xs case xs of [] (x:[]) : [] r {(:) } [] {(:) } y:etc case risers (y:etc) of [] error pattern match s:ss case x y of True (x:s) : ss False [x] : (s:ss)... (x:[]) : [] {(:) }... {(:) }... (x:s) : ss {(:) }... [x] : (s:ss) {(:) }

16 Checking risers risers r = case r of [] [] x:xs case xs of Property: r {(:) } risers r {(:) } [] (x:[]) : [] r {(:) } [] {(:) } y:etc case risers (y:etc) of [] error pattern match s:ss case x y of True (x:s) : ss False [x] : (s:ss)... (x:[]) : [] {(:) }... {(:) }... (x:s) : ss {(:) }... [x] : (s:ss) {(:) }

17 Checking risers risers r = case r of [] [] x:xs case xs of Property: r {(:) } risers r {(:) } [] (x:[]) : [] y:etc case risers (y:etc) of [] error pattern match s:ss case x y of True (x:s) : ss False [x] : (s:ss) r {[]} xs {[]} risers (y:etc) {(:) }

18 Checking risers risers r = case r of [] [] x:xs case xs of Property: r {(:) } risers r {(:) } [] (x:[]) : [] y:etc case risers (y:etc) of [] error pattern match s:ss case x y of True (x:s) : ss False [x] : (s:ss) r {[]} xs {[]} y:etc {(:) }

19 Calculating Preconditions Variables: pre(x) = True Always True Constructors: pre(a:b) = pre(a) pre(b) Conjunction of the children Function calls: pre(f x) = x pre(f) pre(x) Conjunction of the children Plus applying the preconditions of f Note: precondition is recursive

20 Calculating Preconditions (case) pre(case on of [] a x:xs b) = pre(on) (on {[]} pre(a)) (on {(:) } pre(b)) An alternative is safe, or is never reached

21 Extending Constraints ( ) risers r = case r of [] [] x:xs case xs of [] (x:[]) : [] y:etc... xs {(:) }... r<(:)-2> {(:) } r {(:) _ ((:) )} <(:)-2> {(:) } {(:) _ ((:) )} <(:)-1> {True} {(:) True _}

22 Splitting Constraints ( ) risers r = case r of [] [] x:xs case xs of [] (x:[]) : [] y:etc... (x:[]):[] {(:) }... True ((:) 1 2) {(:) } True ((:) 1 2) {[]} False ((:) 1 2) {(:) True []} 1 {True} 2 {[]}

23 Summary so far Rules for Preconditions How to manipulate constraints Extend ( ) for locally bound variables Split ( ) for constructor applications Invoke properties for function application Can change a constraint on expressions, to one on function arguments

24 Algorithm for Preconditions set all preconditions to True set error precondition to False while any preconditions change recompute every precondition end while Fixed Point! Algorithm for properties is very similar

25 Fixed Point To ensure a fixed point exists demand only a finite number of possible constraints At each stage, ( ) with the previous precondition Ensures termination of the algorithm But termination useable speed!

26 The Basic Constraints These are the basic ones I have introduced Not finite but can bound the depth A little arbitrary Can t represent infinite data structures But a nice simple introduction!

27 A Constraint System Finite number of constraints Extend operator ( ) Split operator ( ) notin creation, i.e. x {(:) )} Optional simplification rules in a predicate

28 Regular Expression Constraints Based on regular expressions x r c r is a regular expression of paths, i.e. <(:)-1> c is a set of constructors True if all r paths lead to a constructor in c Split operator ( ) is regular expression differentiation/quotient

29 RE-Constraint Examples head xs xs (1 {:}) map head xs xs (<(:)-2>* <(:)-1> {:}) map head (reverse xs) xs (<(:)-2>* <(:)-1> {:}) xs (<(:)-2>* {:})

30 RE-Constraint Problems They are finite (with certain restrictions) But there are many of them! Some simplification rules Quite a lot (19 so far) Not complete This fact took 2 years to figure out! In practice, too slow for moderate examples

31 Multipattern Constraints Idea: model the recursive and non-recursive components separately Given a list Say something about the first element Say something about all other elements Cannot distinguish between element 3 and 4

32 MP-Constraint Examples head xs xs ({(:) _} {[], (:) _}) xs must be (:) xs.<(:)-1> must be _ All recursive tails are unrestricted Use the type s to determine recursive bits

33 More MP-Constraint Examples map head xs {[], (:) ({(:) _} {[], (:) _})} {[], (:) ({(:) _} {[], (:) _})} An infinite list {(:) _} {(:) _}

34 MP-Constraint semantics MP = {set Val} Val = _ {set Pat} {set Pat} Element must satisfy at least one pattern Each recursive part must satisfy at least one pattern Pat = Constructor [(non-recursive field, MP)]

35 MP-Constraint Split ((:) 1 2) {(:) _} {(:) {True}} An infinite list whose elements (after the first) are all true 1 _ 2 {(:) {True}} {(:) {True}}

36 MP-Constraint Simplification There are 8 rules for simplification Still not complete... But! x a x b = x c union of two sets x a x b = x c cross product of two sets

37 MP-Constraint Currying We can merge all MP s on one variable We can curry all functions so each has only one variable MP-constraint Predicate MP-constraint ( ) a b ( ) (a, b)

38 MP vs RE constraints Both have different expressive power Neither is a subset/superset RE-constraints grow too quickly MP-constraints stay much smaller Therefore Catch uses MP-constraints

39 Numbers data Int = Neg Zero One Pos Checks Is positive? Is natural? Is zero? Operations (+1), (-1) Work s very well in practice

40 Summary so far Rules for Preconditions and Properties Can manipulate constraints in terms of three operations MP and RE Constraints introduced Have picked MP-Constraints

41 Making a Tool (Catch) Haskell Core First-order Core Yhc In draft paper, see website Curried Analyse This talk

42 Testing Catch The nofib benchmark suite, but main = do [arg] getargs print \$ primes!! (read arg) Benchmarks have no real users Programs without real users crash

43 Nofib/Imaginary Results (14 tests) Trivially Safe Perfect Answer Good Failures Bad Failures Good failure: Did not get perfect answer, but neither did I!

44 Bad Failure: Bernouilli tail (tail x) Actual condition: list is at least length 2 Inferred condition: list must be infinite drop 2 x

45 Bad Failure: Paraffins radical_generator n = f undefined where f unused = big_memory_result array :: Ix a (a, a) [(a, b)] Array a b Each index must be in the given range Array indexing also problematic

46 Perfect Answer: Digits of E2 e = ( 2. ++) \$ tail concat \$ map (show head) \$ iterate (carrypropagate 2 map (10*) tail) \$ 2 : [1,1..]

47 Performance of Catch Time (Seconds) Source Code

48 Case Study: HsColour Takes Haskell source code and prints out a colourised version 4 years old, 6 contributors, 12 modules, 800+ lines Used by GHC nightly runs to generate docs Used online by

49 HsColour: Bug 1 FIXED data Prefs =... deriving (Read,Show) Uses read/show serialisation to a file readfile prefs, then read result Potential crash if the user has modified the file Real crash when Pref s structure changed!

50 HsColour: Bug 1 Catch > Catch HsColour.hs Check Prelude.read: no parse Partial Prelude.read\$252 Partial Language.Haskell.HsColour....Colourise.parseColourPrefs Partial Main.main Full log is recorded All preconditions and properties

51 FIXED HsColour: Bug 2 The latex output mode had: outtoken ( \ :xs) = `` ++ init xs ++ file.hs: hscolour latex file.hs Crash

52 HsColour: Bug 3 FIXED The html anchor output mode had: outtoken ( ` :xs) = <a> ++ init xs ++ </a> file.hs: (`) hscolour html anchor file.hs Crash

53 CHANGED HsColour: Problem 4 A pattern match without a [] case A nice refactoring, but not a crash Proof was complex, distributed and fragile Based on the length of comment lexemes! End result: HsColour cannot crash Or could not at the date I checked it... Required 2.1 seconds, 2.7Mb

54 Case Study: FiniteMap library Over 10 years old, was a standard library 14 non-exhaustive patterns, 13 are safe delfromfm (Branch key..) del_key del_key > key =... del_key < key =... del_key key =...

55 Case Study: XMonad Haskell Window Manager Central module (StackSet) Checked by Catch as a library No bugs, but suggested refactorings Made explicit some assumptions about Num

56 Catch s Failings Weakest Area: Yhc Conversion from Haskell to Core requires Yhc Can easily move to using GHC Core (once fixed) 2 nd Weakest Area: First-order transform Still working on this Could use supercompilation

57 ??-Constraints Could solve more complex problems Could retain numeric constraints precisely Ideally have a single normal form MP-constraints work well, but there is room for improvement

58 Alternatives to Catch Reach, SmallCheck Matt Naylor, Colin R Enumerative testing to some depth ESC/Haskell - Dana Xu Precondition/postcondition checking Dependent types Epigram, Cayenne Push conditions into the types

59 Conclusions Pattern matching is an important area that has been overlooked Framework separate from constraints Can replace constraints for different power Catch is a good step towards the solution Practical tool Has found real bugs

### Haskell Programming With Tests, and Some Alloy

Haskell Programming With Tests, and Some Alloy Jan van Eijck jve@cwi.nl Master SE, 2010 Abstract How to write a program in Haskell, and how to use the Haskell testing tools... QuickCheck is a tool written

### Visualizing Information Flow through C Programs

Visualizing Information Flow through C Programs Joe Hurd, Aaron Tomb and David Burke Galois, Inc. {joe,atomb,davidb}@galois.com Systems Software Verification Workshop 7 October 2010 Joe Hurd, Aaron Tomb

### Type Classes with Functional Dependencies

Appears in Proceedings of the 9th European Symposium on Programming, ESOP 2000, Berlin, Germany, March 2000, Springer-Verlag LNCS 1782. Type Classes with Functional Dependencies Mark P. Jones Department

### Termination Checking: Comparing Structural Recursion and Sized Types by Examples

Termination Checking: Comparing Structural Recursion and Sized Types by Examples David Thibodeau Decemer 3, 2011 Abstract Termination is an important property for programs and is necessary for formal proofs

### The countdown problem

JFP 12 (6): 609 616, November 2002. c 2002 Cambridge University Press DOI: 10.1017/S0956796801004300 Printed in the United Kingdom 609 F U N C T I O N A L P E A R L The countdown problem GRAHAM HUTTON

### The Clean programming language. Group 25, Jingui Li, Daren Tuzi

The Clean programming language Group 25, Jingui Li, Daren Tuzi The Clean programming language Overview The Clean programming language first appeared in 1987 and is still being further developed. It was

### Chapter 7: Functional Programming Languages

Chapter 7: Functional Programming Languages Aarne Ranta Slides for the book Implementing Programming Languages. An Introduction to Compilers and Interpreters, College Publications, 2012. Fun: a language

### Automated Program Behavior Analysis

Automated Program Behavior Analysis Stacy Prowell sprowell@cs.utk.edu March 2005 SQRL / SEI Motivation: Semantics Development: Most engineering designs are subjected to extensive analysis; software is

### Regular Expressions and Automata using Haskell

Regular Expressions and Automata using Haskell Simon Thompson Computing Laboratory University of Kent at Canterbury January 2000 Contents 1 Introduction 2 2 Regular Expressions 2 3 Matching regular expressions

### Introduction to Static Analysis for Assurance

Introduction to Static Analysis for Assurance John Rushby Computer Science Laboratory SRI International Menlo Park CA USA John Rushby Static Analysis for Assurance: 1 Overview What is static analysis?

### ML for the Working Programmer

ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming

### Statically Checking API Protocol Conformance with Mined Multi-Object Specifications Companion Report

Statically Checking API Protocol Conformance with Mined Multi-Object Specifications Companion Report Michael Pradel 1, Ciera Jaspan 2, Jonathan Aldrich 2, and Thomas R. Gross 1 1 Department of Computer

### Repetition and Loops. Additional Python constructs that allow us to effect the (1) order and (2) number of times that program statements are executed.

New Topic Repetition and Loops Additional Python constructs that allow us to effect the (1) order and (2) number of times that program statements are executed. These constructs are the 1. while loop and

### A New Parser. Neil Mitchell. Neil Mitchell

A New Parser Neil Mitchell Neil Mitchell 2004 1 Disclaimer This is not something I have done as part of my PhD I have done it on my own I haven t researched other systems Its not finished Any claims may

### Programming Languages

Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:

### Gluing things together with Haskell. Neil Mitchell http://nmitchell.co.uk/

Gluing things together with Haskell Neil Mitchell http://nmitchell.co.uk/ Code Elegantly designed Build system Test harness Continuous integration Release bundling Installer generator Release distribution

### Assignment #2: Part I:

Assignment #2: To complete this assignment, you will email the following files to the TA prior to the deadline. You may work in pairs. We recommend each member of the pair attempt the theory questions

### Product types are finite labeled products of types. They are a generalization of cartesian product. Elements of product types are called records.

Chapter 6 User-defined types The user is allowed to define his/her own data types. With this facility, there is no need to encode the data structures that must be manipulated by a program into lists (as

### Basic building blocks for a triple-double intermediate format

Basic building blocks for a triple-double intermediate format corrected version) Christoph Quirin Lauter February 26, 2009 Abstract The implementation of correctly rounded elementary functions needs high

### Static Analysis. Find the Bug! 15-654: Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled

Static Analysis 15-654: Analysis of Software Artifacts Jonathan Aldrich 1 Find the Bug! Source: Engler et al., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, OSDI

### 09336863931 : provid.ir

provid.ir 09336863931 : NET Architecture Core CSharp o Variable o Variable Scope o Type Inference o Namespaces o Preprocessor Directives Statements and Flow of Execution o If Statement o Switch Statement

### Computing Concepts with Java Essentials

2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann

### CSc 372. Comparative Programming Languages. 21 : Haskell Accumulative Recursion. Department of Computer Science University of Arizona

1/18 CSc 372 Comparative Programming Languages 21 : Haskell Accumulative Recursion Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg 2/18 Stack

### Functional Programming

FP 2005 1.1 3 Functional Programming WOLFRAM KAHL kahl@mcmaster.ca Department of Computing and Software McMaster University FP 2005 1.2 4 What Kinds of Programming Languages are There? Imperative telling

### CS 103X: Discrete Structures Homework Assignment 3 Solutions

CS 103X: Discrete Structures Homework Assignment 3 s Exercise 1 (20 points). On well-ordering and induction: (a) Prove the induction principle from the well-ordering principle. (b) Prove the well-ordering

### Testing and Tracing Lazy Functional Programs using QuickCheck and Hat

Testing and Tracing Lazy Functional Programs using QuickCheck and Hat Koen Claessen 1, Colin Runciman 2, Olaf Chitil 2, John Hughes 1, and Malcolm Wallace 2 1 Chalmers University of Technology, Sweden

### Functional Programming in C++11

Functional Programming in C++11 science + computing ag IT-Dienstleistungen und Software für anspruchsvolle Rechnernetze Tübingen München Berlin Düsseldorf An Overview Programming in a functional style

### Data Flow Analysis. CS 544 Baris Aktemur

Data Flow Analysis CS 544 Baris Aktemur 1 Contents from Alfred V. Aho, Monica Lam, Ravi Sethi, and Jeffrey D. Ullman Compilers: Principles, Techniques, and Tools, Second Edition Addison-Wesley, 2007, ISBN

### MATHEMATICAL INDUCTION AND DIFFERENCE EQUATIONS

1 CHAPTER 6. MATHEMATICAL INDUCTION AND DIFFERENCE EQUATIONS 1 INSTITIÚID TEICNEOLAÍOCHTA CHEATHARLACH INSTITUTE OF TECHNOLOGY CARLOW MATHEMATICAL INDUCTION AND DIFFERENCE EQUATIONS 1 Introduction Recurrence

### Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland

Software Testing & Analysis (F22ST3) Static Analysis Techniques Andrew Ireland School of Mathematical and Computer Science Heriot-Watt University Edinburgh Software Testing & Analysis (F22ST3): Static

### Mathematical Induction. Rosen Chapter 4.1 (6 th edition) Rosen Ch. 5.1 (7 th edition)

Mathematical Induction Rosen Chapter 4.1 (6 th edition) Rosen Ch. 5.1 (7 th edition) Mathmatical Induction Mathmatical induction can be used to prove statements that assert that P(n) is true for all positive

### Coverability for Parallel Programs

2015 http://excel.fit.vutbr.cz Coverability for Parallel Programs Lenka Turoňová* Abstract We improve existing method for the automatic verification of systems with parallel running processes. The technique

### 6. If there is no improvement of the categories after several steps, then choose new seeds using another criterion (e.g. the objects near the edge of

Clustering Clustering is an unsupervised learning method: there is no target value (class label) to be predicted, the goal is finding common patterns or grouping similar examples. Differences between models/algorithms

### Regression Verification: Status Report

Regression Verification: Status Report Presentation by Dennis Felsing within the Projektgruppe Formale Methoden der Softwareentwicklung 2013-12-11 1/22 Introduction How to prevent regressions in software

### Factoring & Primality

Factoring & Primality Lecturer: Dimitris Papadopoulos In this lecture we will discuss the problem of integer factorization and primality testing, two problems that have been the focus of a great amount

### Journal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML

Journal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML Xavier Leroy École Normale Supérieure Michel Mauny INRIA Rocquencourt Abstract Objects with dynamic types allow the integration

### REPETITION WITH PYTHON

REPETITION WITH PYTHON José M. Garrido Department of Computer Science May 2015 College of Computing and Software Engineering Kennesaw State University c 2015, J. M. Garrido Repetition with Python 2 Repetition

### recursion, O(n), linked lists 6/14

recursion, O(n), linked lists 6/14 recursion reducing the amount of data to process and processing a smaller amount of data example: process one item in a list, recursively process the rest of the list

### Algorithms and Data Structures

Algorithms and Data Structures Part 2: Data Structures PD Dr. rer. nat. habil. Ralf-Peter Mundani Computation in Engineering (CiE) Summer Term 2016 Overview general linked lists stacks queues trees 2 2

### A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:

Binary Search Trees 1 The general binary tree shown in the previous chapter is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will)

### Software Engineering Techniques

Software Engineering Techniques Low level design issues for programming-in-the-large. Software Quality Design by contract Pre- and post conditions Class invariants Ten do Ten do nots Another type of summary

### POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful

POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: ralf@cs.uu.nl Homepage: http://www.cs.uu.nl/~ralf/

### CSE 308. Coding Conventions. Reference

CSE 308 Coding Conventions Reference Java Coding Conventions googlestyleguide.googlecode.com/svn/trunk/javaguide.html Java Naming Conventions www.ibm.com/developerworks/library/ws-tipnamingconv.html 2

### 2. Compressing data to reduce the amount of transmitted data (e.g., to save money).

Presentation Layer The presentation layer is concerned with preserving the meaning of information sent across a network. The presentation layer may represent (encode) the data in various ways (e.g., data

### Lecture 10: Multiple Clock Domains

Bluespec SystemVerilog Training Lecture 10: Multiple Clock Domains Copyright Bluespec, Inc., 2005-2008 Lecture 10: Multiple Clock Domains The Clock type, and functions Modules with different clocks Clock

### Outline. 1 Denitions. 2 Principles. 4 Implementation and Evaluation. 5 Debugging. 6 References

Outline Computer Science 331 Introduction to Testing of Programs Mike Jacobson Department of Computer Science University of Calgary Lecture #3-4 1 Denitions 2 3 4 Implementation and Evaluation 5 Debugging

### The Union-Find Problem Kruskal s algorithm for finding an MST presented us with a problem in data-structure design. As we looked at each edge,

The Union-Find Problem Kruskal s algorithm for finding an MST presented us with a problem in data-structure design. As we looked at each edge, cheapest first, we had to determine whether its two endpoints

### Software Engineering

Software Engineering Lecture 04: The B Specification Method Peter Thiemann University of Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Software Engineering SWT 1 / 50 The B specification method

### Rigorous Software Development CSCI-GA 3033-009

Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 11 Semantics of Programming Languages Denotational Semantics Meaning of a program is defined as the mathematical

### Data Structure with C

Subject: Data Structure with C Topic : Tree Tree A tree is a set of nodes that either:is empty or has a designated node, called the root, from which hierarchically descend zero or more subtrees, which

### Moving from CS 61A Scheme to CS 61B Java

Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you

### Big Data & Scripting Part II Streaming Algorithms

Big Data & Scripting Part II Streaming Algorithms 1, Counting Distinct Elements 2, 3, counting distinct elements problem formalization input: stream of elements o from some universe U e.g. ids from a set

### Bounded Cost Algorithms for Multivalued Consensus Using Binary Consensus Instances

Bounded Cost Algorithms for Multivalued Consensus Using Binary Consensus Instances Jialin Zhang Tsinghua University zhanggl02@mails.tsinghua.edu.cn Wei Chen Microsoft Research Asia weic@microsoft.com Abstract

### Theory of Computation Lecture Notes

Theory of Computation Lecture Notes Abhijat Vichare August 2005 Contents 1 Introduction 2 What is Computation? 3 The λ Calculus 3.1 Conversions: 3.2 The calculus in use 3.3 Few Important Theorems 3.4 Worked

### PHPUnit and Drupal 8 No Unit Left Behind. Paul Mitchum / @PaulMitchum

PHPUnit and Drupal 8 No Unit Left Behind Paul Mitchum / @PaulMitchum And You Are? Paul Mitchum Mile23 on Drupal.org From Seattle Please Keep In Mind The ability to give an hour-long presentation is not

### Adding GADTs to OCaml the direct approach

Adding GADTs to OCaml the direct approach Jacques Garrigue & Jacques Le Normand Nagoya University / LexiFi (Paris) https://sites.google.com/site/ocamlgadt/ Garrigue & Le Normand Adding GADTs to OCaml 1

### Magic Tutorial #S-1: The scheme command-line interpreter

Magic Tutorial #S-1: The scheme command-line interpreter Rajit Manohar Department of Computer Science California Institute of Technology Pasadena, CA 91125 This tutorial corresponds to Magic version 7.

### Chapter I Logic and Proofs

MATH 1130 1 Discrete Structures Chapter I Logic and Proofs Propositions A proposition is a statement that is either true (T) or false (F), but or both. s Propositions: 1. I am a man.. I am taller than

### 1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D.

1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D. base address 2. The memory address of fifth element of an array can be calculated

### A Labeling Algorithm for the Maximum-Flow Network Problem

A Labeling Algorithm for the Maximum-Flow Network Problem Appendix C Network-flow problems can be solved by several methods. In Chapter 8 we introduced this topic by exploring the special structure of

### Extended Static Checking for Java

Lukas TU München - Seminar Verification 14. Juli 2011 Outline 1 Motivation 2 ESC/Java example 3 ESC/JAVA architecture VC generator Simplify 4 JML + ESC/Java annotation language JML What ESC/Java checks

### Software Testing & Verification 2013/2014 Universiteit Utrecht

Software Testing & Verification 2013/2014 Universiteit Utrecht 2nd Jul. 2014, 13:30-16:30, BBL 001 Lecturer: Wishnu Prasetya You are allowed to bring along the Appendix of the LN. Part I [3pt (6 0.5)]

### Affdex SDK for Android. Developer Guide For SDK version 1.0

Affdex SDK for Android Developer Guide For SDK version 1.0 www.affdex.com/mobile-sdk 1 August 4, 2014 Introduction The Affdex SDK is the culmination of years of scientific research into emotion detection,

### Descriptive Set Theory

Martin Goldstern Institute of Discrete Mathematics and Geometry Vienna University of Technology Ljubljana, August 2011 Polish spaces Polish space = complete metric separable. Examples N = ω = {0, 1, 2,...}.

### SQL INJECTION ATTACKS By Zelinski Radu, Technical University of Moldova

SQL INJECTION ATTACKS By Zelinski Radu, Technical University of Moldova Where someone is building a Web application, often he need to use databases to store information, or to manage user accounts. And

### Inflation. Chapter 8. 8.1 Money Supply and Demand

Chapter 8 Inflation This chapter examines the causes and consequences of inflation. Sections 8.1 and 8.2 relate inflation to money supply and demand. Although the presentation differs somewhat from that

### 05 Case Study: C Programming Language

CS 2SC3 and SE 2S03 Fall 2009 05 Case Study: C Programming Language William M. Farmer Department of Computing and Software McMaster University 18 November 2009 The C Programming Language Developed by Dennis

### Persistent Data Structures

6.854 Advanced Algorithms Lecture 2: September 9, 2005 Scribes: Sommer Gentry, Eddie Kohler Lecturer: David Karger Persistent Data Structures 2.1 Introduction and motivation So far, we ve seen only ephemeral

### Operation Stack [bottom top] Instantiate [ ] Push 1 [ 1 ] Push 2 [ 1, 2 ] Push 3 [ 1, 2, 3 ] Pop [ 1, 2 ] Push 4 [ 1, 2, 4 ] Pop [ 1, 2 ]

Debugging Ask a random sample of students enrolled in a computer science course what their favorite aspect of programming is, and very few will respond with debugging. Debugging programs in computer science

### Programming Languages CIS 443

Course Objectives Programming Languages CIS 443 0.1 Lexical analysis Syntax Semantics Functional programming Variable lifetime and scoping Parameter passing Object-oriented programming Continuations Exception

### Sources: On the Web: Slides will be available on:

C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,

### CS 6371: Advanced Programming Languages

CS 6371: Advanced Programming Languages Dr. Kevin Hamlen Spring 2014 Fill out, sign, and return prereq forms: Course number: CS 6371 Section: 1 Prerequisites: CS 5343: Algorithm Analysis & Data Structures

### Platform-independent static binary code analysis using a metaassembly

Platform-independent static binary code analysis using a metaassembly language Thomas Dullien, Sebastian Porst zynamics GmbH CanSecWest 2009 Overview The REIL Language Abstract Interpretation MonoREIL

### A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation

PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris

### Analysis of Binary Search algorithm and Selection Sort algorithm

Analysis of Binary Search algorithm and Selection Sort algorithm In this section we shall take up two representative problems in computer science, work out the algorithms based on the best strategy to

### Semester Review. CSC 301, Fall 2015

Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!

### Lecture 12: Abstract data types

Lecture 12: Abstract data types Algebras Abstract data types Encapsulation and information hiding Parameterization Algebras Definition Which kinds of data do we want to discuss? What can we do with it?

### TA: Matt Tong Tues 5-6pm @ EBU3b B225 - Office hour Wed1-2pm @ WLH 2206 - Discussion Thurs 2-3pm @ EBU3b B250/B250A - Lab/Office hour

Computer Science and Engineering 150 Programming Languages for Artificial Intelligence SECTION ID: 588775 Instructor: Gary Cottrell Phone: 858-534-6640 Office: EBU3B (CSE Building) 4130 email: gary@ucsd.edu

### 10266A: Programming in C# with Microsoft Visual Studio 2010

10266A: Programming in C# with Microsoft Visual Studio 2010 Course Overview The course focuses on the C# program structure, language syntax, and implementation details with.net Framework 4.0. This course

### Mathematical Induction

Mathematical Induction In logic, we often want to prove that every member of an infinite set has some feature. E.g., we would like to show: N 1 : is a number 1 : has the feature Φ ( x)(n 1 x! 1 x) How

### Art of Code Front-end Web Development Training Program

Art of Code Front-end Web Development Training Program Pre-work (5 weeks) Codecademy HTML5/CSS3 and JavaScript tracks HTML/CSS (7 hours): http://www.codecademy.com/en/tracks/web JavaScript (10 hours):

### Course: Programming II - Abstract Data Types. The ADT Stack. A stack. The ADT Stack and Recursion Slide Number 1

Definition Course: Programming II - Abstract Data Types The ADT Stack The ADT Stack is a linear sequence of an arbitrary number of items, together with access procedures. The access procedures permit insertions

### opalang - Rapid & Secure Web Development

opalang - Rapid & Secure Web Development Syllabus Brief History of Web Development Ideas and Goals The Language itself Community Reason for Development Services and Apps written in OPA Future of OPA OPA

### Notes from Week 1: Algorithms for sequential prediction

CS 683 Learning, Games, and Electronic Markets Spring 2007 Notes from Week 1: Algorithms for sequential prediction Instructor: Robert Kleinberg 22-26 Jan 2007 1 Introduction In this course we will be looking

### RUnit - A Unit Test Framework for R

RUnit - A Unit Test Framework for R Thomas König, Klaus Jünemann, and Matthias Burger Epigenomics AG November 5, 2015 Contents 1 Introduction 2 2 The RUnit package 4 2.1 Test case execution........................

### Deterministic Discrete Modeling

Deterministic Discrete Modeling Formal Semantics of Firewalls in Isabelle/HOL Cornelius Diekmann, M.Sc. Dr. Heiko Niedermayer Prof. Dr.-Ing. Georg Carle Lehrstuhl für Netzarchitekturen und Netzdienste

### Testing and Inspecting to Ensure High Quality

Testing and Inspecting to Ensure High Quality Basic definitions A failure is an unacceptable behaviour exhibited by a system The frequency of failures measures the reliability An important design objective

### Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)

Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the

### Party Time! Computer Science I. Signature Examples PAIR OBJ. The Signature of a Procedure. Building a Set. Testing for Membership in a Set

Computer Science I Professor Tom Ellman Lecture 21 Party Time! Whom shall you invite? We will write the Party Planner program. It will select SETS of guests. By reasoning with RELATIONS. Before we party,

### HP LoadRunner. Software Version: 11.00. Ajax TruClient Tips & Tricks

HP LoadRunner Software Version: 11.00 Ajax TruClient Tips & Tricks Document Release Date: October 2010 Software Release Date: October 2010 Legal Notices Warranty The only warranties for HP products and

### Programming Language Rankings. Lecture 15: Type Inference, polymorphism & Type Classes. Top Combined. Tiobe Index. CSC 131! Fall, 2014!

Programming Language Rankings Lecture 15: Type Inference, polymorphism & Type Classes CSC 131 Fall, 2014 Kim Bruce Top Combined Tiobe Index 1. JavaScript (+1) 2. Java (-1) 3. PHP 4. C# (+2) 5. Python (-1)

### Merge Sort. 2004 Goodrich, Tamassia. Merge Sort 1

Merge Sort 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 Merge Sort 1 Divide-and-Conquer Divide-and conquer is a general algorithm design paradigm: Divide: divide the input data S in two disjoint subsets

### Searching Algorithms

Searching Algorithms The Search Problem Problem Statement: Given a set of data e.g., int [] arr = {10, 2, 7, 9, 7, 4}; and a particular value, e.g., int val = 7; Find the first index of the value in the

### An Example of a Numerical Calculation Class - Rational Numbers

An Example of a Numerical Calculation Class - Rational Numbers Because a rational number is determined by the integer numerator and integer denominator, we defined our data structure for a rational number

### Chapter 6: Episode discovery process

Chapter 6: Episode discovery process Algorithmic Methods of Data Mining, Fall 2005, Chapter 6: Episode discovery process 1 6. Episode discovery process The knowledge discovery process KDD process of analyzing

### Towards practical reactive security audit using extended static checkers 1

Towards practical reactive security audit using extended static checkers 1 Julien Vanegue 1 Shuvendu K. Lahiri 2 1 Bloomberg LP, New York 2 Microsoft Research, Redmond May 20, 2013 1 The work was conducted

### Software Verification and Testing. Lecture Notes: Temporal Logics

Software Verification and Testing Lecture Notes: Temporal Logics Motivation traditional programs (whether terminating or non-terminating) can be modelled as relations are analysed wrt their input/output