CheckCell · 2018. 1. 4. · Most Popular Language: Java?...

81

Transcript of CheckCell · 2018. 1. 4. · Most Popular Language: Java?...

Page 1: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 2: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

CheckCellDan Barowy, Dimitar Gochev, Emery Berger

Page 3: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Most Popular Language?

Page 4: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Most Popular Language: C++?#include  <iostream>      int  main()  {          std::cout  <<  "Hello,  world!"                            <<  std::endl;          return  0;  }

Page 5: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Most Popular Language: Java?

public  class  HelloWorld  {        public  static  void  main(String[]  args)  {                System.out.println("Hello,  world!");        }  }

Page 6: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Most Popular Language: Java?import  static  org.junit.Assert.assertEquals;  import  java.io.ByteArrayOutputStream;  import  java.io.PrintStream;  import  org.junit.Test;      public  class  HelloWorldTest  {     @Test     public  void  sayHelloWorld()  {       ByteArrayOutputStream  outContent  =  captureSystemOut();           HelloWorld.say();           assertEquals("Hello,  World!",  outContent.toString());     }         ByteArrayOutputStream  captureSystemOut()  {       ByteArrayOutputStream  outContent  =  new  ByteArrayOutputStream();       System.setOut(new  PrintStream(outContent));       return  outContent;     }  }  public  class  HelloWorld  {     public  static  void  say()  {       System.out.print("Hello,  World!");     }  }

Page 7: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Most Popular Language: Excel

Page 8: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Most Popular Language: Excel

Page 9: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Most Popular Language: Excel

Page 10: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 11: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 12: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 13: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 14: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 15: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 16: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 17: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 18: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 19: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

What’s the Problem?

Page 20: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Data >> Formulas

Page 21: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Data >> Formulas

Page 22: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

CheckCell

leverages interaction of data & formulas to find potential data bugs

Page 23: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

CheckCell

Page 24: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Values withunusually high impact:

really important to be correct!

Page 25: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 26: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 27: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}
Page 28: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

How Does CheckCell Work?

Page 29: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

How Does CheckCell Work?

Combination of dependence analysisand non-parametric statistical analysis

Page 30: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

How Does CheckCell Work?

Combination of dependence analysisand non-parametric statistical analysis

(assumes nothing about data distribution)

Page 31: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

How Does CheckCell Work?

Assignment) Grade) Homework( 20%)HW)1) 84) Quizzes( 30%)HW)2) 77) Exams( 50%)HW)3) 92)HW)4) 93) Final&grade& 84.275)Quiz)1) 87) Pass/Fail& Fail)Quiz)2) 90)Quiz)3) 85)Quiz)4) 91)Exam)1) 84)Exam)2) 78)

Page 32: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Assignment) Grade) Homework( 20%)HW)1) 84) Quizzes( 30%)HW)2) 77) Exams( 50%)HW)3) 92)HW)4) 93) Final&grade& 84.275)Quiz)1) 87) Pass/Fail& Fail)Quiz)2) 90)Quiz)3) 85)Quiz)4) 91)Exam)1) 84)Exam)2) 78)

Dependence Analysis

Page 33: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Dependence Analysis

Assignment) Grade) Homework( 20%)HW)1) 84) Quizzes( 30%)HW)2) 77) Exams( 50%)HW)3) 92)HW)4) 93) Final&grade& 84.275)Quiz)1) 87) Pass/Fail& Fail)Quiz)2) 90)Quiz)3) 85)Quiz)4) 91)Exam)1) 84)Exam)2) 78)

Page 34: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Dependence Analysis

Assignment) Grade) Homework( 20%)HW)1) 84) Quizzes( 30%)HW)2) 77) Exams( 50%)HW)3) 92)HW)4) 93) Final&grade& 84.275)Quiz)1) 87) Pass/Fail& Fail)Quiz)2) 90)Quiz)3) 85)Quiz)4) 91)Exam)1) 84)Exam)2) 78)

Page 35: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Dependence Analysis

Assignment) Grade) Homework( 20%)HW)1) 84) Quizzes( 30%)HW)2) 77) Exams( 50%)HW)3) 92)HW)4) 93) Final&grade& 84.275)Quiz)1) 87) Pass/Fail& Fail)Quiz)2) 90)Quiz)3) 85)Quiz)4) 91)Exam)1) 84)Exam)2) 78)

