Programming by Example: Efficient, but Not "Helpful"

Authors Mark Santolucito, Drew Goldman, Allyson Weseley, Ruzica Piskac

Thumbnail PDF


  • Filesize: 341 kB
  • 10 pages

Document Identifiers

Author Details

Mark Santolucito
  • Yale University, USA
Drew Goldman
  • Roslyn High School, USA
Allyson Weseley
  • Roslyn High School, USA
Ruzica Piskac
  • Yale University, USA

Cite AsGet BibTex

Mark Santolucito, Drew Goldman, Allyson Weseley, and Ruzica Piskac. Programming by Example: Efficient, but Not "Helpful". In 9th Workshop on Evaluation and Usability of Programming Languages and Tools (PLATEAU 2018). Open Access Series in Informatics (OASIcs), Volume 67, pp. 3:1-3:10, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2019)


Programming by example (PBE) is a powerful programming paradigm based on example driven synthesis. Users can provide examples, and a tool automatically constructs a program that satisfies the examples. To investigate the impact of PBE on real-world users, we built a study around StriSynth, a tool for shell scripting by example, and recruited 27 working IT professionals to participate. In our study we asked the users to complete three tasks with StriSynth, and the same three tasks with PowerShell, a traditional scripting language. We found that, although our participants completed the tasks more quickly with StriSynth, they reported that they believed PowerShell to be a more helpful tool.

Subject Classification

ACM Subject Classification
  • Software and its engineering → Programming by example
  • user study
  • scripting
  • programming by example


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Flash Fill (Microsoft Excel 2013 feature). URL:
  2. Stack Overflow: Auto increment a variable in regex. Accessed: 2015-03-25.
  3. Stack Overflow: What is the most difficult/challenging regular expression you have ever written? Accessed: 2015-03-24.
  4. Super User: How to batch combine jpeg’s from folders into pdf’s? Accessed: 2015-05-13.
  5. Sebastian Burckhardt, Manuel Fähndrich, Peli de Halleux, Sean McDirmid, Michal Moskal, Nikolai Tillmann, and Jun Kato. It’s alive! Continuous feedback in UI programming. In PLDI, 2013. URL:
  6. A. Cypher and D.C. Halbert. Watch what I Do: Programming by Demonstration. MIT Press, 1993. Google Scholar
  7. John Feser, Swarat Chaudhuri, and Isil Dillig. Synthesizing Data Structure Transformations from Input-Output Examples. In PLDI, 2015. Google Scholar
  8. Joel Galenson, Philip Reames, Rastislav Bodík, Björn Hartmann, and Koushik Sen. CodeHint: dynamic and interactive synthesis of code snippets. In ICSE, 2014. URL:
  9. Sumit Gulwani. Automating string processing in spreadsheets using input-output examples. In POPL, 2011. URL:
  10. Sumit Gulwani. Synthesis from Examples. WAMBSE (Workshop on Advances in Model-Based Software Engineering) Special Issue, Infosys Labs Briefings, 10(2), 2012. Invited talk paper. Google Scholar
  11. Sumit Gulwani. Synthesis from Examples: Interaction Models and Algorithms. In SYNASC, 2012. URL:
  12. Sumit Gulwani, William R. Harris, and Rishabh Singh. Spreadsheet data manipulation using examples. Commun. ACM, 55(8), 2012. URL:
  13. Sumit Gulwani, Mikael Mayer, Filip Niksic, and Ruzica Piskac. StriSynth: Synthesis for Live Programming. In ICSE, 2015. Google Scholar
  14. Tihomir Gvero, Viktor Kuncak, Ivan Kuraj, and Ruzica Piskac. Complete completion using types and weights. In PLDI, 2013. URL:
  15. Tihomir Gvero, Viktor Kuncak, and Ruzica Piskac. Interactive Synthesis of Code Snippets. In CAV, 2011. URL:
  16. Reiner Hähnle and Marieke Huisman. 24 Challenges in Deductive Software Verification. In Giles Reger and Dmitriy Traytel, editors, ARCADE 2017. 1st International Workshop on Automated Reasoning: Challenges, Applications, Directions, Exemplary Achievements, volume 51 of EPiC Series in Computing. EasyChair, 2017. URL:
  17. Sean Kandel, Andreas Paepcke, Joseph M. Hellerstein, and Jeffrey Heer. Wrangler: interactive visual specification of data transformation scripts. In CHI, 2011. URL:
  18. Viktor Kuncak, Mikaël Mayer, Ruzica Piskac, and Philippe Suter. Comfusy: A Tool for Complete Functional Synthesis. In CAV, 2010. URL:
  19. Viktor Kuncak, Mikaël Mayer, Ruzica Piskac, and Philippe Suter. Complete functional synthesis. In PLDI, 2010. URL:
  20. Viktor Kuncak, Mikaël Mayer, Ruzica Piskac, and Philippe Suter. Software synthesis procedures. Commun. ACM, 55(2), 2012. URL:
  21. Tessa Lau. Why Programming-By-Demonstration Systems Fail: Lessons Learned for Usable AI. AI Magazine, 30(4), 2009. URL:
  22. Tessa A. Lau, Pedro Domingos, and Daniel S. Weld. Learning programs from traces using version space algebra. In K-CAP, 2003. URL:
  23. H. Lieberman. Your Wish Is My Command: Programming by Example. Morgan Kaufmann, 2001. Google Scholar
  24. Karl Mazurak and Steve Zdancewic. ABash: Finding bugs in bash scripts. In In ACM SIGPLAN Workshop on Programming Languages and Analysis for Security (PLAS), 2007. Google Scholar
  25. Robert C. Miller and Brad A. Myers. Interactive Simultaneous Editing of Multiple Text Regions. In USENIX, 2001. URL:
  26. Peter-Michael Osera and Steve Zdancewic. Type-and-example-directed program synthesis. In PLDI, 2015. Google Scholar
  27. Christopher Scaffidi, Brad A. Myers, and Mary Shaw. Topes: reusable abstractions for validating data. In ICSE, 2008. URL:
  28. Rishabh Singh and Sumit Gulwani. Learning Semantic String Transformations from Examples. PVLDB, 5(8), 2012. URL:
  29. Armando Solar-Lezama. Program Synthesis by Sketching. PhD thesis, UC Berkeley, 2008. Google Scholar
  30. Ronald E Walpole, Raymond H Myers, Sharon L Myers, and Keying Ye. Probability and statistics for engineers and scientists, volume 5. Macmillan New York, 1993. Google Scholar
  31. Yi Wei, Youssef Hamadi, Sumit Gulwani, and Mukund Raghothaman. C#code snippets on-demand, 2014. URL: