Fundamentals of Programming Languages V Abstract Interpretation

Total Page:16

File Type:pdf, Size:1020Kb

Fundamentals of Programming Languages V Abstract Interpretation Fundamentals of Programming Languages V Abstract Interpretation Guoqiang Li School of Software, Shanghai Jiao Tong University Assignment Assignment 2 is announced! Deadline Nov. 15 Reference Cousot P., Cousot R., Abstract Interpretation: A Unified Lattice Mode for Static Analysis of Programs by Construction or Approximation of Fixpoints, POPL’77 Steffen, B., Data Flow Analysis as Model Checking, TACS’91 Schmidt, D.A., Data Flow Analysis is Model Checking of Abstract Interpretations POPL’98 Lacey,D., Proving Correctness of Compiler Optimizations by Temporal Logic POPL’02 Turing Award 1986, Tony Hoare For his fundamental contributions to the definition and design of programming languages... 1991, Robin Milner For three distinct and complete achievements: 1) LCF, the mechanization of Scott’s Logic of Computable Functions, probably the first theoretically based yet practical tool for machine assisted proof construction; 2) ML, the first language to include polymorphic type inference together with a type-safe exception-handling mechanism; 3) CCS, a general theory of concurrency. In addition, he formulated and strongly advanced full abstraction, the study of the relationship between operational and denotational semantics... 1996, Amir Pnueli For seminal work introducing temporal logic into computing science and for outstanding contributions to program and systems verification... 2007, Edmund M. Clarke, E. Allen Emerson and Joseph Sifakis For their roles in developing model checking into a highly effective verification technology, widely adopted in the hardware and software industries... Abstract Interpretation in Practice Hardware Model Checking • Classical Model Checking (in Clarke’s book)(hardware model checking): Implementer and verifier are same. • During designing a system, each model is checked and refined. • A correct system implementation is finally obtained. • e.g. a modulo 8 counter 0 • v0 = :v0 0 • v1 = v0 ⊕ v1 0 • v2 = (v0 ^ v1) ⊕ v2 Software Model Checking • Modern Model Checking(software model checking): Implementer and verifier may be different. • Given a system implementation (e.g. a source code), construct a model and verify it. • Construction of models: manually/automatically. • e.g. • security protocols • real-time embedded systems • program analysis Classical Program Analysis • From POPA • From Dragon book • available expression analysis • dead code detection • reaching definition analysis • constant propagation • very busy expression analysis • common expression detection • live variable analysis • code motion • Concurrent program analysis • Object-oriented program analysis • deadlock, livelock • point-to analysis • data race • escape analysis • • inference of class invariants Aspect-oriented program analysis • shape analysis • ????? Brief Idea of Abstract Interpretation • In order to know properties of a program, execute it for all possible inputs. • It will not terminate since domains of variables are often infinite. • Abstract input data to a suitable finite domain. Then finiteness guarantees termination. • Functions needs to be reinterpreted. • Examples: • Security protocols: a principal may receive infinitely many messages from environments. (some affects the principal, some are not) • Embedded systems: a scheduler may have to schedule infinitely many released tasks. (when time exceeds, all tasks have the same results) Abstract Interpretation on Program Analysis: Examples • Even/Odd analysis: x × (x + 1) is even. • Abstraction: • Even • Odd • Interpretation: • Even + Even = Even, Even + Odd = Odd, • Even × Odd = Even,… • Positive/nagative analysis • Abstraction: • Pos • Neg • Zero • Interpretation: • Pos + Pos = Pos, Pos + Neg = fPos; Zero; Negg,… • Neg × Neg = Pos, Pos × Zero = Zero,… • The result will be a (sound) approximation. Sound Abstraction The result is an approximation Completeness: sufficient condition • if no errors detected there are really no errors. Soundness: necessary condition • if errors detected they are really errors. f • Data Abstraction : abs : D ! Abs DD • Typical concretization : con = abs−1 con abs abs • abs · con id ^ con · abs ⊇ id ( = Abs) ( D) Int(f) guarantee soundness. Abs Abs 1 Abstract Interpretation Define abstraction and finite abstract domain abs : D ! Abs Interpret primitive functions +; ×; if ; =; ≥; ≤;::: Execute looping structures via program semantics while, function call Program Semantics Semantics: interpret a program (syntax) as an input-output relation (semantics). Intuitively, the input-output relation is a relation between input environment and output environment of variables in a scopes. Looping structure is solved as least fixed point. Theorem Tarski’s least fixed point theorem: Assume τ : P(D) ! P(D) is a monotonic, then there exists the S i unique least fixed point, which is computed as i τ (;). We will come back to this theorem again! This can be read as ThisThis cancan bebe readread asas • UnfoldExample: while sentence Computing as repeated applications Sum of if. •• UnfoldUnfold whilewhile sentencesentence asas repeatedrepeated applicationsapplications ofof ifif.. env = [n,i,s,c] env = [n,i,s,c] envτ: env = [n,i,s,c]×envenv =→ [n; i;envs; c] ×env /* sum */ if ¬c τ: env×env → env×env /* sum */ τ: τenv: P×(envenv× env→) !envP(env×env× env) /*1: sumread */ n; if ¬c 1: read n; ifthen ¬ cskip 1:2: readi:=0; n; then skip step 0: φ 2: i:=0; thenelse skip τ step 0: φ 2:3: i:=0;S:=0; else step 0: φ 3: S:=0; elseS:=S+i; τ step 1: 3:4: S:=0;c:=True; S:=S+i; τ step 1: 4: c:=True; S:=S+i;i:=i+1; step{([ 01:,0, 0,True], 4:5: c:=True;while c i:=i+1; {([0,0,0,True], 5: while c i:=i+1;c:=i<=n; {([[00,0,,1,00,True],,False])} 5: whiledo c c:=i<=n; τ2 [0,1,0,False])} do c:=i<=n;if ¬c τ2 [0,1,0,False])} 6: doS=S+i; if ¬c τ2 step 2: 6: S=S+i; ifthen ¬ cskip step 2: 6:7: S=S+i;i:=i+1; then skip step{([ 02:,0, 0,True], 7:8: i:=i+1;c:=i<=n; thenelse skip {([0,0,0,True], 7: i:=i+1; else {([[00,0,,1,00,True],,False]), 8: c:=i<=n;od; elseS:=S+i; [0,1,0,False]), 8: c:=i<=n; S:=S+i; ([01,1,,0,0,False]),,True], 9: od;write S S:=S+i;i:=i+1; ([1,0,0,True], od; i:=i+1; ([[11,0,,2,01,True],,False])} 9: write S i:=i+1;c:=i<=n; [1,2,1,False])} 9: write S c:=i<=n; [1,2,1,False])} Unfoldc:=i<=n; while-loop Unfold while-loop Unfold while-loop ThisThis cancan bebe readread asas Example:Example: positive/negative Positive/Negative analysis •• UnfoldUnfold whilewhile sentencesentence asas repeatedrepeated applicationsapplications ofof ifif.. • Abstraction: NatAnalysis→ {Pos, Zeroenv =}, [n,i,s,c] Bool → Bool env = [n,i,s,c] τ: env×env → env×env /*Abstraction: sum */ Nat ! fPos; Zerog τ: env×env → env×env /* sum */ if ¬c env = [n,i,s,c] 1: read n; if ¬c env = [n; i; s; c] 1: read n; then skip τ: env×env → env×env 2:/* i:=0;sum */ ifthen ¬c skip τ : P(stepenv × 0:env )φ! P(env × env) 2: i:=0; else step 0: φ 3:1: S:=0;read n; thenelse skip τ 3: S:=0; S:=S+i; τ step 0: φstep 1: 4:2: c:=True;i:=0; elseS:=S+i; step 1: 4: c:=True; i:=i+1; τ’ {([0,0,0,True], 5:3: whileS:=0; c S:=S+i;i:=i+1; step 1: {([0,0,0,True], 5: while c c:=i<=n; [0,1,0,False])} 4: doc:=True; i:=i+1;c:=i<=n; {([τ2Zero,Zero,[0,1,0Zero,False])},True], do if ¬c τ2 6:5: S=S+i;while c c:=i<=n;¬ [Zero,Pos,Zero,False])} 6: S=S+i; if c step 2: 7: i:=i+1;do then skip τ’2 step 2: 7: i:=i+1; ifthen ¬c skip {([0,0,0,True], 8:6: c:=i<=n;S=S+i; else step 2: {([0,0,0,True], 8: c:=i<=n; thenelse skip [0,1,0,False]), 7: od;i:=i+1; S:=S+i; {([Zero,Zero,[0,1,0Zero,False]),,True], od; elseS:=S+i; ([1,0,0,True], 9:8: writec:=i<=n; S i:=i+1; [Zero(,Pos,[1,0,Zero0,True],,False]), S:=S+i;i:=i+1; [1,2,1,False])} 9: writeod; S c:=i<=n; [Pos,Zero,[1,2,Zero1,False])},True], i:=i+1;c:=i<=n; 9: write S [Pos,Pos,Pos, c:=i<=n;Unfold while-loop Unfold while-loop True/False])} Converged!Least Fixed (analyzed!) Point! ThisThis cancan bebe readread asas VariationExample: of Variationabstraction •• UnfoldUnfold whilewhile sentencesentence asas repeatedrepeated applicationsapplications ofof ifif.. • Abstraction: Nat → {Pos, Zero}, Bool → Bool env = [n,i,s,c] env = [n,i,s,c] Abstraction: Nat ! fMany; One; Zerog τ: env×env → env×env • Abstraction:/* sum */ Nat → {Many,Oneτ:,Zero env×},env Bool→ env→×envBool /* sum */ if ¬c env = [n; i; s; c] 1: read n; if ¬c 1:/* readsum */n; then skip τ : (env × env) ! (env × env) 2: i:=0; ifthen ¬c skip P step 0: φ P 2:1: i:=0;read n; else step 0: φ 3: S:=0; thenelse skip τ step 0: φ 3:2: S:=0;i:=0; S:=S+i; τ step 1: 4: c:=True; elseS:=S+i; τ step 1: 4:3: c:=True;S:=0; i:=i+1; ’ step 1: {([0,0,0,True], 5: while c S:=S+i;i:=i+1; {([0,0,0,True], 5:4: whilec:=True; c c:=i<=n; {([Zero,Zero,[0,1,Zero0,False])},True], do i:=i+1;c:=i<=n; τ2 [0,1,0,False])} 5: dowhile c c:=i<=n;if ¬c τ[2Zero,One,Zero,False])} 6: S=S+i; if ¬c τ’2 step 2: 6: S=S+i;do if then¬c skip step 2: 6:7: S=S+i;i:=i+1; then skip {([0,0,0,True], 7: i:=i+1; thenelse skip step 2: {([0,0,0,True], 7:8: i:=i+1;c:=i<=n; else [0,1,0,False]), 8: c:=i<=n; elseS:=S+i; {([Zero,Zero,[0,1,0Zero,False]),,True], 8: c:=i<=n;od; S:=S+i; ([1,0,0,True], od; S:=S+i;i:=i+1; [Zero(,One,[1,0,Zero0,True],,False]), 9: od;write S i:=i+1; [1,2,1,False])} 9: write S i:=i+1;c:=i<=n; [One,Zero,[1,2,Zero1,False])},True], 9: write S c:=i<=n; [One,One,One,True])} c:=i<=n;Unfold while-loop Unfold while-loop Finer abstraction will find more; but this is trade-off Program Analysis = Abstract Interpretation + Model Checking Model Checking Based Program Analysis • Each line of a program is regarded as nondeterministic transition.
Recommended publications
  • Edsger Dijkstra: the Man Who Carried Computer Science on His Shoulders
    INFERENCE / Vol. 5, No. 3 Edsger Dijkstra The Man Who Carried Computer Science on His Shoulders Krzysztof Apt s it turned out, the train I had taken from dsger dijkstra was born in Rotterdam in 1930. Nijmegen to Eindhoven arrived late. To make He described his father, at one time the president matters worse, I was then unable to find the right of the Dutch Chemical Society, as “an excellent Aoffice in the university building. When I eventually arrived Echemist,” and his mother as “a brilliant mathematician for my appointment, I was more than half an hour behind who had no job.”1 In 1948, Dijkstra achieved remarkable schedule. The professor completely ignored my profuse results when he completed secondary school at the famous apologies and proceeded to take a full hour for the meet- Erasmiaans Gymnasium in Rotterdam. His school diploma ing. It was the first time I met Edsger Wybe Dijkstra. shows that he earned the highest possible grade in no less At the time of our meeting in 1975, Dijkstra was 45 than six out of thirteen subjects. He then enrolled at the years old. The most prestigious award in computer sci- University of Leiden to study physics. ence, the ACM Turing Award, had been conferred on In September 1951, Dijkstra’s father suggested he attend him three years earlier. Almost twenty years his junior, I a three-week course on programming in Cambridge. It knew very little about the field—I had only learned what turned out to be an idea with far-reaching consequences. a flowchart was a couple of weeks earlier.
    [Show full text]
  • A Networked Robotic System and Its Use in an Oil Spill Monitoring Exercise
    A Networked Robotic System and its Use in an Oil Spill Monitoring Exercise El´oiPereira∗† Co-authors: Pedro Silvay, Clemens Krainerz, Christoph Kirschz, Jos´eMorgadoy, and Raja Sengupta∗ cpcc.berkeley.edu, eloipereira.com [email protected] Swarm at the Edge of the Could - ESWeek'13, Montreal, Canada September 29, 2013 ∗ - Systems Engineering, UC Berkeley y - Research Center, Portuguese Air Force Academy z - Computer Science Dept., University of Salzburg Programming the Ubiquitous World • In networked mobile systems (e.g. teams of robots, smartphones, etc.) the location and connectivity of \machines" may vary during the execution of its \programs" (computation specifications) • We investigate models for bridging \programs" and \machines" with dynamic structure (location and connectivity) • BigActors [PKSBdS13, PPKS13, PS13] are actors [Agh86] hosted by entities of the physical structure denoted as bigraph nodes [Mil09] E. Pereira, C. M. Kirsch, R. Sengupta, and J. B. de Sousa, \Bigactors - A Model for Structure-aware Computation," in ACM/IEEE 4th International Conference on Cyber-Physical Systems, 2013, pp. 199-208. Case study: Oil spill monitoring scenario • \Bilge dumping" is an environmental problem of great relevance for countries with large area of jurisdictional waters • EC created the European Maritime Safety Agency to \...prevent and respond to pollution by ships within the EU" • How to use networked robotics to monitor and take evidences of \bilge dumping" Figure: Portuguese Jurisdiction waters and evidences of \Bilge dumping".
    [Show full text]
  • Simula Mother Tongue for a Generation of Nordic Programmers
    Simula! Mother Tongue! for a Generation of! Nordic Programmers! Yngve Sundblad HCI, CSC, KTH! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Inspired by Ole-Johan Dahl, 1931-2002, and Kristen Nygaard, 1926-2002" “From the cold waters of Norway comes Object-Oriented Programming” " (first line in Bertrand Meyer#s widely used text book Object Oriented Software Construction) ! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Simula concepts 1967" •# Class of similar Objects (in Simula declaration of CLASS with data and actions)! •# Objects created as Instances of a Class (in Simula NEW object of class)! •# Data attributes of a class (in Simula type declared as parameters or internal)! •# Method attributes are patterns of action (PROCEDURE)! •# Message passing, calls of methods (in Simula dot-notation)! •# Subclasses that inherit from superclasses! •# Polymorphism with several subclasses to a superclass! •# Co-routines (in Simula Detach – Resume)! •# Encapsulation of data supporting abstractions! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Simula example BEGIN! REF(taxi) t;" CLASS taxi(n); INTEGER n;! BEGIN ! INTEGER pax;" PROCEDURE book;" IF pax<n THEN pax:=pax+1;! pax:=n;" END of taxi;! t:-NEW taxi(5);" t.book; t.book;" print(t.pax)" END! Output: 7 ! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad!
    [Show full text]
  • Submission Data for 2020-2021 CORE Conference Ranking Process International Symposium on Formal Methods (Was Formal Methods Europe FME)
    Submission Data for 2020-2021 CORE conference Ranking process International Symposium on Formal Methods (was Formal Methods Europe FME) Ana Cavalcanti, Stefania Gnesi, Lars-Henrik Eriksson, Nico Plat, Einar Broch Johnsen, Maurice ter Beek Conference Details Conference Title: International Symposium on Formal Methods (was Formal Methods Europe FME) Acronym : FM Rank: A Data and Metrics Google Scholar Metrics sub-category url: https://scholar.google.com.au/citations?view_op=top_venues&hl=en&vq=eng_theoreticalcomputerscienceposition in sub-category: 20+Image of top 20: ACM Metrics Not Sponsored by ACM Aminer Rank 1 Aminer Rank: 28Name in Aminer: World Congress on Formal MethodsAcronym or Shorthand: FMh-5 Index: 17CCF: BTHU: âĂŞ Top Aminer Cites: http://portal.core.edu.au/core/media/conf_submissions_citations/extra_info1804_aminer_top_cite.png Other Rankings Not aware of any other Rankings Conferences in area: 1. Formal Methods Symposium (FM) 2. Software Engineering and Formal Methods (SEFM), Integrated Formal Methods (IFM) 3. Fundamental Approaches to Software Engineering (FASE), NASA Formal Methods (NFM), Runtime Verification (RV) 4. Formal Aspects of Component Software (FACS), Automated Technology for Verification and Analysis (ATVA) 5. International Conference on Formal Engineering Methods (ICFEM), FormaliSE, Formal Methods in Computer-Aided Design (FMCAD), Formal Methods for Industrial Critical Systems (FMICS) 6. Brazilian Symposium on Formal Methods (SBMF), Theoretical Aspects of Software Engineering (TASE) 7. International Symposium On Leveraging Applications of Formal Methods, Verification and Validation (ISoLA) Top People Publishing Here name: Frank de Boer justification: h-index: 42 ( https://www.cwi.nl/people/frank-de-boer) Frank S. de Boer is senior researcher at the CWI, where he leads the research group on Formal Methods, and Professor of Software Correctness at Leiden University, The Netherlands.
    [Show full text]
  • The Standard Model for Programming Languages: the Birth of A
    The Standard Model for Programming Languages: The Birth of a Mathematical Theory of Computation Simone Martini Department of Computer Science and Engineering, University of Bologna, Italy INRIA, Sophia-Antipolis, Valbonne, France http://www.cs.unibo.it/~martini [email protected] Abstract Despite the insight of some of the pioneers (Turing, von Neumann, Curry, Böhm), programming the early computers was a matter of fiddling with small architecture-dependent details. Only in the sixties some form of “mathematical program development” will be in the agenda of some of the most influential players of that time. A “Mathematical Theory of Computation” is the name chosen by John McCarthy for his approach, which uses a class of recursively computable functions as an (extensional) model of a class of programs. It is the beginning of that grand endeavour to present programming as a mathematical activity, and reasoning on programs as a form of mathematical logic. An important part of this process is the standard model of programming languages – the informal assumption that the meaning of programs should be understood on an abstract machine with unbounded resources, and with true arithmetic. We present some crucial moments of this story, concluding with the emergence, in the seventies, of the need of more “intensional” semantics, like the sequential algorithms on concrete data structures. The paper is a small step of a larger project – reflecting and tracing the interaction between mathematical logic and programming (languages), identifying some
    [Show full text]
  • Compsci 6 Programming Design and Analysis
    CompSci 6 Programming Design and Analysis Robert C. Duvall http://www.cs.duke.edu/courses/cps006/fall04 http://www.cs.duke.edu/~rcd CompSci 6 : Spring 2005 1.1 What is Computer Science? Computer science is no more about computers than astronomy is about telescopes. Edsger Dijkstra Computer science is not as old as physics; it lags by a couple of hundred years. However, this does not mean that there is significantly less on the computer scientist's plate than on the physicist's: younger it may be, but it has had a far more intense upbringing! Richard Feynman http://www.wordiq.com CompSci 6 : Spring 2005 1.2 Scientists and Engineers Scientists build to learn, engineers learn to build – Fred Brooks CompSci 6 : Spring 2005 1.3 Computer Science and Programming Computer Science is more than programming The discipline is called informatics in many countries Elements of both science and engineering Elements of mathematics, physics, cognitive science, music, art, and many other fields Computer Science is a young discipline Fiftieth anniversary in 1997, but closer to forty years of research and development First graduate program at CMU (then Carnegie Tech) in 1965 To some programming is an art, to others a science, to others an engineering discipline CompSci 6 : Spring 2005 1.4 What is Computer Science? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread which gathers these disparate branches into a single discipline? My answer to these questions is simple --- it is the art of programming a computer.
    [Show full text]
  • The Space and Motion of Communicating Agents
    The space and motion of communicating agents Robin Milner December 1, 2008 ii to my family: Lucy, Barney, Chloe,¨ and in memory of Gabriel iv Contents Prologue vii Part I : Space 1 1 The idea of bigraphs 3 2 Defining bigraphs 15 2.1 Bigraphsandtheirassembly . 15 2.2 Mathematicalframework . 19 2.3 Bigraphicalcategories . 24 3 Algebra for bigraphs 27 3.1 Elementarybigraphsandnormalforms. 27 3.2 Derivedoperations ........................... 31 4 Relative and minimal bounds 37 5 Bigraphical structure 43 5.1 RPOsforbigraphs............................ 43 5.2 IPOsinbigraphs ............................ 48 5.3 AbstractbigraphslackRPOs . 53 6 Sorting 55 6.1 PlacesortingandCCS ......................... 55 6.2 Linksorting,arithmeticnetsandPetrinets . ..... 60 6.3 Theimpactofsorting .......................... 64 Part II : Motion 66 7 Reactions and transitions 67 7.1 Reactivesystems ............................ 68 7.2 Transitionsystems ........................... 71 7.3 Subtransitionsystems .. .... ... .... .... .... .... 76 v vi CONTENTS 7.4 Abstracttransitionsystems . 77 8 Bigraphical reactive systems 81 8.1 DynamicsforaBRS .......................... 82 8.2 DynamicsforaniceBRS.... ... .... .... .... ... .. 87 9 Behaviour in link graphs 93 9.1 Arithmeticnets ............................. 93 9.2 Condition-eventnets .. .... ... .... .... .... ... .. 95 10 Behavioural theory for CCS 103 10.1 SyntaxandreactionsforCCSinbigraphs . 103 10.2 TransitionsforCCSinbigraphs . 107 Part III : Development 113 11 Further topics 115 11.1Tracking................................
    [Show full text]
  • The Origins of Structural Operational Semantics
    The Origins of Structural Operational Semantics Gordon D. Plotkin Laboratory for Foundations of Computer Science, School of Informatics, University of Edinburgh, King’s Buildings, Edinburgh EH9 3JZ, Scotland I am delighted to see my Aarhus notes [59] on SOS, Structural Operational Semantics, published as part of this special issue. The notes already contain some historical remarks, but the reader may be interested to know more of the personal intellectual context in which they arose. I must straightaway admit that at this distance in time I do not claim total accuracy or completeness: what I write should rather be considered as a reconstruction, based on (possibly faulty) memory, papers, old notes and consultations with colleagues. As a postgraduate I learnt the untyped λ-calculus from Rod Burstall. I was further deeply impressed by the work of Peter Landin on the semantics of pro- gramming languages [34–37] which includes his abstract SECD machine. One should also single out John McCarthy’s contributions [45–48], which include his 1962 introduction of abstract syntax, an essential tool, then and since, for all approaches to the semantics of programming languages. The IBM Vienna school [42, 41] were interested in specifying real programming languages, and, in particular, worked on an abstract interpreting machine for PL/I using VDL, their Vienna Definition Language; they were influenced by the ideas of McCarthy, Landin and Elgot [18]. I remember attending a seminar at Edinburgh where the intricacies of their PL/I abstract machine were explained. The states of these machines are tuples of various kinds of complex trees and there is also a stack of environments; the transition rules involve much tree traversal to access syntactical control points, handle jumps, and to manage concurrency.
    [Show full text]
  • Curriculum Vitae Thomas A
    Curriculum Vitae Thomas A. Henzinger February 6, 2021 Address IST Austria (Institute of Science and Technology Austria) Phone: +43 2243 9000 1033 Am Campus 1 Fax: +43 2243 9000 2000 A-3400 Klosterneuburg Email: [email protected] Austria Web: pub.ist.ac.at/~tah Research Mathematical logic, automata and game theory, models of computation. Analysis of reactive, stochastic, real-time, and hybrid systems. Formal software and hardware verification, especially model checking. Design and implementation of concurrent and embedded software. Executable modeling of biological systems. Education September 1991 Ph.D., Computer Science Stanford University July 1987 Dipl.-Ing., Computer Science Kepler University, Linz August 1986 M.S., Computer and Information Sciences University of Delaware Employment September 2009 President IST Austria April 2004 to Adjunct Professor, University of California, June 2011 Electrical Engineering and Computer Sciences Berkeley April 2004 to Professor, EPFL August 2009 Computer and Communication Sciences January 1999 to Director Max-Planck Institute March 2000 for Computer Science, Saarbr¨ucken July 1998 to Professor, University of California, March 2004 Electrical Engineering and Computer Sciences Berkeley July 1997 to Associate Professor, University of California, June 1998 Electrical Engineering and Computer Sciences Berkeley January 1996 to Assistant Professor, University of California, June 1997 Electrical Engineering and Computer Sciences Berkeley January 1992 to Assistant Professor, Cornell University December 1996 Computer Science October 1991 to Postdoctoral Scientist, Universit´eJoseph Fourier, December 1991 IMAG Laboratory Grenoble 1 Honors Member, US National Academy of Sciences, 2020. Member, American Academy of Arts and Sciences, 2020. ESWEEK (Embedded Systems Week) Test-of-Time Award, 2020. LICS (Logic in Computer Science) Test-of-Time Award, 2020.
    [Show full text]
  • Principles of Computer Science I
    Computer Science and Programming Principles of Computer Science is more than programming – The discipline is called informatics in many countries Computer Science I – Elements of both science and engineering • Scientists build to learn, engineers learn to build – Fred Brooks – Elements of mathematics, physics, cognitive science, music, art, and many other fields Computer Science is a young discipline – Fiftieth anniversary in 1997, but closer to forty years of Prof. Nadeem Abdul Hamid research and development CSC 120A - Fall 2004 – First graduate program at CMU (then Carnegie Tech) in Lecture Unit 1 1965 To some programming is an art, to others a science CSC 120A - Berry College - Fall 2004 2 What is Computer Science? CSC 120 - Course Mechanics Syllabus on Viking Web (Handouts section) What is it that distinguishes it from the Class Meetings separate subjects with which it is related? – Lectures: Mon/Wed/Fri, 10–10:50AM, SCI 107 What is the linking thread which gathers these – Labs: Thu, 2:45–4:45 PM, SCI 228 disparate branches into a single discipline? Contact My answer to these questions is simple --- it is – Office phone: (706) 368-5632 – Home phone: (706) 234-7211 the art of programming a computer. It is the art – Email: [email protected] of designing efficient and elegant methods of Office Hours: SCI 354B getting a computer to solve problems, – Mon 11-12:30, 2:30-4 theoretical or practical, small or large, simple – Tue 9-11, 2:30-4 or complex. – Wed 11-12:30 – Thu 9-11 C.A.R. (Tony) Hoare – (or by appt) CSC 120A - Berry College - Fall 2004 3 CSC 120A - Berry College - Fall 2004 4 CSC 120 – Keys to Success CSC 120 – Materials & Resources Start early; work steadily; don’t fall behind.
    [Show full text]
  • Purely Functional Data Structures
    Purely Functional Data Structures Chris Okasaki September 1996 CMU-CS-96-177 School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 Submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy. Thesis Committee: Peter Lee, Chair Robert Harper Daniel Sleator Robert Tarjan, Princeton University Copyright c 1996 Chris Okasaki This research was sponsored by the Advanced Research Projects Agency (ARPA) under Contract No. F19628- 95-C-0050. The views and conclusions contained in this document are those of the author and should not be interpreted as representing the official policies, either expressed or implied, of ARPA or the U.S. Government. Keywords: functional programming, data structures, lazy evaluation, amortization For Maria Abstract When a C programmer needs an efficient data structure for a particular prob- lem, he or she can often simply look one up in any of a number of good text- books or handbooks. Unfortunately, programmers in functional languages such as Standard ML or Haskell do not have this luxury. Although some data struc- tures designed for imperative languages such as C can be quite easily adapted to a functional setting, most cannot, usually because they depend in crucial ways on as- signments, which are disallowed, or at least discouraged, in functional languages. To address this imbalance, we describe several techniques for designing functional data structures, and numerous original data structures based on these techniques, including multiple variations of lists, queues, double-ended queues, and heaps, many supporting more exotic features such as random access or efficient catena- tion. In addition, we expose the fundamental role of lazy evaluation in amortized functional data structures.
    [Show full text]
  • Insight, Inspiration and Collaboration
    Chapter 1 Insight, inspiration and collaboration C. B. Jones, A. W. Roscoe Abstract Tony Hoare's many contributions to computing science are marked by insight that was grounded in practical programming. Many of his papers have had a profound impact on the evolution of our field; they have moreover provided a source of inspiration to several generations of researchers. We examine the development of his work through a review of the development of some of his most influential pieces of work such as Hoare logic, CSP and Unifying Theories. 1.1 Introduction To many who know Tony Hoare only through his publications, they must often look like polished gems that come from a mind that rarely makes false steps, nor even perhaps has to work at their creation. As so often, this impres- sion is a further compliment to someone who actually adds to very hard work and many discarded attempts the final polish that makes complex ideas rel- atively easy for the reader to comprehend. As indicated on page xi of [HJ89], his ideas typically go through many revisions. The two authors of the current paper each had the honour of Tony Hoare supervising their doctoral studies in Oxford. They know at first hand his kind and generous style and will count it as an achievement if this paper can convey something of the working style of someone big enough to eschew competition and point scoring. Indeed it will be apparent from the following sections how often, having started some new way of thinking or exciting ideas, he happily leaves their exploration and development to others.
    [Show full text]