Page 36: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Statistical AnalysisAdaptation of Efron’s bootstrap method

(resampling)

84#77#92#93#

Page 37: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Statistical AnalysisAdaptation of Efron’s bootstrap method

(resampling)

84#77#92#93#

93#92#84#84#

Page 38: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Statistical AnalysisAdaptation of Efron’s bootstrap method

(resampling)

84#77#92#93#

93#92#84#84#

84#93#93#92#

Page 39: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Statistical AnalysisAdaptation of Efron’s bootstrap method

(resampling)

84#77#92#93#

93#92#84#84#

84#93#93#92#

93#93#92#93#

Page 40: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Statistical AnalysisAdaptation of Efron’s bootstrap method

(resampling)

84#77#92#93#

93#92#84#84#

84#93#93#92#

93#93#92#93#

84#93#84#92#

Page 41: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Statistical AnalysisAdaptation of Efron’s bootstrap method

(resampling)

84#77#92#93#

93#92#84#84#

84#93#93#92#

93#93#92#93#

84#93#84#92#

Page 42: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Statistical AnalysisAdaptation of Efron’s bootstrap method

(resampling)

84#77#92#93#

93#92#84#84#

84#93#93#92#

93#93#92#93#

84#93#84#92#

Can do statistical tests over single sample

Page 43: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Statistical AnalysisAdaptation of Efron’s bootstrap method

(resampling)

84#77#92#93#

93#92#84#84#

84#93#93#92#

93#93#92#93#

84#93#84#92#

Can do statistical tests over single sample Extends to non-numerical data

Page 44: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

84#77#92#93#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Fail#

Original#Values#

Page 45: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

84#77#92#93#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Fail#

Original#Values#

93#92#84#84#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Fail#

Page 46: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

84#77#92#93#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Fail#

Original#Values#

93#92#84#84#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Fail#

84#93#93#92#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Pass#

Page 47: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

84#93#93#92#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Pass#

93#93#92#93#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Pass#

Page 48: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

93#93#92#93#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Pass#

84#77#92#93#

85#87#85#90#

84#78#

HW## Quiz# Exam#

Fail#

Page 49: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

93#93#92#93#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Pass#

84#77#92#93#

85#87#85#90#

84#78#

HW## Quiz# Exam#

Fail#

84#77#92#93#

91#90#91#87#

84#78#

HW## Quiz# Exam#

Fail#

Page 50: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

84#77#92#93#

85#87#85#90#

84#78#

HW## Quiz# Exam#

Fail#

84#77#92#93#

91#90#91#87#

84#78#

HW## Quiz# Exam#

Fail#

84#77#92#93#

90#87#91#87#

84#78#

HW## Quiz# Exam#

Fail#

Page 51: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

84#77#92#93#

91#90#91#87#

84#78#

HW## Quiz# Exam#

Fail#

84#77#92#93#

90#87#91#87#

84#78#

HW## Quiz# Exam#

Fail#

84#77#92#93#

85#85#90#85#

84#78#

HW## Quiz# Exam#

Fail#

84#77#92#93#

85#85#90#85#

84#78#

HW## Quiz# Exam#

Fail#

Page 52: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

84#77#92#93#

85#85#90#85#

84#78#

HW## Quiz# Exam#

Fail#

84#77#92#93#

87#90#85#91#

78#78#

HW## Quiz# Exam#

Fail#

Page 53: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

84#77#92#93#

87#90#85#91#

78#78#

HW## Quiz# Exam#

Fail#

84#77#92#93#

87#90#85#91#

78#84#

HW## Quiz# Exam#

Fail#

Page 54: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

84#77#92#93#

87#90#85#91#

78#84#

HW## Quiz# Exam#

Fail#

84#77#92#93#

87#90#85#91#

84#84#

HW## Quiz# Exam#

Pass#

Page 55: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

84#77#92#93#

87#90#85#91#

78#84#

HW## Quiz# Exam#

Fail#

84#77#92#93#

87#90#85#91#

84#84#

HW## Quiz# Exam#

Pass#

84#77#92#93#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Fail#

Page 56: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Guided Bootstrap

84#77#92#93#

87#90#85#91#

84#84#

HW## Quiz# Exam#

Pass#

84#77#92#93#

87#90#85#91#

84#78#

HW## Quiz# Exam#

Fail#

84#77#92#93#

87#90#85#91#

84#84#

HW## Quiz# Exam#

Pass#

Page 57: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Outputs:Empirical Distribution

Page 58: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Condition on Presence/Absence of Values

Page 59: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Condition on Presence/Absence of Values

Page 60: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Input Unusual in Conditional Distribution?

input& score&0& 0&1& 1&2& 0&3& 0&

Page 61: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Marginalize Over Functions

input& score&0& 0&1& 1&2& 0&3& 0&

func%on' input' score'0' 0' 0'0' 1' 1'0' 2' 0'0' 3' 0'1' 0' 0'1' 1' 1'1' 2' 0'1' 3' 0'

+'='2'

Page 62: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Rank Results

func%on' input' score'0' 0' 0'0' 1' 1'0' 2' 0'0' 3' 0'1' 0' 0'1' 1' 1'1' 2' 0'1' 3' 0'

+'='2'

input& score&1& 2&0& 0&2& 0&3& 0&

most&unusual&

Page 63: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Rank Results

input& score&1& 2&0& 0&2& 0&3& 0&

most&unusual&

Page 64: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Empirical Evaluation

Page 65: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Challenges

Where do we find buggy spreadsheets?

Page 66: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Challenges

Where do we find buggy spreadsheets?

How do we know what’s correct?

Page 67: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Experimental Methodology

Page 68: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Experimental Methodology

~500 spreadsheets (EUSES)

Page 69: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Experimental Methodology

~500 spreadsheets (EUSES)

~ 900 Mechanical Turk workersretype data (presented as images)

Page 70: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Experimental Methodology

~ 900 Mechanical Turk workersretype data (presented as images)

Page 71: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

~ 900 Mechanical Turk workersretype data (presented as images)

Experimental Methodology

Generative modelof typographical errors

Page 72: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Experimental Methodology

Injected into ~70 randomly-chosenspreadsheets (5% error rate)

Generative modelof typographical errors

Page 73: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Experimental Methodology

Injected into ~70 randomly-chosenspreadsheets (5% error rate)

Generative modelof typographical errors

Originals = oracle (“correct”)

Page 74: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Experimental Methodology

Injected into ~70 randomly-chosenspreadsheets (5% error rate)

0"

0.1"

0.2"

0.3"

0.4"

0.5"

0.6"

0.7"

0.8"

0.9"

1"

0" 0.02" 0.04" 0.06" 0.08" 0.1" 0.12" 0.14" 0.16" 0.18"

%"Rem

aining"Error"

%"Expended"Effort"

CheckCell"Error"Elimina7on"Efficiency"

NAll"

Measure error elimination efficiency:Reduction in errors versus % cells inspected

Page 75: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

0"

0.1"

0.2"

0.3"

0.4"

0.5"

0.6"

0.7"

0.8"

0.9"

1"

0" 0.05" 0.1" 0.15" 0.2" 0.25" 0.3" 0.35" 0.4" 0.45"

%"Rem

aining"Error"

%"Expended"Effort"

CheckCell"Error"Elimina7on"Efficiency"

CC10"

Page 76: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

0"

0.1"

0.2"

0.3"

0.4"

0.5"

0.6"

0.7"

0.8"

0.9"

1"

0" 0.05" 0.1" 0.15" 0.2" 0.25" 0.3" 0.35" 0.4" 0.45"

%"Rem

aining"Error"

%"Expended"Effort"

CheckCell"Error"Elimina7on"Efficiency"

CC10"

Lower and further to left =more error reduced with less effort

Page 77: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Case Study

Reinhart-Rogoff spreadsheet

Page 78: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Case Study

Reinhart-Rogoff spreadsheet

Page 79: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Case Study

Page 80: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

Case Study

“This one extraordinary growth experience (Norway) contributes fully 5.3 percent (1/19) of the weight [...] even though it constitutes only 0.2 percent (1/445) of the country-years in this category.”— Herndon et al. (2013)

Page 81: CheckCell · 2018. 1. 4. · Most Popular Language: Java? publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world!");}}

CheckCell:Data Debugging for Spreadsheets

Dan Barowy, Dimitar Gochev, Emery Berger

checkcell.org

[OOPSLA 2014]