Advanced Compilation and Automatic Programming

Slides:



Advertisements
Similar presentations
Introducing Formal Methods, Module 1, Version 1.1, Oct., Formal Specification and Analytical Verification L 5.
Advertisements

What’s wrong with this proof? If you figure it out, don’t call it out loud – let others ponder it as well. 1. Let a and b be non-zero such thata = b 2.
1 Semantic Description of Programming languages. 2 Static versus Dynamic Semantics n Static Semantics represents legal forms of programs that cannot be.
1 Formal Methods in SE Qaisar Javaid Assistant Professor Lecture 05.
Formal Methods in Software Engineering Credit Hours: 3+0 By: Qaisar Javaid Assistant Professor Formal Methods in Software Engineering1.
Snick  snack CPSC 121: Models of Computation 2011 Winter Term 1 Introduction & Motivation Steve Wolfman, based on notes by Patrice Belleville and others.
General information CSE 230 : Introduction to Software Engineering
Programming Language Semantics Mooly SagivEran Yahav Schrirber 317Open space html://
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 18 Program Correctness To treat programming.
Writing Good Software Engineering Research Papers A Paper by Mary Shaw In Proceedings of the 25th International Conference on Software Engineering (ICSE),
C SC 520 Principles of Programming Languages 1 C SC 520: Principles of Programming Languages Peter J. Downey Department of Computer Science Spring 2006.
CSE 322: Software Reliability Engineering Topics covered: Course outline and schedule Introduction, Motivation and Basic Concepts.
Semantics with Applications Mooly Sagiv Schrirber html:// Textbooks:Winskel The.
Describing Syntax and Semantics
Through the Looking Glass, 1865
COMP313A Programming Languages Introduction. More Housekeeping Stuff Reading Material Textbook –Programming Languages: Principles and Practice by Kenneth.
CS 103 Discrete Structures Lecture 01 Introduction to the Course
Mathematical Modeling and Formal Specification Languages CIS 376 Bruce R. Maxim UM-Dearborn.
Martin Henz and Aquinas Hobor School of Computing National University of Singapore.
Hello World! CSE442. Course Summary A semester long group project – You will develop software from idea to implementation You have full freedom to choose.
COURSE INTRODUCTION CS703 – Program verification and synthesis Loris D’Antoni.
CS 363 Comparative Programming Languages Semantics.
Course Information Andy Wang CIS 5930 Computer Systems Performance Analysis.
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
CMSC 491/691 A Web of Data Administrivia Spring
CS Welcome to CS 5383, Topics in Software Assurance, Toward Zero-defect Programming Spring 2007.
3.2 Semantics. 2 Semantics Attribute Grammars The Meanings of Programs: Semantics Sebesta Chapter 3.
ISBN Chapter 3 Describing Semantics.
Semantics In Text: Chapter 3.
CS703: PROJECT GUIDELINES 1. Logistics: Project Most important part of the course Teams of 1 or 2 people Expectations commensurate with size of team Deliverables.
System Requirements Specification
CMSC 491/691 A Web of Data Administrivia Spring
1 CS 381 Introduction to Discrete Structures Lecture #1 Syllabus Week 1.
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
CIT 592 Discrete Math Lecture 1. By way of introduction … Arvind Bhusnurmath There are no bonus points for pronouncing my last name correctly Please call.
Course Overview Stephen M. Thebaut, Ph.D. University of Florida Software Engineering.
Course Information Andy Wang CIS 5930 Computer Systems Performance Analysis.
Requirements Specification
Elementary Programming Concepts Hannah Westra
Welcome to CS 4390/CS5381: Introduction to Formal Methods
Course Overview CS 4501 / 6501 Software Testing
CSC207 Fall 2016.
CSE 105 theory of computation
课程名 编译原理 Compiling Techniques
Principles of Computing – UFCFA Lecture-1
Great Theoretical Ideas in Computer Science
Program Verification Using
Discrete Mathematics and Its Applications
Foundations of Programming Languages – Course Overview
Lecture 5 Floyd-Hoare Style Verification
CSCE 411 Design and Analysis of Algorithms
Objective of This Course
CS703 – Program verification and synthesis Loris D’Antoni
Programming Languages 2nd edition Tucker and Noonan
Organization of Programming Languages
CSCE 489- Problem Solving Programming Strategies Spring 2018
Halting Problem.
PHYS 202 Intro Physics II Catalog description: A continuation of PHYS 201 covering the topics of electricity and magnetism, light, and modern physics.
CS6501 Embedded Operating Systems for the IoT
Axiomatic Verification I
Topics in Formal Reasoning for Cyber-Physical Systems
Templates of slides for P4 Experiments with your synthesizer
Axiomatic Verification I
CSE 105 theory of computation
Principles of Computing – UFCFA Week 1
Programming Languages 2nd edition Tucker and Noonan
Rich Model Toolkit – An Infrastructure for Reliable Computer Systems
CS249: Neural Language Model
CS 8803 Topics in Program Analysis
CSE 105 theory of computation
Presentation transcript:

Advanced Compilation and Automatic Programming ∃𝑐∀𝑖𝑛 𝑄(𝑐,𝑖𝑛) Advanced Compilation and Automatic Programming 𝜑 𝑝 𝑆𝑘[𝑐](𝑖𝑛)

Lecture 1 Course Overview Xiaokang Qiu

Who are we? Xiaokang Qiu xkqiu@purdue.edu Assistant Professor of ECE Research interests: programming languages, formal methods, and software engineering, making programming easier, more reliable and more productive How about you?

What is this course about? The goal of the course is to introduce compile-time software analysis and synthesis techniques You’ll get familiar with useful tools for analyze/verify/synthesize your programs –  First 1/3 course: Core techniques –  Second 1/3 course: Presentations on techniques by everyone –  Third 1/3 course: Projects, and project presentations –  No final exam

Logistics: When & Where Lecture: MWF 10:30-11:20 (EE 224) But you already knew that  Office Hours Answer questions, discuss your project In my office (EE 334C) After Monday’s class? Course Website Website: https://engineering.purdue.edu/~ece663/  Piazza: https://piazza.com/class/jbx4hdhnva05u0

Logistics: Grading 10% — Problem sets 20% — Paper presentation 70% — Project 3% — Team formed by deadline 10% — 1-page project proposal 7% — Proposal presentation 20% — Final presentation 30% — Final report

Logistics: PSets 3-4 PSets covering core techniques (first 1/3 course) Submission details Posted on course website Submitted through email?

Logistics: Paper Presentation Ideally, each person is expected to learn all core techniques, learn one particular technique in detail, and use it in a concrete project, giving a theoretical or practical contribution. How it works: A list of papers will be posted on the course website Pick a paper from the list, hopefully related to your project Present the paper as a full lecture You may suggest a paper out of the list (you need to justify your choice)

Logistics: Project Teams of 1 or 2 people (3%) Expectations commensurate with size of team 1-page project proposal (10%) Proposal presentation (7%) Tell us what you plan to do and give some evidence that you’ve started to work on it Final presentation (20%) Project report (30%) Hopefully be at the level of a conference publication. Will be judged in terms of quality of execution originality scope

Techniques: Verification C.A.R. Hoare

Over 40 years of work on Floyd-Hoare style reasoning Infrastructure: Verifiers: Success Stories: Coq Robert W. Floyd C.A.R. Hoare Verve OS

Techniques: Synthesis

What is software synthesis? Zohar Manna Richard Waldinger

The synthesis conundrum I don’t want to program The machine should program for me But I need to tell the machine what I want I need a notation to describe what I want with great precision with little room for ambiguity So instead of “programming” I will write detailed step by step descriptions of system behavior In a notation that requires great mathematical sophistication That I have never used before (unlike my favorite programming language which I started using in grade school)

What is software synthesis? When someone says "I want a programming language in which I need only say what I wish done," give him a lollipop. -Allan Perlis 1982

FlashFill: a feature of Excel 2013 (Sumit Gulwani et al.)

FlashFill: a feature of Excel 2013 (Sumit Gulwani et al.) Result of the program generated from the first row applied to the remaining rows.

Verification as A Synthesis Problem Logic L Space of proofs x=1; y=1; while (*) { x=x+y; y=x+y; }   theorem proof Q: is y>=1 always true?    Program Correct?

Reactive Synthesis Environment System while(true){ read inputs; make decisions; update state; write outputs; } System Inputs Outputs Finite programs with infinite execution Very nice theory developed since 1950s

What is this course about? Logical Reasoning Synthesis Verification Machine Learning

Techniques: Logic • Logic: the Calculus of Computation the study of the principles of valid inference and demonstration. the study of the structure of arguments. the study of formal inference. • Syntax + Semantics + Inference (form) (meaning) (reasoning) • “Contrariwise,” ... “if it was so, it might be; and if it were so, it would be; but as it isn’t, it ain’t. That’s logic.” ‐ Tweedledum and Tweedledee, Lewis Carroll ∀𝑥,𝑦, 𝑥 ′ : 𝑥>𝑦∧ 𝑥 ′ =𝑥+1 → 𝑥 ′ >𝑦

Some successful tools SMT solver Software verifier Z3, CVC4, … Software verifier Dafny Inductive synthesizer Sketch Static analyzer CPAChecker Second-order tree solver MONA