January 9, 2014. To Whom It May Concern:



Similar documents
UFO: Verification with Interpolants and Abstract Interpretation

InvGen: An Efficient Invariant Generator

Invited Conference Talk (20m), A Comparison of Heuristics for Solving Problems in Approximate

June Zhang (Zhong-Ju Zhang)

Masters, Computer Science [Sept Jan. 2009]

Curriculum Vitae. Shan Shan Huang

Curriculum Vitae of Thomas Wies

Software Verification: Infinite-State Model Checking and Static Program

Automated Theorem Proving - summary of lecture 1

COMPUTER SCIENCE. FACULTY: Jennifer Bowen, Chair Denise Byrnes, Associate Chair Sofia Visa

SIUE Mass Communications Graduate Program Guide & Handbook. Designed To Educate & Assist Our Prospective & Current Masters Candidates

Igniting young minds through computer programming

Course Development of Programming for General-Purpose Multicore Processors

Executive Summary Principles and Standards for School Mathematics

RÉSUMÉS & COVER LETTERS Examples

Electronic Portfolios in Evolution

Resume of Hanan H. Elazhary

How To Build A Provably Secure Execution Platform For Embedded Systems

Fashion Design Undergraduate Program

Writing in the Computer Science Major

Please consult the Department of Engineering about the Computer Engineering Emphasis.

Towards practical reactive security audit using extended static checkers 1

SCAD Summer Seminars. Session Dates

Emmanouil Papangelis (Manos Papagelis)

University Of Alaska Anchorage College Of Health Department Of Human Services. Criteria and Guidelines For Faculty Evaluation

Graduate Program Policies and Procedures

Using In-Memory Computing to Simplify Big Data Analytics

PH.D. IN BUSINESS ADMINISTRATION

Curriculum Vitae KEY QUALIFICATIONS AND EXPERIENCES: Name: Nadeem Hashem, PhD, MSc, BEng.

Centre for Entrepreneurship. Master of Science in. Innovation and. graduate

Data Model Bugs. Ivan Bocić and Tevfik Bultan

NSERC Alexander Graham Bell Canada Graduate Scholarship, Funding from the Canadian federal government to support graduate studies.

Graduate Studies COMPUTER SCIENCE

Curriculum Vitae Michael M. Zavlanos

CHAPTER 1 INTRODUCTION

Introduction to Static Analysis for Assurance

Model Checking: An Introduction

Masters Program in Political Science:

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

Master's Degree Program in Computer Science

BHARATENDU SRIVASTAVA

!"#$%&'()"*"++%(*,%-")+.*(#%/"0"#.12"*3

Masters in Human Computer Interaction

M ARCH INFORMATION FOR GRADUATE SCHOOL APPLICANTS TRACK 1 TRACK 2 TRACK 3 WASHINGTON STATE UNIVERSITY THE MASTER OF ARCHITECTURE GRADUATE HANDBOOK

UML-based Test Generation and Execution

The Accelerated Master s Degree in Psychology

Graduate Program Policies and Procedures

Cost Model: Work, Span and Parallelism. 1 The RAM model for sequential computation:

Online Computer Science Degree Programs. Bachelor s and Associate s Degree Programs for Computer Science

Static Program Transformations for Efficient Software Model Checking

Machine Learning Department, School of Computer Science, Carnegie Mellon University, PA

Masters in Computing and Information Technology

ANUJA GUPTA Assistant Professor Tel: (856) July 2014

ONLINE EXERCISE SYSTEM A Web-Based Tool for Administration and Automatic Correction of Exercises

Masters in Networks and Distributed Systems

CURRICULUM VITAE Herbert L. Dershem

The Course.

Bob Boothe. Education. Research Interests. Teaching Experience

EXECUTIVE MBA INTERNATIONAL PROGRAM PART TIME IN COOPERATION WITH ESCP-EAP EUROPEAN SCHOOL OF MANAGEMENT

Strategic Plan

Careers in Biostatistics and Clinical SAS Programming An Overview for the Uninitiated Justina M. Flavin, Independent Consultant, San Diego, CA

Conceptual Framework for the Master of Arts in Teaching at Earlham College:

THE RTOS AS THE ENGINE POWERING THE INTERNET OF THINGS

Teaching and Learning Strategy for UCL Computer Science. Stage 1: the narrative or vision

MASTER OF SCIENCE IN HEALTH SCIENCE EDUCATION PROGRAM INFORMATION & ADMISSION REQUIRMENTS

Virtualization of the MS Exchange Server Environment

The Society of Architectural Historians Guidelines for the Promotion and Tenure of Architectural Historians

Static Analysis of Dynamic Properties - Automatic Program Verification to Prove the Absence of Dynamic Runtime Errors

Curriculum Vitae. Education Nanjing University, International Business School, Nanjing, P. R.China Bachelor of Arts in Economics, July 1994

CURRICULUM VITAE. Leigh MacDonald. Phone: ext Fax:

Regression Verification: Status Report

University of Dayton Department of Computer Science Undergraduate Programs Assessment Plan DRAFT September 14, 2011

REQUIREMENTS FOR THE MASTER THESIS IN INNOVATION AND TECHNOLOGY MANAGEMENT PROGRAM

Code Review Best Practices. With Adam Kolawa, Ph.D.

EMC Technology Trends

Applications of formal verification for secure Cloud environments at CEA LIST

INNOVATION WITH IMPACT. Creating a Culture for Scholarly and Systematic Innovation in Engineering Education

Traceability Patterns: An Approach to Requirement-Component Traceability in Agile Software Development

FPGA area allocation for parallel C applications

Transcription:

Aws Albarghouthi Department of Computer Science University of Toronto 3302-10 King s College Road Toronto, ON M5S 3G4 Canada Tel: +1 416 893 7317 Email: aws@cs.toronto.edu January 9, 2014 To Whom It May Concern: I am on the job market for a tenure-track faculty position in Computer Science. I am currently a PhD candidate in the Department of Computer Science at the University of Toronto, and I plan to complete my studies in the spring of 2014. My expertise covers a range of areas in formal methods, programming languages, and software engineering. I am mainly interested in ensuring correctness, reliability, and security of software systems. Specifically, my research contributes automated formal techniques for proving software correctness, discovering bugs, and synthesizing correct software. My curriculum vitae (incl. list of references), research statement, and teaching statement are enclosed. My application materials, including representative publications, are also available at www.cs.toronto.edu/~aws/app. Please inform me if you require any additional information. The best way to contact me is through email at aws@cs.toronto.edu, or by phone at +1 416 893-7317. Thank you for your time and consideration. Sincerely, Aws Albarghouthi

Aws Albarghouthi Address: DCS, University of Toronto 3302-10 King s College Road Toronto, Ontario, Canada M5S 3G4 Phone: +1 416 893 7317 E-mail: aws@cs.toronto.edu Web: www.cs.toronto.edu/~aws Research Interests My expertise covers a range of areas in formal methods, programming languages, and software engineering. I am mainly interested in ensuring correctness, reliability, and security of software systems. Specifically, my research contributes automated formal techniques and tools for proving software correctness, discovering bugs, and synthesizing correct software. Moreover, my research has addressed important problems in automated theorem proving and SMT solving. Education University of Toronto, Toronto, ON, Canada PhD, Computer Science Advisor: Marsha Chechik Thesis Title: Interpolation-Based Software Verification Feb 2010 - May 2014 (Expected) University of Toronto, Toronto, ON, Canada Sept 2008 - Jan 2010 MSc, Computer Science Advisor: Marsha Chechik GPA: 4.0 / 4.0 Thesis: Abstract Analysis via Symbolic Executions McMaster University, Hamilton, ON, Canada Sept 2004 - Apr 2008 BEng, Software Engineering GPA: 3.9 / 4.0 Refereed Conference and Workshop Papers Yi Li, Aws Albarghouthi, Zachary Kincaid, Arie Gurfinkel, and Marsha Chechik. Symbolic Optimization with SMT Solvers. In Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), San Diego, CA, USA, January 2014 (to appear). Aws Albarghouthi and Kenneth McMillan. Beautiful Interpolants. In Proceedings of the 25th International Conference on Computer Aided Verification (CAV), Lecture Notes in Computer Science, volume 8044: 313-329, Saint Petersburg, Russia, July 2013. Aws Albarghouthi, Sumit Gulwani, and Zachary Kincaid. Recursive Program Synthesis. In Proceedings of the 25th International Conference on Computer Aided Verification (CAV), Lecture Notes in Computer Science, volume 8044: 934-950, Saint Petersburg, Russia, July 2013. Aws Albarghouthi, Arie Gurfinkel, Yi Li, Sagar Chaki, and Marsha Chechik. Ufo: Verification with Interpolants and Abstract Interpretation. In Proceedings of the 19th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS), Lecture Notes in Computer Science, volume 7795: 673-640, Rome, Italy, March 2013. International Competition on Software Verification (SV-COMP 2013) Contribution. Winner of 4 gold medals and 1 bronze medal (see Awards and Scholarships section).

Aws Albarghouthi Curriculum Vitae 2 Aws Albarghouthi, Arie Gurfinkel, and Marsha Chechik. Craig Interpretation. In Proceedings of the 19th International Static Analysis Symposium (SAS), Lecture Notes in Computer Science, volume 7460: 300-316, Deauville, France, September 2012. Aws Albarghouthi, Yi Li, Arie Gurfinkel, and Marsha Chechik. Ufo: A Framework for Abstractionand Interpolation-Based Software Verification. In Proceedings of the 24th International Conference on Computer Aided Verification (CAV), Lecture Notes in Computer Science, volume 7358: 672-678, Berkeley, CA, USA, July 2012. Aws Albarghouthi, Rahul Kumar, Aditya Nori, and Sriram Rajamani. Parallelizing Top-down Interprocedural Analyses. In Proceedings of the 33rd ACM SIGPLAN Conference on Programming Languages Design and Implementation (PLDI), SIGPLAN Notices, volume 47,6: 217-228, Beijing, China, June 2012. Aws Albarghouthi, Arie Gurfinkel, and Marsha Chechik. From Under-approximations to Overapproximations and Back. In Proceedings of the 18th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS), Lecture Notes in Computer Science, volume 7214: 157-172, Tallinn, Estonia, March 2012. Aws Albarghouthi, Arie Gurfinkel, and Marsha Chechik. Whale: An Interpolation-based Algorithm for Inter-procedural Verification. In Proceedings of the 13th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI), Lecture Notes in Computer Science, volume 7148: 39-55, Philadelphia, US, January 2012. Aws Albarghouthi, Arie Gurfinkel, Ou Wei, and Marsha Chechik. Abstract Analysis of Symbolic Executions. In Proceedings of the 22nd International Conference on Computer Aided Verification (CAV), Lecture Notes in Computer Science, volume 6174: 495-510, Edinburgh, UK, July 2010. Aws Albarghouthi, Jorge Baier, and Sheila McIlraith. On the Use of Planning Technology for Verification. In Proceedings of Verification and Validation of Planning and Scheduling Systems Workshop (VVPS), Thessaloniki, Greece, September 2009. Papers in Submission/Progress Aws Albarghouthi, Josh Berdine, Byron Cook, and Zachary Kincaid. Spatial Interpolants. Submitted. Aws Albarghouthi, Isil Dillig, and Arie Gurfinkel. Specification Synthesis with Multi-Abduction. In progress. Awards and Scholarships Winner of 4 Gold Medals and 1 Bronze Medal 2013 International Competition on Software Verification (SV-COMP) My automated verification tool, Ufo, won the first place in 4 (out of 10) verification categories (tracks), the largest number of gold medals amongst the eleven participating tools. Categories won: (1) Linux Device Drivers, (2) Control Flow and Integers, (3) Product Lines, and (4) SystemC. Alexander Graham Bell Canada Graduate Scholarship Sept 2010 - Aug 2013 National Award (NSERC CGS D), Value: 35,000$/year for 3 years Ontario Graduate Scholarship (OGS) Sept 2008 - Aug 2010 Provincial Award, Value: 15,000$/year for 2 years Ontario Graduate Scholarship in Science and Technology Sept 2008 - Aug 2009 University of Waterloo, Value: 10,000$, Declined for OGS (see above).

