About
I am a faculty member in the Computer Science Department at the Technion and CTO at Tabnine. My research focuses on the intersection of programming languages, machine learning, and software engineering, with a particular emphasis on program synthesis and learning from large-scale code repositories.
Research Interests
- Program Synthesis
- Machine Learning for Code
- Program Analysis
- Abstract Interpretation
- Verification
- Programming Languages
- Software Engineering
Selected Publications
-
ACL 2023 On the Expressivity Role of LayerNorm in Transformers' AttentionarXiv Code Video
-
FSE 2023 Towards AI-Driven Software Development: Challenges and Lessons from the Field (Keynote)Video
-
ICLR 2022 How Attentive are Graph Attention Networks?arXiv Code Video
-
ICLR 2021 On the Bottleneck of Graph Neural Networks and its Practical ImplicationsarXiv Video Code
-
ICML 2021 Thinking Like TransformersarXiv Video Blog Code
-
OOPSLA 2020 Programming with a Read-Eval-Synth LoopPaper Video
-
OOPSLA 2020 Adversarial Examples for Models of CodearXiv Code Video
-
OOPSLA 2020 Neural Edit CompletionarXiv
-
OOPSLA 2020 Neural Reverse Engineering of Stripped BinariesarXiv
-
ACL 2020 A Formal Hierarchy of RNN ArchitecturesarXiv
-
ICML 2020 Structural Language Models of CodearXiv Video
-
ICLR 2019 code2seq: Generating Sequences from Structured Representations of CodearXiv Demo
-
POPL 2019 code2vec: Learning Distributed Representations of CodearXiv Demo Video
-
NeurIPS 2019 Learning Deterministic Weighted Automata with Queries and CounterexamplesarXiv Code
-
ICML 2018 Extracting Automata from Recurrent Neural Networks Using Queries and CounterexamplesarXiv Video
-
ACL 2018 On the Practical Computational Power of Finite Precision RNNs for Language RecognitionarXiv Video
-
PLDI 2018 A General Path-Based Representation for Predicting Program PropertiesarXiv
-
ICSE 2018 Programming Not Only By ExamplearXiv
-
VMCAI 2018 Generating Tests by ExamplePDF
-
ASPLOS 2018 Statistical Reconstruction of Class Hierarchies in BinariesPaper
-
ASPLOS 2018 FirmUp: Precise Static Detection of Common Vulnerabilities in FirmwarePaper
-
PLDI 2017 Similarity of Binaries through Re-optimizationPaper
-
CAV 2017 Synthesis with Abstract ExamplesPaper
-
COLT 2017 Learning Disjunctions of PredicatesarXiv
-
WSDM 2017 Synthesis of Forgiving Data ExtractorsPaper
-
ONWARD 2016 Extracting Code from Programming Tutorial VideosPDF
-
ONWARD 2016 Leveraging a Corpus of Natural Language Descriptions for Program SimilarityPDF
-
KDD 2016 Lossless Separation of Web Pages into Layout Code and DataPDF
-
PLDI 2016 Statistical Similarity of BinariesPaper
-
POPL 2016 Estimating Types in Binaries using Predictive ModelingPaper
-
ICSE 2016 Cross-Supervised Synthesis of Web-CrawlersPDF
-
VMCAI 2016 D3: Data-Driven Disjunctive AbstractionPDF
-
OBT 2015 Code Similarity via Natural Language DescriptionsPDF
-
VMCAI 2015 Effective Abstractions for Verification under Relaxed Memory ModelsPaper
-
OOPSLA 2014 Abstract Semantic Differencing via Speculative CorrelationPaper
-
PLDI 2014 Tracelet-Based Code Search in ExecutablesPaper
-
PLDI 2014 Code Completion with Statistical Language ModelsPaper Video
-
PPOPP 2014 Practical Concurrent Binary Search Trees via Logical OrderingPDF
-
SAS 2014 Synthesis of Memory Fences via Refinement PropagationPaper
Selected Talks
Projects
Current
PRIME: Programming with Millions of Examples
Learning from large-scale public code repositories to enable intelligent code completion, search, and synthesis.
Past
Saint: Synthesis using Abstract Interpretation
Combining program synthesis with abstract interpretation for automatic program construction.
Fender
Preserving correctness under relaxed memory models through automatic fence inference.
Dojo
Ensuring determinism of concurrent systems through systematic testing and verification.
SAFE
Scalable verification techniques for heap-manipulating programs.
3VMC / TVLA
Shape analysis techniques for concurrent programs using three-valued logic.
QVM: The Quality Virtual Machine
Leveraging VM technology to improve software quality through integrated dynamic analyses.
Paraglide: Search-Based Synthesis of Concurrent Programs
Construction mechanisms and tools for building correct and efficient concurrent systems.
PET: Parallelism-Enabling Toolset
Tools for enabling and verifying parallelism in software systems.
Exploiting Social Navigation
Meital Ben-Sinai, Shir Yadid. Exploiting Social Navigation. (2014)
Software
Earlier Publications
-
SAS 2013 Automatic Synthesis of Deterministic ConcurrencyPDF
-
SAS 2013 Predicate Abstraction for Relaxed Memory ModelsPDF
-
SAS 2013 Abstract Semantic Differencing for Numerical ProgramsPDF
-
SAS 2013 Symbolic Automata for Specification MiningPDF
-
PLDI 2013 Concurrent Libraries with ForesightPDF
-
FMCAD 2015 Pattern-based Synthesis of Synchronization for the C++ Memory Model
-
PPoPP 2015 Automatic Scalable Atomicity via Semantic Locking
-
ISSTA 2014 Verifying Atomicity via Data Independence
-
PPoPP 2014 Automatic Semantic Locking
-
ISSTA 2013 Finding Rare Numerical Stability Errors in Concurrent Computations
-
OOPSLA 2012 Typestate-Based Semantic Code Search over Partial ProgramsPDF
-
PLDI 2012 Dynamic Synthesis for Relaxed Memory ModelsPDF
-
PLDI 2012 Scalable and Precise Dynamic Datarace Detection for Structured ParallelismPDF
-
SA-News 2012 FENDER: Fixing Fence PlacementPDF
-
OOPSLA 2011 Testing Atomicity of Composed Concurrent OperationsPDF
-
OOPSLA 2011 Automatic Fine-Grained Locking using Shape PropertiesPDF
-
OOPSLA 2011 Asynchronous AssertionsPDF
-
OOPSLA 2011 Automatic Prefetching by Traversal Profiling in Object Persistence ArchitecturesPDF
-
PLDI 2011 Partial-Coherence Abstractions for Relaxed Memory ModelsPDF
-
POPL 2010 Abstraction-Guided Synthesis of SynchronizationPDF
-
PODC 2010 Verifying Linearizability with HindsightPDF
-
SAS 2010 Checking Determinism of Concurrent SystemsPDF
-
RV 2010 Verifying Determinism of Concurrent Systems Best PaperPDF
-
FMCAD 2010 Automatic Fence Insertion for Relaxed Memory ModelsPDF
-
ISMM 2010 Chameleon: Adaptive Selection of CollectionsPDF
-
PLDI 2009 Testing, Workload Generation, and Checking for Atomicity ViolationsPDF
-
TACAS 2009 Abstraction-Guided Synthesis of SynchronizationPDF
-
SPIN 2009 Synthesis of Synchronization using AbstractionPDF
-
OOPSLA 2008 QVM: An Efficient Runtime for Detecting Defects in Deployed SystemsPDF
-
POPL 2008 Generating Precise and Concise Procedure SummariesPDF
-
PLDI 2008 Deriving Linearizable Fine-Grained Concurrent ObjectsPDF
-
ISMM 2008 The CLOSER: Automating Resource Management in JavaPDF
-
ISSTA 2008 Phalanx: Parallel Checking of Expressive Heap AssertionsPDF
-
ISSTA 2008 Verifying Dereference Safety via Expanding-Scope AnalysisPDF
-
TSE 2008 Effective Typestate Verification in the Presence of Aliasing ISSTA 2019 Retrospective Impact Paper AwardPDF
-
TOSEM 2008 Verifying Correct Usage of Atomic Blocks and TypestatePDF
-
ISSTA 2007 Static Specification Mining Using Automata-Based Abstractions Best Paper & Pat Goldberg AwardPDF
-
CAV 2007 Comparison under Abstraction for Verifying Linearizability
-
ICSE 2007 When Role Models Have Flaws: Static Validation of Enterprise Security Policies
-
ESOP 2007 Modular Shape Analysis for Dynamically Encapsulated Programs
-
SPIN 2007 Cartesian Partial-Order Reduction
-
PLDI 2007 CGCExplorer: A Semi-Automated Search Procedure for Provably Correct Concurrent CollectorsPDF
-
ISSTA 2006 SAFE: Scalable and Flexible Error Detection Best PaperPDF
-
PLDI 2006 Synthesis of Concurrent Garbage CollectorsPDF
-
PLDI 2006 Correctness-Preserving Derivation of Concurrent Garbage Collection Algorithms
-
SAS 2005 Interprocedural Shape Analysis for Cutpoint-Free Programs
-
VMCAI 2005 Predicate Abstraction and Canonical Abstraction for Singly-Linked Lists
-
PLDI 2004 Verifying Safety Properties Using Separation and Heterogeneous Abstractions
-
ESOP 2003 Verifying Temporal Heap Properties Specified via Evolution LogicPDF
-
SAS 2003 Establishing Local Temporal Heap Safety Properties with Applications to Compile-Time Memory Management
-
SAS 2003 Typestate Verification: Abstraction Techniques and Complexity Results
-
ESOP 2003 Verification of Concurrent Programs with Future ValuesPDF
-
SOFTMC 2003 Temporal Verification of Concurrent ProgramsPDF
-
POPL 2001 Verifying Safety Properties of Concurrent Heap-Manipulating ProgramsPDF
-
COOTS 1996 Compiler Optimization of C++ Virtual Function Calls
Teaching
- 236360 Theory of Compilation
- 236610 Advanced Program Analysis
- Seminar Program Synthesis
- Seminar Reliable and Secure Software Systems
- Project Software Projects in PL and Verification
Students
Current Students
- Tom Rahav
- Ido Ram
Past Students
-
Google DeepMindPhD · Machine Learning for Programming Language Processing · Reynolds Doctoral Dissertation Award
-
Shaked BrodyPhD · Graph Neural Networks
-
Noam YefetMSc · Adversarial Examples for Models of Code
-
Postdoc, EPFLPhD · RNNs and Formal Languages
-
Faculty, TechnionPhD · Binary Similarity
-
PhD · Program Analysis
-
Faculty, TechnionPhD · Program Synthesis
-
Faculty, Tel-Aviv UniversityPhD 2012 · Programming with Millions of Examples
-
WaymoMichael KupersteinPhD 2012 · Memory Model Correctness (with Martin Vechev)
-
AWSPhD 2011 · Concurrent Operation Atomicity (with Mooly Sagiv)
-
Alon MishneMSc 2012 · Programming with Millions of Examples
-
VP AI, CYEPhD · Abstract Semantic Differencing
-
Faculty, Technion EEPhD · Exact Programming by Example
-
PhD · Relaxed Memory Models
-
SalesforceAdi OmariPhD · Web Data Extraction
-
MSc 2014 · Automatic Synchronization (with Mooly Sagiv)
-
Lecturer, King's College LondonKarine Even-MendozaMSc 2013 · Numerical Stability in Concurrent Computations
-
ML Team Lead, TaboolaMSc 2016 · Extracting Code from Tutorial Videos
-
TabnineMSc 2016 · Program Similarity via NL Descriptions
Summer Interns & Visitors
- Martin Vechev (Cambridge)
- Greta Yorsh (TAU)
- Noam Rinetzky (TAU)
- Isil Dillig (Stanford)
- Thomas Dillig (Stanford)
- Raghavan Raman (Rice)
- Nayden Nedev (Sofia)
- Nedyalko Prisadnikov (Sofia)
Professional Service
Program Committee
- POPL '11, '13, '15, '17, '20
- PLDI '12, '13, '14, '15, '16, '17, '19
- CAV '13, '14, '15, '16, '17, '18, '19
- OOPSLA '10, '13, '15
- VMCAI '12, '13, '14, '18
- SAS '09, '12, '14
- ESOP '13
- APLAS '12, '15
- SNAPL '15
- ICML '18
- COLT '17
- WSDM '17
Conference Organization
- PLDI '21 Program Chair
- SAS '11 Program Chair
- HVC '14 Program Chair
- Dagstuhl Seminar on Software Synthesis (Co-organizer)
Workshop Organization
- PSY '10, '11, '12
- LFX 2010: Learning From eXperience
Awards & Honors
-
ACM SIGPLAN 2020 · For outstanding contributions to programming languages research
-
European Research Council
-
Alon Fellowship for Outstanding Young ResearchersIsrael Council for Higher Education
-
Andre Deloro Career Advancement Chair in EngineeringTechnion
-
Best Paper AwardISSTA 2007 · Also received Pat Goldberg Memorial Best Paper Award
-
Best Paper AwardISSTA 2006
-
Best Paper AwardRV 2010 · Checking and Verifying Determinism