The CompCert verified C compiler
|
|
|
- Rodney McBride
- 10 years ago
- Views:
Transcription
1 The CompCert verified C compiler Compiler built and proved by Xavier Leroy et al. Talk given by David Pichardie - Harvard University / INRIA Rennes Slides largely inspired by Xavier Leroy own material
2 Critical embedded software critical_prog.ppc 2
3 Critical embedded software High degree of assurance is required is the program critical_prog.ppc safe? critical_prog.ppc 2
4 Critical embedded software High degree of assurance is required is the program critical_prog.ppc safe? 2 options: qualify the PPC program as if hand-written (intensive testing, painful manual review...) qualify the program at the source level (static analysis, model checking, or program proof) critical_prog.ppc 2
5 Critical embedded software High degree of assurance is required is the program critical_prog.ppc safe? 2 options: qualify the PPC program as if hand-written (intensive testing, painful manual review...) qualify the program at the source level (static analysis, model checking, or program proof) 2nd option is preferred in practice can you trust your compiler? this talk: apply formal verification techniques to the compiler itself! critical_prog.ppc 2
6 Miscompilation happens 3
7 Miscompilation happens NULLSTONE isolated defects [in integer division] in twelve of twenty commercially available compilers that were evaluated. 3
8 Miscompilation happens NULLSTONE isolated defects [in integer division] in twelve of twenty commercially available compilers that were evaluated. We tested thirteen production-quality C compilers and, for each, found situations in which the compiler generated incorrect code for accessing volatile variables. E. Eide & J. Regehr, EMSOFT
9 Miscompilation happens NULLSTONE isolated defects [in integer division] in twelve of twenty commercially available compilers that were evaluated. We tested thirteen production-quality C compilers and, for each, found situations in which the compiler generated incorrect code for accessing volatile variables. E. Eide & J. Regehr, EMSOFT 2008 We created a tool that generates random C programs, and then spent two and a half years using it to find compiler bugs. So far, we have reported more than 290 previously unknown bugs to compiler developers. Moreover, every compiler that we tested has been found to crash and also to silently generate wrong code when presented with valid inputs. J. Regehr et al,
10 How do we verify a compiler? 4
11 How do we verify a compiler? A simple idea: 4
12 How do we verify a compiler? A simple idea: Program and prove your compiler in the same language! 4
13 How do we verify a compiler? A simple idea: Program and prove your compiler in the same language! Which language? 4
14 How do we verify a compiler? A simple idea: Program and prove your compiler in the same language! Which language? Coq 4
15 Coq: an animal with two faces 5
16 Coq: an animal with two faces First face: 5
17 Coq: an animal with two faces First face: a proof assistant that allows to interactively build proof in constructive logic 5
18 Coq: an animal with two faces First face: a proof assistant that allows to interactively build proof in constructive logic Second face: 5
19 Coq: an animal with two faces First face: a proof assistant that allows to interactively build proof in constructive logic Second face: a functional programming language with a very rich type system 5
20 Coq: an animal with two faces First face: a proof assistant that allows to interactively build proof in constructive logic Second face: a functional programming language with a very rich type system example: sort: 8 l: list int, { l : list int Sorted l ^ PermutationOf l l } 5
21 Coq: an animal with two faces First face: a proof assistant that allows to interactively build proof in constructive logic Second face: a functional programming language with a very rich type system example: sort: 8 l: list int, { l : list int Sorted l ^ PermutationOf l l } with an extraction mechanism to Ocaml sort: int list! int list 5
22 Verifying a compiler in Coq A simple recipe Logical Framework (here Coq) 6
23 Verifying a compiler in Coq A simple recipe Program the compiler inside Coq Definition compiler (p: source) : option target :=... Compiler Logical Framework (here Coq) 6
24 Verifying a compiler in Coq A simple recipe Program the compiler inside Coq Definition compiler (p: source) : option target :=... Compiler Source & Target Language Semantics State its correctness wrt. a formal specification of the language semantics Theorem compiler_is_correct : 8 p, compiler p = Some p! behaviors(p ) behaviors(p) If compilation succeeds, the generated code should behave as prescribed by the semantics of the source program. Logical Framework (here Coq) 6
25 Verifying a compiler in Coq A simple recipe Program the compiler inside Coq Definition compiler (p: source) : option target :=... Compiler Source & Target Language Semantics State its correctness wrt. a formal specification of the language semantics Theorem compiler_is_correct : 8 p, compiler p = Some p! behaviors(p ) behaviors(p) We interactively and mechanically prove this theorem Logical Framework (here Coq) Soundness Proof Proof.... (* few days later *)... Qed. 6
26 Verifying a compiler in Coq A simple recipe Program the compiler inside Coq Definition compiler (p: source) : option target :=... Compiler Source & Target Language Semantics State its correctness wrt. a formal specification of the language semantics Theorem compiler_is_correct : 8 p, compiler p = Some p! behaviors(p ) behaviors(p) We interactively and mechanically prove this theorem Logical Framework (here Coq) Soundness Proof Proof.... (* few days later *)... Qed. We extract an OCaml implementation of the compiler parser.ml compiler.ml linker.ml Extraction compiler. 6
27 Trusted Computing Base (TCB) 1. Formal specification of the programming language semantics already (informally) shared between any enduser programmer, compiler, static analyzer must itself be rigorously proofread/animated/ tested 2. Logical Framework only the proof checker needs to be trusted we don t trust sophisticated decision procedures Compiler Logical Framework (here Coq) Soundness Proof Source & Target Language Semantics 7
28 Trusted Computing Base (TCB) 1. Formal specification of the programming language semantics already (informally) shared between any enduser programmer, compiler, static analyzer must itself be rigorously proofread/animated/ tested Compiler Soundness Proof Source & Target Language Semantics 2. Logical Framework only the proof checker needs to be trusted we don t trust sophisticated decision procedures Logical Framework (here Coq) Proof Checker 7
29 Trusted Computing Base (TCB) 1. Formal specification of the programming language semantics already (informally) shared between any enduser programmer, compiler, static analyzer must itself be rigorously proofread/animated/ tested Compiler Soundness Proof Source & Target Language Semantics 2. Logical Framework only the proof checker needs to be trusted we don t trust sophisticated decision procedures Logical Framework (here Coq) Proof Checker Still a large code base but at least a foundational code base: logic & semantics 7
30 The CompCert project X. Leroy, S. Blazy et al. Develop and prove correct a realistic compiler, usable for critical embedded software. Source language: a very large subset of C. Target language: PowerPC/ARM/x86 assembly. Generates reasonably compact and fast code careful code generation; some optimizations. Note: compiler written from scratch, along with its proof; not trying to prove an existing compiler (otherwise see Zdancewic et al s Verified LLVM project). 8
31 The formally verified part of the compiler side-effects out type elimination Compcert C Clight C#minor of expressions loop simplifications Optimizations: constant prop., CSE, tail calls stack allocation of variables RTL CFG construction expr. decomp. CminorSel instruction selection Cminor register allocation linearization spilling, reloading LTL LTLin Linear of the CFG calling conventions layout of stack frames ASM asm code generation Mach 9
32 Formally verified in Coq After lines of Coq and 4 person.years of effort Theorem transf_c_program_is_refinement: 8 p tp, transf_c_program p = OK tp! (8 beh, exec_c_program p beh! not_wrong beh)! (8 beh, exec_asm_program tp beh! exec_c_program p beh). Behaviors beh = termination / divergence / going wrong + trace of I/O operations (syscalls, volatile accesses). 10
33 Compiler verification patterns (for each pass) 11
34 Compiler verification patterns (for each pass) Verified transformation transformation 11
35 Compiler verification patterns (for each pass) Verified transformation transformation Verified translation validation transformation validator = formally verified = not verified 11
36 Compiler verification patterns (for each pass) Verified transformation transformation Verified translation validation transformation External solver with verified validation transformation validator checker = formally verified = not verified untrusted solver 11
37 External solver with verified validation Example: register allocation register allocation RTL LTL graph coloring heuristics graph coloring checker 12
38 Verified translation validation Example: SSA generation (in CompCert SSA extension) untrusted SSA generator RTL SSA validator 13
39 Verified translation validation Example: SSA generation (in CompCert SSA extension) untrusted SSA generator RTL SSA validator The untrusted generator can rely on advanced graph algorithms as Lengauer and Tarjan s dominator tree construction and frontier dominance computation. 13
40 Verified translation validation Example: SSA generation (in CompCert SSA extension) untrusted SSA generator RTL SSA validator The untrusted generator can rely on advanced graph algorithms as Lengauer and Tarjan s dominator tree construction and frontier dominance computation. We prove the validator is complete with respect to this family of algorithms. 13
41 The whole CompCert compiler C source parsing, construction of an AST type-checking, de-sugaring AST C Type reconstruction Graph coloring Code linearization heuristics Verified compiler assembling printing of Executable Assembly AST Asm linking asm syntax Part of the TCB Not part of the TCB Not proved (hand-written in OCaml) Proved in Coq (extracted to OCaml) 14
42 Performance of generated code Performance of generated code (On a PowerPC G5 processor) (On a PowerPC G5 processor) Execution time gcc -O0 Compcert gcc -O1 gcc -O3 AES Almabench Binarytrees Fannkuch FFT Knucleotide Nbody Qsort Raytracer Spectral VMach X. Leroy (INRIA) Verified squared POPL / 50 15
43 Conclusions The formal verification of realistic compilers is feasible. (Within the limitations of contemporary proof assistants) Much work remains: Shrinking the TCB (e.g. verified parsing, validated assembling & linking). More optimizations (see CompCert SSA). Front-ends for other languages Concurrency (see Sevcik et al s CompCert TSO and Appel and al s Verified Software Toolchain). Connections with source-level verification (ongoing french project on a verified C static analyzer) 16
PROGRAM LOGICS FOR CERTIFIED COMPILERS
PROGRAM LOGICS FOR CERTIFIED COMPILERS Separation logic is the twenty-first-century variant of Hoare logic that permits verification of pointer-manipulating programs. This book covers practical and theoretical
Specification and Analysis of Contracts Lecture 1 Introduction
Specification and Analysis of Contracts Lecture 1 Introduction Gerardo Schneider [email protected] http://folk.uio.no/gerardo/ Department of Informatics, University of Oslo SEFM School, Oct. 27 - Nov.
How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer
How to make the computer understand? Fall 2005 Lecture 15: Putting it all together From parsing to code generation Write a program using a programming language Microprocessors talk in assembly language
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16
Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz [email protected] Assistant: Iulian Dragos INR 321, 368 64
Trustworthy Software Systems
Trustworthy Software Systems Greg Morrisett Cutting Professor of Computer Science School of Engineering & Applied Sciences Harvard University Little about me Research & Teaching Compilers, Languages, Formal
Advances in Programming Languages
Advances in Programming Languages Lecture 13: Certifying Correctness Ian Stark School of Informatics The University of Edinburgh Tuesday 4 November 2014 Semester 1 Week 8 http://www.inf.ed.ac.uk/teaching/courses/apl
Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur
Module 10 Coding and Testing Lesson 23 Code Review Specific Instructional Objectives At the end of this lesson the student would be able to: Identify the necessity of coding standards. Differentiate between
Static Analysis of Dynamic Properties - Automatic Program Verification to Prove the Absence of Dynamic Runtime Errors
Static Analysis of Dynamic Properties - Automatic Program Verification to Prove the Absence of Dynamic Runtime Errors Klaus Wissing PolySpace Technologies GmbH Argelsrieder Feld 22 82234 Wessling-Oberpfaffenhofen
Progress Report to ONR on MURI Project Building Interactive Formal Digital Libraries of Algorithmic Mathematics
Progress Report to ONR on MURI Project Building Interactive Formal Digital Libraries of Algorithmic Mathematics Robert L. Constable Cornell University February 2003 Project Web Page http://www.cs.cornell.edu/info/projects/nuprl/html/digital
Pretty-big-step semantics
Pretty-big-step semantics Arthur Charguéraud INRIA October 2012 1 / 34 Motivation Formalization of JavaScript with Sergio Maeis, Daniele Filaretti, Alan Schmitt, Martin Bodin. Previous work: Semi-formal
Formal Certification of a Compiler Back-end
Formal Certification of a Compiler Back-end or: Programming a Compiler with a Proof Assistant Xavier Leroy INRIA Rocquencourt [email protected] Abstract This paper reports on the development and formal
A Formally-Verified C Static Analyzer
A Formally-Verified C Static Analyzer Jacques-Henri Jourdan Inria Paris-Rocquencourt [email protected] Vincent Laporte IRISA and U. Rennes 1 [email protected] Sandrine Blazy IRISA and
INF5140: Specification and Verification of Parallel Systems
Motivation INF5140: Specification and Verification of Parallel Systems Lecture 1 Introduction: Formal Methods Gerardo Schneider Department of Informatics University of Oslo INF5140, Spring 2009 Outline
Technical paper review. Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald.
Technical paper review Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald Garvit Pahal Indian Institute of Technology, Kanpur October 28, 2014 Garvit
Applications of formal verification for secure Cloud environments at CEA LIST
Applications of formal verification for secure Cloud environments at CEA LIST Nikolai Kosmatov joint work with A.Blanchard, F.Bobot, M.Lemerre,... SEC2, Lille, June 30 th, 2015 N. Kosmatov (CEA LIST) Formal
Formal verification of a C-like memory model and its uses for verifying program transformations
Journal of Automated Reasoning manuscript No. (will be inserted by the editor) Formal verification of a C-like memory model and its uses for verifying program transformations Xavier Leroy Sandrine Blazy
Transparent Monitoring of a Process Self in a Virtual Environment
Transparent Monitoring of a Process Self in a Virtual Environment PhD Lunchtime Seminar Università di Pisa 24 Giugno 2008 Outline Background Process Self Attacks Against the Self Dynamic and Static Analysis
Formal Verification and Linear-time Model Checking
Formal Verification and Linear-time Model Checking Paul Jackson University of Edinburgh Automated Reasoning 21st and 24th October 2013 Why Automated Reasoning? Intellectually stimulating and challenging
How To Verify Stack Space Bounds In C Programs In Coq
End-to-End Verification of Stack-Space Bounds for C Programs Quentin Carbonneaux Jan Hoffmann Tahina Ramananandro Zhong Shao Yale University tquentin.carbonneaux, jan.hoffmann, tahina.ramananandro, [email protected]
Virtual Machine Learning: Thinking Like a Computer Architect
Virtual Machine Learning: Thinking Like a Computer Architect Michael Hind IBM T.J. Watson Research Center March 21, 2005 CGO 05 Keynote 2005 IBM Corporation What is this talk about? Virtual Machines? 2
Static Program Transformations for Efficient Software Model Checking
Static Program Transformations for Efficient Software Model Checking Shobha Vasudevan Jacob Abraham The University of Texas at Austin Dependable Systems Large and complex systems Software faults are major
IKOS: A Framework for Static Analysis based on Abstract Interpretation (Tool Paper)
IKOS: A Framework for Static Analysis based on Abstract Interpretation (Tool Paper) Guillaume Brat, Jorge A. Navas, Nija Shi, and Arnaud Venet NASA Ames Research Center, Moffett Field, CA 94035 Abstract.
Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification
Introduction Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification Advanced Topics in Software Engineering 1 Concurrent Programs Characterized by
JavaScript as a compilation target Making it fast
JavaScript as a compilation target Making it fast Florian Loitsch, Google Who am I? Florian Loitsch, software engineer at Google Projects Scheme2Js - Scheme-to-JavaScript compiler Js2scheme - JavaScript-to-Scheme
Testing static analyzers with randomly generated programs
Testing static analyzers with randomly generated programs Pascal Cuoq 1, Benjamin Monate 1, Anne Pacalet 2, Virgile Prevosto 1, John Regehr 3, Boris Yakobowski 1, and Xuejun Yang 3 1 CEA, LIST 2 INRIA
Software Verification and System Assurance
Software Verification and System Assurance John Rushby Based on joint work with Bev Littlewood (City University UK) Computer Science Laboratory SRI International Menlo Park CA USA John Rushby, SR I Verification
Introducing Formal Methods. Software Engineering and Formal Methods
Introducing Formal Methods Formal Methods for Software Specification and Analysis: An Overview 1 Software Engineering and Formal Methods Every Software engineering methodology is based on a recommended
Model Checking: An Introduction
Announcements Model Checking: An Introduction Meeting 2 Office hours M 1:30pm-2:30pm W 5:30pm-6:30pm (after class) and by appointment ECOT 621 Moodle problems? Fundamentals of Programming Languages CSCI
CA4003 - Compiler Construction
CA4003 - Compiler Construction David Sinclair Overview This module will cover the compilation process, reading and parsing a structured language, storing it in an appropriate data structure, analysing
Introduction to Automated Testing
Introduction to Automated Testing What is Software testing? Examination of a software unit, several integrated software units or an entire software package by running it. execution based on test cases
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
language 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
Pattern Insight Clone Detection
Pattern Insight Clone Detection TM The fastest, most effective way to discover all similar code segments What is Clone Detection? Pattern Insight Clone Detection is a powerful pattern discovery technology
InvGen: An Efficient Invariant Generator
InvGen: An Efficient Invariant Generator Ashutosh Gupta and Andrey Rybalchenko Max Planck Institute for Software Systems (MPI-SWS) Abstract. In this paper we present InvGen, an automatic linear arithmetic
Introduction to Functional Verification. Niels Burkhardt
Introduction to Functional Verification Overview Verification issues Verification technologies Verification approaches Universal Verification Methodology Conclusion Functional Verification issues Hardware
System modeling. Budapest University of Technology and Economics Department of Measurement and Information Systems
System modeling Business process modeling how to do it right Partially based on Process Anti-Patterns: How to Avoid the Common Traps of Business Process Modeling, J Koehler, J Vanhatalo, IBM Zürich, 2007.
Language Processing Systems
Language Processing Systems Evaluation Active sheets 10 % Exercise reports 30 % Midterm Exam 20 % Final Exam 40 % Contact Send e-mail to [email protected] Course materials at www.u-aizu.ac.jp/~hamada/education.html
B) Using Processor-Cache Affinity Information in Shared Memory Multiprocessor Scheduling
A) Recovery Management in Quicksilver 1) What role does the Transaction manager play in the recovery management? It manages commit coordination by communicating with servers at its own node and with transaction
Abstractions For Software-Defined Networks
Abstractions For Software-Defined Networks Nate Foster Cornell Jen Rexford & David Walker Princeton Software-Defined Networking The Good Logically-centralized architecture Direct control over the network
Instruction Set Design
Instruction Set Design Instruction Set Architecture: to what purpose? ISA provides the level of abstraction between the software and the hardware One of the most important abstraction in CS It s narrow,
International Journal of Software Engineering and Knowledge Engineering c World Scientific Publishing Company
International Journal of Software Engineering and Knowledge Engineering c World Scientific Publishing Company Rapid Construction of Software Comprehension Tools WELF LÖWE Software Technology Group, MSI,
Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University
Software Engineering Introduction & Background Department of Computer Science Kent State University Complaints Software production is often done by amateurs Software development is done by tinkering or
Applying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
Lab Experience 17. Programming Language Translation
Lab Experience 17 Programming Language Translation Objectives Gain insight into the translation process for converting one virtual machine to another See the process by which an assembler translates assembly
Regression Verification: Status Report
Regression Verification: Status Report Presentation by Dennis Felsing within the Projektgruppe Formale Methoden der Softwareentwicklung 2013-12-11 1/22 Introduction How to prevent regressions in software
Adversary Modelling 1
Adversary Modelling 1 Evaluating the Feasibility of a Symbolic Adversary Model on Smart Transport Ticketing Systems Authors Arthur Sheung Chi Chan, MSc (Royal Holloway, 2014) Keith Mayes, ISG, Royal Holloway
AURA: A language with authorization and audit
AURA: A language with authorization and audit Steve Zdancewic University of Pennsylvania WG 2.8 2008 Security-oriented Languages Limin Jia, Karl Mazurak, Jeff Vaughan, Jianzhou Zhao Joey Schorr and Luke
The Course. http://www.cse.unsw.edu.au/~cs3153/
The Course http://www.cse.unsw.edu.au/~cs3153/ Lecturers Dr Peter Höfner NICTA L5 building Prof Rob van Glabbeek NICTA L5 building Dr Ralf Huuck NICTA ATP building 2 Plan/Schedule (1) Where and When Tuesday,
FPGA area allocation for parallel C applications
1 FPGA area allocation for parallel C applications Vlad-Mihai Sima, Elena Moscu Panainte, Koen Bertels Computer Engineering Faculty of Electrical Engineering, Mathematics and Computer Science Delft University
Faster deterministic integer factorisation
David Harvey (joint work with Edgar Costa, NYU) University of New South Wales 25th October 2011 The obvious mathematical breakthrough would be the development of an easy way to factor large prime numbers
Introduction. Compiler Design CSE 504. Overview. Programming problems are easier to solve in high-level languages
Introduction Compiler esign CSE 504 1 Overview 2 3 Phases of Translation ast modifled: Mon Jan 28 2013 at 17:19:57 EST Version: 1.5 23:45:54 2013/01/28 Compiled at 11:48 on 2015/01/28 Compiler esign Introduction
FoREnSiC An Automatic Debugging Environment for C Programs
FoREnSiC An Automatic Debugging Environment for C Programs Roderick Bloem 1, Rolf Drechsler 2, Görschwin Fey 2, Alexander Finder 2, Georg Hofferek 1, Robert Könighofer 1, Jaan Raik 3, Urmas Repinski 3,
ESIEE Paris International Master of Computer Science DMC (Diplôme National de Master) Official program for years 2016 to 2018
ESIEE Paris International Master of Computer Science DMC (Diplôme National de Master) Official program for years 2016 to 2018 International Master of Computer Science DMC DMC Programme The DMC programme
Model Checking of Software
Model Checking of Software Patrice Godefroid Bell Laboratories, Lucent Technologies SpecNCheck Page 1 August 2001 A Brief History of Model Checking Prehistory: transformational programs and theorem proving
University of Dayton Department of Computer Science Undergraduate Programs Assessment Plan DRAFT September 14, 2011
University of Dayton Department of Computer Science Undergraduate Programs Assessment Plan DRAFT September 14, 2011 Department Mission The Department of Computer Science in the College of Arts and Sciences
EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!)
EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!) ALON ZAKAI (MOZILLA) @kripken JavaScript..? At the LLVM developer's conference..? Everything compiles into LLVM bitcode The web is everywhere, and
GameTime: A Toolkit for Timing Analysis of Software
GameTime: A Toolkit for Timing Analysis of Software Sanjit A. Seshia and Jonathan Kotker EECS Department, UC Berkeley {sseshia,jamhoot}@eecs.berkeley.edu Abstract. Timing analysis is a key step in the
Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur
Module 10 Coding and Testing Lesson 26 Debugging, Integration and System Testing Specific Instructional Objectives At the end of this lesson the student would be able to: Explain why debugging is needed.
1 File Processing Systems
COMP 378 Database Systems Notes for Chapter 1 of Database System Concepts Introduction A database management system (DBMS) is a collection of data and an integrated set of programs that access that data.
RISC-V Software Ecosystem. Andrew Waterman UC Berkeley [email protected]!
RISC-V Software Ecosystem Andrew Waterman UC Berkeley [email protected]! 2 Tethered vs. Standalone Systems Tethered systems are those that cannot stand alone - They depend on a host system to
1/20/2016 INTRODUCTION
INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We
Static Analysis. Find the Bug! 15-654: Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled
Static Analysis 15-654: Analysis of Software Artifacts Jonathan Aldrich 1 Find the Bug! Source: Engler et al., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, OSDI
C++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
x86 ISA Modifications to support Virtual Machines
x86 ISA Modifications to support Virtual Machines Douglas Beal Ashish Kumar Gupta CSE 548 Project Outline of the talk Review of Virtual Machines What complicates Virtualization Technique for Virtualization
ABET General Outcomes. Student Learning Outcomes for BS in Computing
ABET General a. An ability to apply knowledge of computing and mathematics appropriate to the program s student outcomes and to the discipline b. An ability to analyze a problem, and identify and define
How to Write a Checker in 24 Hours
How to Write a Checker in 24 Hours Clang Static Analyzer Anna Zaks and Jordan Rose Apple Inc. What is this talk about? The Clang Static Analyzer is a bug finding tool It can be extended with custom checkers
CS Master Level Courses and Areas COURSE DESCRIPTIONS. CSCI 521 Real-Time Systems. CSCI 522 High Performance Computing
CS Master Level Courses and Areas The graduate courses offered may change over time, in response to new developments in computer science and the interests of faculty and students; the list of graduate
Compiling Recursion to Reconfigurable Hardware using CLaSH
Compiling Recursion to Reconfigurable Hardware using CLaSH Ruud Harmsen University of Twente P.O. Box 217, 7500AE Enschede The Netherlands [email protected] ABSTRACT Recursion is an important
Static Analysis of Virtualization- Obfuscated Binaries
Static Analysis of Virtualization- Obfuscated Binaries Johannes Kinder School of Computer and Communication Sciences École Polytechnique Fédérale de Lausanne (EPFL), Switzerland Virtualization Obfuscation
Software Testing. Quality & Testing. Software Testing
Software Testing Software Testing Error: mistake made by the programmer/developer Fault: a incorrect piece of code/document (i.e., bug) Failure: result of a fault Goal of software testing: Cause failures
One LAR Course Credits: 3. Page 4
Course Descriptions Year 1 30 credits Course Title: Calculus I Course Code: COS 101 This course introduces higher mathematics by examining the fundamental principles of calculus-- functions, graphs, limits,
Meeting DO-178B Software Verification Guidelines with Coverity Integrity Center
Meeting DO-178B Software Verification Guidelines with Coverity Integrity Center May, 2009 Thomas Schultz Director of Product Strategy, Coverity, Inc. Executive Summary Development organizations that create
Professional Organization Checklist for the Computer Science Curriculum Updates. Association of Computing Machinery Computing Curricula 2008
Professional Organization Checklist for the Computer Science Curriculum Updates Association of Computing Machinery Computing Curricula 2008 The curriculum guidelines can be found in Appendix C of the report
LONG BEACH CITY COLLEGE MEMORANDUM
LONG BEACH CITY COLLEGE MEMORANDUM DATE: May 5, 2000 TO: Academic Senate Equivalency Committee FROM: John Hugunin Department Head for CBIS SUBJECT: Equivalency statement for Computer Science Instructor
CSE 504: Compiler Design. Data Flow Analysis
Data Flow Analysis Pradipta De [email protected] Current Topic Iterative Data Flow Analysis LiveOut sets Static Single Assignment (SSA) Form Data Flow Analysis Techniques to reason about runtime
Comprehensive Static Analysis Using Polyspace Products. A Solution to Today s Embedded Software Verification Challenges WHITE PAPER
Comprehensive Static Analysis Using Polyspace Products A Solution to Today s Embedded Software Verification Challenges WHITE PAPER Introduction Verification of embedded software is a difficult task, made
FROM SAFETY TO SECURITY SOFTWARE ASSESSMENTS AND GUARANTEES FLORENT KIRCHNER (LIST)
FROM SAFETY TO SECURITY SOFTWARE ASSESSMENTS AND GUARANTEES FLORENT KIRCHNER (LIST) M loc 12 ONBOARD SOFTWARE SIZE 10 Volt (2011) F-35 (2012) 8 6 787 (2010) F-35 (2010) 4 2 F-22 (2005) 0 WHY DO WE TRUST
ML for the Working Programmer
ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming
CSE373: Data Structures and Algorithms Lecture 3: Math Review; Algorithm Analysis. Linda Shapiro Winter 2015
CSE373: Data Structures and Algorithms Lecture 3: Math Review; Algorithm Analysis Linda Shapiro Today Registration should be done. Homework 1 due 11:59 pm next Wednesday, January 14 Review math essential
Foundational Proof Certificates
An application of proof theory to computer science INRIA-Saclay & LIX, École Polytechnique CUSO Winter School, Proof and Computation 30 January 2013 Can we standardize, communicate, and trust formal proofs?
Obfuscation: know your enemy
Obfuscation: know your enemy Ninon EYROLLES [email protected] Serge GUELTON [email protected] Prelude Prelude Plan 1 Introduction What is obfuscation? 2 Control flow obfuscation 3 Data flow
MEng, BSc Applied Computer Science
School of Computing FACULTY OF ENGINEERING MEng, BSc Applied Computer Science Year 1 COMP1212 Computer Processor Effective programming depends on understanding not only how to give a machine instructions
Visualizing Information Flow through C Programs
Visualizing Information Flow through C Programs Joe Hurd, Aaron Tomb and David Burke Galois, Inc. {joe,atomb,davidb}@galois.com Systems Software Verification Workshop 7 October 2010 Joe Hurd, Aaron Tomb
The Model Checker SPIN
The Model Checker SPIN Author: Gerard J. Holzmann Presented By: Maulik Patel Outline Introduction Structure Foundation Algorithms Memory management Example/Demo SPIN-Introduction Introduction SPIN (Simple(
Outline. NP-completeness. When is a problem easy? When is a problem hard? Today. Euler Circuits
Outline NP-completeness Examples of Easy vs. Hard problems Euler circuit vs. Hamiltonian circuit Shortest Path vs. Longest Path 2-pairs sum vs. general Subset Sum Reducing one problem to another Clique
ShadowDB: A Replicated Database on a Synthesized Consensus Core
ShadowDB: A Replicated Database on a Synthesized Consensus Core Nicolas Schiper, Vincent Rahli, Robbert Van Renesse, Mark Bickford, and Robert L. Constable Cornell University Abstract This paper describes
C# and Other Languages
C# and Other Languages Rob Miles Department of Computer Science Why do we have lots of Programming Languages? Different developer audiences Different application areas/target platforms Graphics, AI, List
Formal Verification of Software
Formal Verification of Software Sabine Broda Department of Computer Science/FCUP 12 de Novembro de 2014 Sabine Broda (DCC-FCUP) Formal Verification of Software 12 de Novembro de 2014 1 / 26 Formal Verification