Aws Albarghouthi Curriculum Vitae 3 The Dr. Harry Lyman Hooker Scholarship Sept 2007 - Apr 2008 McMaster University, Value: 1,500$ NSERC Undergraduate Student Research Award May 2007 - Aug 2007 McMaster University, Value: 4,500$ The Motorola Software Engineering Scholarship Sept 2006 - Apr 2007 McMaster University, Value: 1,500$ Member of Golden Key International Honor Society Sept 2006 - Apr 2008 McMaster University, Top 15% in faculty Nortel Networks Scholarship in Information Technology Sept 2005 - Apr 2006 McMaster University, Value: 1,000$ Professional Experience Research Intern March 2013 - May 2013 Microsoft Research Cambridge, Cambridge, UK Worked with Byron Cook and Josh Berdine, of the Programming Principles and Tools (PPT) group, on lazy and precise algorithms for verifying heap-manipulating programs using separation logic and interpolation. Research Intern June 2012 - Sept 2012 Microsoft Research Redmond, Redmond, WA, USA Worked with Kenneth McMillan, of the Research in Software Engineering (RiSE) group, on developing new Craig interpolation algorithms with simplicity and generality in mind. Research Intern April 2011 - July 2011 Microsoft Research India, Bangalore, India Worked with Aditya Nori and Sriram Rajamani, of the Programming Languages and Tools (PLATO) group, on developing a framework for parallelizing a large class of interprocedural analysis algorithms, particularly for verification and testing. Undergraduate Researcher May 2007 - Aug 2007 Department of Computing and Software, McMaster University Worked with Wolfram Kahl on developing and documenting different parts of the Relation-Algebraic Tools for Haskell (RATH) libraries. Undergraduate Researcher Apr 2006 - Aug 2006 Department of Computing and Software, McMaster University Worked with Wolfram Kahl and Christopher Anand on porting the open source Fast Fourier Transform library FFTW to the Cell Processor. Talks From Bounded to Unbounded Proofs of Correctness Georgia Institute of Technology, Atlanta, GA, USA, November 2013. Microsoft Research Cambridge, Cambridge, UK, April 2013. Software Verification with DAG Interpolants Imperial College London London, UK, September 2013. Beautiful Interpolants International Conference on Computer Aided Verification (CAV) St. Petersburg, Russia, July 2013.

Aws Albarghouthi Curriculum Vitae 4 Recursive Program Synthesis International Conference on Computer Aided Verification (CAV) St. Petersburg, Russia, July 2013. DAG Interpolation for Software Verification Workshop on Interpolation: From Proofs to Applications (IPrA, at CAV) St. Petersburg, Russia, July 2013. From SMT Solvers to Verifiers High Confidence Software and Systems Conference (HCSS) Annapolis, MD, USA, May 2013. Battling the Infinite: Proving Safety of Programs University College London, London, UK, March 2013. Technische Universität München, Munich, Germany, March 2013. Craig Interpretation Microsoft Research Cambridge, Cambridge, UK, September 2012. International Static Analysis Symposium (SAS), Deauville, France, September 2012. Beautiful Proofs Microsoft Research Redmond Redmond, WA, USA, September 2012. Ufo: A Framework for Abstraction- and Interpolation-Based Software Verification International Conference on Computer Aided Verification (CAV) Berkeley, CA, USA, July 2012. Parallelizing Top-down Interprocedural Analyses ACM SIGPLAN Conference on Programming Languages Design and Implementation (PLDI) Beijing, China, June 2012. From Under-approximations to Over-approximations and Back International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS) Tallinn, Estonia, March 2012. The Rise of the Interpolants Student Session at ACM SIGPLAN Symposium on Principles of Programming Languages (POPL) Philadelphia, PA, USA, January 2012. Whale: An Interpolation-based Algorithm for Inter-procedural Verification International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI) Philadelphia, PA, USA, January 2012. Abstract Analysis of Symbolic Executions International Conference on Computer Aided Verification (CAV) Edinburgh, UK, July 2010. On the Use of Planning Technology for Verification Verification and Validation of Planning and Scheduling Systems Workshop (VVPS, at ICAPS) Thessaloniki, Greece, September 2009. Teaching Experience Teaching Assistantships Department of Computer Science, University of Toronto Introduction to Computer Programming Sept 2010 - Dec 2010 Introduction to Software Engineering Sept 2009 - Dec 2009 Data Structures and Algorithms Jan 2009 - Apr 2009

