Files
obsidian-yanxin/documents/academic/presentations/splicing_comp600_2018.md
Yanxin Lu b85169f4e7 Archive 10 academic presentations from ~/Downloads/slides/ (2014-2018)
- PhD defense slides (defense.key, Nov 2018) → phd_defense/
- Master's defense on MOOC peer evaluation (Dec 2014)
- ENGI 600 data-driven program repair (Apr 2015)
- COMP 600 data-driven program completion (Fall 2015, Spring 2016)
- COMP 600 Program Splicing presentation + feedback + response (Spring 2018)
- Program Splicing slides in .key and .pdf formats (Spring 2018)

Each file has a .md transcription with academic frontmatter.
Skipped www2015.pdf (duplicate of existing www15.zip) and syncthing conflict copy.
2026-04-06 12:00:27 -07:00

1.8 KiB
Raw Permalink Blame History

category, type, person, date, source
category type person date source
academic academic Yanxin Lu 2018-05 splicing_comp600_2018.key

Program Splicing — COMP 600 Spring 2018 (Keynote)

Yanxin Lu, Swarat Chaudhuri, Christopher Jermaine, David Melski. Keynote presentation, Spring 2018.

Source Keynote file for the Program Splicing COMP 600 presentation. The PDF export is available as splicing_comp600_2018.pdf.

The presentation covers the same content as splicing_comp600_slides_2018.pdf but is a slightly revised version with subtitle "Data-driven Program Synthesis" on the title slide:

  1. Copying and Pasting problem — time consuming and introduces bugs
  2. Program Synthesis — automatically generating programs from specifications
  3. Problem — can we use program synthesis to improve copy-paste?
  4. Related work — Sketching (PLDI 2005), Code Transplantation (ISSTA 2015)
  5. Program Splicing approach — automate copying/pasting using 3.5M program corpus, ensure correctness
  6. Architecture — draft program → Synthesis ↔ PDB → completed program
  7. PDB — 3.5M Java programs, natural language features, similarity metrics, KNN search, fast top-k query
  8. Relevant programs — query PDB with draft program to find similar implementations
  9. Filling holes — enumerative search over candidate expressions from relevant programs
  10. Variable renaming — resolve undefined variables
  11. Testing — filter incorrect candidates via unit tests
  12. Heuristics — type and context-based pruning for search space reduction
  13. Benchmark — 12 programs, synthesis times 3161 seconds, efficient algorithm
  14. User study — 18 participants (12 grad students + 6 professionals), 4 problems, splicing most helpful for algorithmic tasks and tasks without standard solutions
  15. Conclusion — data-driven synthesis with large corpus, enumerative search, efficient algorithm, fast code reuse