Aws Albarghouthi Curriculum Vitae 5 Software Design Sept 2008 - Dec 2008 Faculty of Engineering, McMaster University Engineering Computation Sept 2006 - Dec 2006 & Sept 2007 - Apr 2008 Professional Activities Program Committee Member: International Competition on Software Verification (SV-COMP 2014). Conference and Workshop Reviewing: International Conference on Computer Aided Verification (CAV 2013), International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2013), ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE 2013), International Symposium on the Foundations of Software Engineering (FSE 2012), International Symposium on Formal Methods (FM 2012), Asian Symposium on Programming Languages and Systems (APLAS 2012), International Symposium on Automated Technology for Verification and Analysis (ATVA 2012), International Conference on Fundamental Approaches to Software Engineering (FASE 2012), International Conference on Verification, Model checking, and Abstract Interpretation (VMCAI 2011), International Symposium on Software Testing and Analysis (ISSTA 2011), International Conference on Software Engineering (ICSE 2010), International Conference on Automated Software Engineering (ASE 2010). Student Volunteer: Federated Logic Conference (FLoC 2010), International Symposium on Software Testing and Analysis (ISSTA 2011). Student Participant: Marktoberdorf Summer School on Software and Systems Safety, Marktoberdorf, Germany, August 2010. Software Ufo: An award-winning, LLVM-based tool and framework for automated verification of C programs. Ufo is an efficient and modular implementation of the interpolation-based verification algorithms I have developed as part of my PhD work. Webpage and repository: bitbucket.org/arieg/ufo. Symba: One of the first optimizing SMT solvers for objective functions in rational arithmetic. Webpage and repository: bitbucket.org/arieg/ufo/src/popl14. Escher: An interactive and extensible recursive program synthesizer. Given input-output examples, Escher uses novel algorithms to synthesize recursive functions implementing intended functionality, with the goal of enabling end-user programming. Yogi Project: Developed a parallel interprocedural version of Yogi, a verification tool that combines static analysis and testing. Contribution as part of an internship at Microsoft Research India. Webpage: research.microsoft.com/en-us/projects/yogi. T2: Developed a novel heap interpolation engine in the T2 verification tool, and extended T2 to reason about heap and data. Contribution as part of an internship at Microsoft Research Cambridge. Webpage: research.microsoft.com/en-us/projects/t2. Citizenship Canada

Aws Albarghouthi Curriculum Vitae 6 References Marsha Chechik Kenneth McMillan Professor & Vice Chair Principal Researcher Dept. of Computer Science Microsoft Research University of Toronto One Microsoft Way 40 St. George Street Redmond, WA 98052-6399 Toronto, ON M5S 2E4 USA Canada E-mail: kenmcmil@microsoft.com E-mail: chechik@cs.toronto.edu Byron Cook Peter O Hearn Principal Researcher & Professor Professor Microsoft Research & University College London Computer Science Dept. 21 Station Road University College London Cambridge, CB1 2FB Gower Street United Kingdom London WC1E 6BT E-mail: bycook@microsoft.com United Kingdom E-mail: p.ohearn@ucl.ac.uk

Aws Albarghouthi Research Statement Picture a world where you can ask questions about a piece of code and have tools that automatically and efficiently answer them for you. Can a division by zero ever occur? Are all elements in this list always greater than ten? Does this program always terminate? Are there any race conditions? In such a world, software is considerably more reliable and secure than what we currently have; software has fewer bugs and is easily certifiable like other engineering artifacts; software-induced disasters are effortlessly avoided; and the billions of dollars that are normally spent on testing and maintenance activities are instead poured into more productive endeavours. Moreover, the software creator has a much closer and more interactive relationship with her creation: by being able to ask questions and have automated tools answer them, she can glean deep insights into her complex creation. The positive effects of these tools, in the said world, can transcend professional software development. For instance, these tools can impact compilers, which can ask deep questions about programs and as a result apply aggressive optimizations; and students learning programming, who can have a richer and more disciplined interaction with programs than the run it and see what happens one. Alas, such a world is an imaginary utopia, as the majority of these verification questions translate into undecidable problems (due to their relation to the halting problem). Nevertheless, we can still try to design algorithms that answer some questions about programs most of the time, and this is precisely how I spend most of my time: expanding the frontiers and possibilities of automated software verification, making verification technology more efficient, scalable, and applicable, edging us closer to this utopia of software reliability. Drawing inspiration from the formal methods, programming languages, and software engineering fields, I introduced new verification algorithms (static analyses) for proving desirable properties of programs (e.g., no assertions are violated) and discovering buggy executions that invalidate a given correctness property. My work on verification algorithms (1) dramatically boosted the performance of verification technology and (2) expanded the range of verifiable classes of programs. In order to achieve these results, I developed deep logical reasoning techniques, based on Craig interpolation, to analyze programs symbolically and construct proofs of correctness. Armed with the theory and algorithms I developed, I built an automated verification system, Ufo, that proved correctness of (and found bugs in) a large range of programs, including embedded pacemaker code and Linux device drivers. Ufo recently won the largest number of gold medals in the International Competition on Software Verification (SV-COMP 2013), as discussed in further detail below. Furthermore, my research has addressed a number of important limitations in SMT solvers, which are groundbreaking theorem provers that are used extensively in verification, programming languages, and software engineering research. In what follows, I first provide a detailed exposition of some of my research contributions, and then outline my future research agenda. Research Contributions Verification Algorithms. For part of my PhD work, I developed a family of automated verification algorithms [1, 3, 4, 5, 6] that adopt what I call the small fragment hypothesis: by proving non-existence of bugs within a small yet representative fragment of the program, we can generalize the proof to the whole program. A central theme underlying my verification techniques is the use of Craig interpolants, fundamental logical constructs for first-order logic that are utilized to generalize proofs of simple problem instances. Specifically, one of my main research insights is DAG interpolation, a new form of Craig interpolation that allows efficient construction of correctness proofs by symbolically and simultaneously proving a large number of program executions represented as a graph. This is in contrast to previous verification techniques [12], which examined a single execution at a time. My work on DAG interpolation dramatically boosted the efficiency of interpolation-based verification and inspired techniques for verifying new I acknowledge the invaluable contributions of my co-authors to the research I describe in this document.

Aws Albarghouthi Research Statement 2 classes of programs, for example, recursive and concurrent programs. One of the main advantages of my proposed algorithms is their generic nature. First, they target safety properties, which encompass a wide range of desirable correctness criteria (e.g., no assertions are violated, memory safety, secure information flow, etc.) and form the basis of other important classes of properties like termination. Second, since my techniques are logic-based, future advances in theorem proving make them directly applicable to new classes of programs and properties. At a technical level, my work (1) introduced the concept of DAG interpolants [4] and showed how to enhance interpolation with abstract interpretation-style static analyses [3]; (2) introduced a novel interpolationbased algorithm for recursive (as well as concurrent) program verification, demonstrating how interpolants can be used to efficiently construct modular interprocedural proofs [5]; and (3) showed how to marry interpolation technology with separation logic for reasoning about intricate data structure manipulation [1]. Automated Verification Tools. My research philosophy strongly emphasizes the importance of supplementing theoretical and algorithmic development with building scalable and efficient tools for verifying real world code. To that end, my research on interpolation-based verification algorithms has culminated in Ufo [8], an open source software verifier for C programs. I have used Ufo to verify and find bugs in a wide range of large programs, including Linux device drivers, Windows device drivers, and embedded pacemaker code. In the 2013 International Competition on Software Verification (SV-COMP) [10], Ufo won four gold medals. This was the largest number of gold medals won by any of the eleven competing software verifiers. Notably, Ufo won in the Linux device driver and the Windows device driver verification categories, significantly outperforming state-of-the-art tools and techniques. In other work, I addressed the important question of exploiting multi-core processors to scale verification and bug finding tools. In particular, I proposed a general MapReduce-style framework [7] for parallelizing existing verification and bug finding algorithms. My framework capitalizes on the procedural decomposition of programs to analyze every procedure on a different thread, while carefully managing the intricate dependencies between different procedures. I used this framework to parallelize verification algorithms, and applied it to a large number of Windows device drivers. The results demonstrated significant performance improvements over sequential verification algorithms, achieving maximum speedups of 7x on an 8-core machine. Automated Theorem Proving. The performance of the aforementioned algorithms (as well as many other verification techniques) hinges on (1) the generalizing power of Craig interpolants and (2) the speed and capabilities of Satisfiability Modulo Theories (SMT) solvers. My research has advanced both of these areas. Interpolants are of critical importance in state-of-the-art software and hardware verification tools. In my work, I rethought existing interpolant generation methodologies and proposed a novel interpolation technique [9] that constructs simpler and more general interpolants. Following Occam s razor, the idea is that a simpler explanation (interpolant) is more likely to generalize (i.e., help us discover a proof of the program). When used in a software verification setting, this new interpolant generation technique was able to verify programs that are out of reach of state-of-the-art verification tools. Moreover, I showed how my interpolation technique can be utilized to improve performance of SMT solvers, in some cases solving satisfiability problems in 1 second where a modern SMT solver takes 3 minutes. In another project, I addressed a major limitation of SMT solvers. Whereas SMT solvers are great at finding satisfying assignments of huge formulas over a variety of logical theories, little work has been done on finding optimal satisfying assignments for arithmetic objective functions. Not only does this foundational optimization problem have numerous applications in program analysis and verification (e.g., finding performance bugs), but its importance cuts across computer science, engineering, operations research, and other fields. To address this problem, I developed a novel SMT-based numerical optimization technique [11] that scales to very large formulas, with thousands of variables, and strictly outperforms competing techniques.

Aws Albarghouthi Research Statement 3 Future Outlook One of the immensely exciting and challenging aspects of software verification and program analysis research is the ever-evolving landscape of software and hardware infrastructure, which never ceases to pose new research problems. In what follows, I describe how I plan to expand my research exploits and tackle new and pressing challenges in verification research. Synthesizing Provably Correct Code. In verification, we are interested in answering questions of the form: does program A satisfy property B? Synthesis is the flip side of verification, where our goal is to construct a program A that satisfies a property B. The ultimate goal of synthesis is to automate programming tasks. I have started advancing this area in two different directions. First, I have worked on synthesizing programs from input-output specifications [2], with the goal of automating programming tasks for end-users without programming knowledge and skills. Second, I am currently investigating the problem of synthesizing specifications (summaries) of unavailable library code that ensure correctness of a given program. This work is of importance in verification of large systems with many inter-connected components, where some components are unavailable (e.g., proprietary) or too complex for analysis (e.g., OS kernel routines). Additionally, this work makes the first concrete steps towards synthesizing code for unknown functions, thus enabling developers to leave out parts of the program and have them be automatically and correctly synthesized. This is of particular interest when designing and writing intricate and critical system components: the developer sets up the solution, and the synthesizer automatically completes the program while ensuring its correctness. I believe that in the future synthesis technology will facilitate automation of a wide range of programming tasks. I plan to address a number of challenging problems that stand in the way of realizing this vision. For instance, in terms of logical reasoning, we require logical synthesis (abductive inference) techniques for expressive theories that model program behavior. Consequently, we are in need of clever ways of transforming logical formulas into correct and efficient executable code. Scaling Verification and Analysis to Millions of Lines of Code. Scaling verification and program analysis techniques to very large programs is a non-trivial endeavour due to the inherent complexity of the verification task. Distributed and cloud computing infrastructure provides an attractive plan of attack. Inspired by my work on parallelizing verification and analysis algorithms [7], I would like to investigate distributing verification algorithms. The main challenges here are the intricate interactions and dependencies between different procedures of the program we cannot simply analyze each procedure in isolation. Thus, the primary problem is finding efficient distribution strategies with low communication overhead. This direction comes with a number of interesting opportunities, for example, hosting verification and analysis services in the cloud, automatic distribution of verification and analysis algorithms, and exchange of procedure summaries between different verification clients. Armed with efficient distribution mechanisms, we can perform more precise program analyses, aiding software developers with bug finding and enabling compilers to perform aggressive optimizations at a lower cost. Program Analysis Technology and Mobile Computing. Over the past few years, we have witnessed huge gains in the performance of mobile computing platforms and widespread proliferation of devices such as smartphones and tablets. Mobile computing software comes with a range of important problems that need to be addressed, including security, privacy, and power consumption. In all of these problems, verification and program analysis technology can play an important role. For example, with the limited battery power on these devices, a key challenge in software design for mobile platforms is power consumption. I plan to leverage my expertise in verification and program analysis to design algorithms and tools that can infer power consumption of mobile applications, and aid developers in writing power-efficient applications. This an under-explored area where I believe program analysis technology can have a significant impact.

Aws Albarghouthi Research Statement 4 References [1] A. Albarghouthi, J. Berdine, B. Cook, and Z. Kincaid. Spatial Interpolants. 2013. In submission. [2] A. Albarghouthi, S. Gulwani, and Z. Kincaid. Recursive Program Synthesis. In CAV, 2013. [3] A. Albarghouthi, A. Gurfinkel, and M. Chechik. Craig Interpretation. In SAS, 2012. [4] A. Albarghouthi, A. Gurfinkel, and M. Chechik. From Under-Approximations to Over- Approximations and Back. In TACAS, 2012. [5] A. Albarghouthi, A. Gurfinkel, and M. Chechik. Whale: An Interpolation-Based Algorithm for Inter-procedural Verification. In VMCAI, 2012. [6] A. Albarghouthi, A. Gurfinkel, O. Wei, and M. Chechik. Abstract Analysis of Symbolic Executions. In CAV, 2010. [7] A. Albarghouthi, R. Kumar, A. V. Nori, and S. K. Rajamani. Parallelizing Top-down Interprocedural Analyses. In PLDI, 2012. [8] A. Albarghouthi, Y. Li, A. Gurfinkel, and M. Chechik. Ufo: A Framework for Abstraction- and Interpolation-Based Software Verification. In CAV, 2012. [9] A. Albarghouthi and K. L. McMillan. Beautiful Interpolants. In CAV, 2013. [10] D. Beyer. Second Competition on Software Verification (Summary of SV-COMP). In TACAS, 2013. [11] Y. Li, A. Albarghouthi, A. Gurfinkel, Z. Kincaid, and M. Chechik. Symbolic Optimization with SMT Solvers. In POPL, 2014. To appear. [12] K. L. McMillan. Lazy Abstraction with Interpolants. In CAV, 2006.

Aws Albarghouthi Teaching Statement My most enjoyable courses as a student were those taught by professors whose passion for the subject shone through their engaging and theatrical teaching style. I clearly remember, for example, my programming languages class as an undergraduate student. The professor s love for functional programming and his dramatic coding demonstrations mesmerized me and my classmates, inspiring us to dive deeper into the area and adopt functional languages. When teaching and mentoring, I constantly aspire to mirror this style: being passionate, engaging, and ultimately inspiring to the students. Teaching Philosophy and Experience. I have held multiple teaching assistantships during my graduate and undergraduate studies. My teaching experiences led me to develop a teaching philosophy that strongly emphasizes the following aspects: (1) interactive and engaging teaching style, where the students, together with the instructor, solve problems by iteratively refining their solutions, learning from their mistakes along the way; (2) harmonious development of theoretical foundations and practical skills, where teaching theoretical concepts and practical skills go hand in hand; and (3) story-like presentation of material, where the subject is brought to life by presenting it against a historical backdrop. One of my most delightful teaching experiences was running tutorials for the introductory engineering programming class, where we tackled programming problems in a fun and highly interactive environment. This experience made me cherish the interactive tutorial setting, where the students, steered by the instructor, attempt to synthesize programs, theorems, and proofs from scratch. When mentoring junior graduate students, I adapted this teaching style to a one-on-one setting, where I would help students progress on a research problem by constructively questioning their design decisions and assumptions, thus assisting them in understanding their mistakes and refining their solutions. With this style of instruction, the student explores a wide space of different solutions before arriving at a right one. This, as I have repeatedly noticed, strengthens the student s grasp of the material and positively affects their confidence in their abilities. My teaching experience and research focus have helped me establish a teaching philosophy that stresses the importance of building a strong theoretical foundation in computer science, while simultaneously enriching it with practical experience. This, I believe, creates a feedback loop between theory and practice, one that aids in enriching the theoretical foundations and provides a solid ground for practical applications. For example, in software engineering and formal methods courses, undergraduate students are often instructed in the importance of annotating their code with invariants and pre-/post-conditions. Unfortunately, this practical advice is often supplied to students without any theoretical context. That is, students should also be instructed in the complexity of checking such assertions, the logics in which they are written, and the algorithms used to check them. This allows students to critically reason about the practical advice they are given, and direct their practical considerations with their theoretical knowledge. One of my most memorable classes was complexity theory in graduate school. The instructor presented the material as if it is a TV drama that starts in the 1960s and teasingly ends in our modern day, where in every week s episode new protagonists emerge and prove unexpected theorems! Inspired by this course, I strongly believe in the power and importance of presenting material in a story-like fashion, connecting ideas and concepts with the people behind them and describing their historical significance. This allows students to understand the provenance of the taught concepts, their predecessors, their successors, and, as a result, their value. Weaving a historical narrative into an otherwise technical material enables the student to connect seemingly unrelated concepts, cementing the material in the student s mind and providing a rich and memorable learning experience. Future Teaching. As an academic, I would like to teach undergraduate courses on formal methods, testing, compilers, software engineering, and programming languages. I would also be happy to teach classes outside my immediate areas of interest. At a graduate level, I would be very interested in leading advanced topics classes in formal methods, programming languages, and software engineering, as well as introductory classes on model checking, program analysis, and decision procedures.