Static and Dynamic Type Checking: A Synopsis. Ronald Garcia University of British Columbia

Size: px
Start display at page:

Download "Static and Dynamic Type Checking: A Synopsis. Ronald Garcia University of British Columbia"

Transcription

1 Static and Dynamic Type Checking: A Synopsis Ronald Garcia University of British Columbia 1

2 Trends in Functional Programming, Volume 8 Selected papers from the Eighth Symposium on Trends in Functional Programming (TFP07), New York City, USA, April 2-4, Marco T. Morazán (editor) Intellect, Bristol, UK. ISBN Table of Contents Space-Efficient Gradual Typing 1-18 Best Student David Herman and Aaron Tomb and Cormac Flanagan Paper A Metalanguage for Structural Operational Semantics Matthew Lakin and Andrew Pitts AHA: Amortized Heap Space Usage Analysis Marko van Eekelen and Olha Shkaravska and Ron van Kesteren and Bart Jacobs and Erik Poll and Sjaak Smetsers Unifying Hybrid Types and Contracts Jessica Gronski and Cormac Flanagan 2

3 Trends in Functional Programming, Volume 8 Selected papers from the Eighth Symposium on Trends in Functional Programming (TFP07), New York City, USA, April 2-4, Marco T. Morazán (editor) Intellect, Bristol, UK. ISBN Table of Contents Space-Efficient Gradual Typing 1-18 Best Student David Herman and Aaron Tomb and Cormac Flanagan Paper A Metalanguage for Structural Operational Semantics Matthew Lakin and Andrew Pitts AHA: Amortized Heap Space Usage Analysis Marko van Eekelen and Olha Shkaravska and Ron van Kesteren and Bart Jacobs and Erik Poll and Sjaak Smetsers Unifying Hybrid Types and Contracts Jessica Gronski and Cormac Flanagan 3

4 Trends in Functional Programming, Volume 8 Selected papers from the Eighth Symposium on Trends in Functional Programming (TFP07), New York City, USA, April 2-4, Marco T. Morazán (editor) Intellect, Bristol, UK. ISBN Table of Contents Space-Efficient Gradual Typing 1-18 Best Student David Herman and Aaron Tomb and Cormac Flanagan Paper A Metalanguage for Structural Operational Semantics Matthew Lakin and Andrew Pitts AHA: Amortized Heap Space Usage Analysis Marko van Eekelen and Olha Shkaravska and Ron van Kesteren and Bart Jacobs and Erik Poll and Sjaak Smetsers Unifying Hybrid Types and Contracts Jessica Gronski and Cormac Flanagan 4

5 Gradual Typing Static Checking: (Robustness) Dynamic Checking: (Agility) Complementary Disciplines 5

6 Typing, Gradually struct Point { x } fun move(p, dx) { } Point(p.x + dx) let a = 1 p = Point(7) in move(p,a) 6

7 Typing, Gradually struct Point { x : int } fun move(p, dx) { } Point(p.x + dx) let a = 1 p = Point(7) in move(p,a) 7

8 Typing, Gradually struct Point { x : int } fun move(p : Point, dx) { } Point(p.x + dx) let a = 1 p = Point(7) in move(p,a) 8

9 Typing, Gradually struct Point { x : int } fun move(p : Point, dx : int) { Point(p.x + dx) } More Annotations let a : int = 1 p : Point = Point(7) in move(p,a) = More Static Checks! 9

10 Typing, Gradually if (SomethingTrue()) { x = 7.0 } else { x = Good Grief! } y = sqrt(x) Flexibility On Demand! 10

11 Static Languages Recurring Trend Dynamic Languages Haskell 11 Scheme

12 Static Languages Recurring Trend Dynamic Languages DLR DuctileJ Haskell Deferred Type Errors 12 Racket Scheme

13 Facebook wanted its coders to keep moving fast in the comfort of their native tongue, but it didn t want them to have to break things as they did it. James Somers, Toolkits for the Mind Technology Review, April 2, 2015

14 Why would I want to use it? When you re prototyping, you may not want the compiler bothering you about broken code that you don t care about. Or you may want to use duck typing while you re fleshing out the design of your interfaces DuctileJ homepage DuctileJ

15 Lots of Theories Hybrid Type Checking Dynamic typing: Quasi-static Typing Gradual Typing 15

16 Lots of Theories Hybrid Type Checking Dynamic typing: Quasi-static Typing Gradual Typing 16

17 Synopsis 17

18 Synopsis Levels of Reading: Elementary Inspectional Analytical Synoptical 18

19 Synopsis The difficulty begins as soon as we examine the phrase two or more books on the same subject. 19

20 Synopsis The difficulty begins as soon as we examine the phrase two or more books on the same subject. What do we mean by same subject? 20

21 Structure of the Talk Synopsis: Dynamic and Static Type Checking Focus: Gradual Information-Flow Typing 21

22 1: Which Comes First?! 22

23 A Theory of Type Polymorphism in Programming ROBIN MILNER Computer Science Department, Vm+ersity of Edinburgh, Edinburgh, Scotland Received October 10, 1977; revised April 19,

24 A Theory of Type Polymorphism e..- a*- x I(ee )l ife then e else e 1 Ax-eIfixx*ejletx=eine. b[(e,e,)]v = vl E F -+ (vz E W - wrong, (q I F)v,), wrong where vi is 6[e& (i = 1, 2). a[$ e, then e2 else e,]r] = vl E B, -+ (vl 1 B, -+ v2, vj, wrong where vi is &[e& (i = 1, 2, 3) S@X. en7 = (A0. S/p] 77(2)/x)) in V &jj-ji~ x - e]7j = Y(hv - b~el7){7$}) b[zet x = e, in e,jq = v1 E W-+ wrong, b[e2] 7.1&/x} where q = &[e&. 24

25 A Theory of Type Polymorphism e..- a*- x I(ee )l ife then e else e 1 Ax-eIfixx*ejletx=eine. b[(e,e,)]v = vl E F -+ (vz E W - wrong, (q I F)v,), wrong where vi is 6[e& (i = 1, 2). a[$ e, then e2 else e,]r] = vl E B, -+ (vl 1 B, -+ v2, vj, wrong where vi is &[e& (i = 1, 2, 3) S@X. en7 = (A0. S/p] 77(2)/x)) in V &jj-ji~ x - e]7j = Y(hv - b~el7){7$}) b[zet x = e, in e,jq = v1 E W-+ wrong, b[e2] 7.1&/x} where q = &[e&. Starts with a Dynamic Language! 25

26 A Theory of Type Polymorphism discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If = : and ` t : T then = ˆ (t) :T. 26

27 A Theory of Type Polymorphism discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If = : and ` t : T then = ˆ (t) :T. i.e., If ` t : T then = t : T. 27

28 A Theory of Type Polymorphism discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If = : and ` t : T then = ˆ (t) :T. i.e., If ` t : T then = t : T. Proof Theory BNF on steroids 28

29 A Theory of Type Polymorphism discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If = : and ` t : T then = ˆ (t) :T. i.e., If ` t : T then = t : T. Formal claim about Execution Model Theory 29

30 1996 John C. Mitchell 30

31 1996 John C. Mitchell 31

32 1993 (née 1969) 32

33 What do types mean? - From intrinsic to extrinsic semantics Jobn C. Reynolds 2003 [[D :: ` t : T ]] [[t]] Intrinsic Semantics Extrinsic Semantics 33

34 2: Mixing Static and Dynamic Checking! 34

35 PLDI 1991 A Practical Soft Type System for Scheme ANDREW K. WRIGHT NEC Research Institute and ROBERT CARTWRIGHT Rice University TOPLAS

36 Soft Typing Extend Milner 1978 with: constructor types bare union types equi-recursive types union-induced subtyping 36

37 Soft Typing Program Type-Directed Coercion Insertion Dynamic Program 1991: Extrinsic, Denotational 1997: Intrinsic Operational 37

38 Quasi-static (Preliminary Typing Report) Satish R. Thatte* Department of Mathematics and Computer Science Clarkson University, Potsdam, NY POPL 1990 sarily goes wrong at run-time. Given the undecidability of semantically complete typechecking for most languages, a system that permits ill-typing proofs has to make a three way division of programs into welltyped, ill-typed, and ambivalent ones. Such a system 38

39 Quasi-static Typing Lack of Information Type T<: All types are a subtypes of the Omega type r 5 R. 39

40 Quasi-static Typing ` t 1 : T 1! T 2 ` t 2 : T 3 T 1 <: T 3 ` t 1 t 2 : T 2 ` t 1 : ` t 2 : T 3 ` t 1 t 2 : Automatic Downcasts 40

41 Quasi-static Typing ` t 1 : T 1! T 2 ` t 2 : T 3 T 1 <: T 3 ` t 1 t 2 : T 2 ` t 1 : ` t 2 : T 3 [T 3! <: ] ` t 1 t 2 : Automatic Downcasts 41

42 Quasi-static Typing ` t 1 : T 1! T 2 ` t 2 : T 3 T 1 <: T 3 ` t 1 t 2 : T 2 ` t 1 : ` t 2 : T 3 [T 3! <: ] ` t 1 t 2 : Automatic Downcasts (Nearly) Every Program Type Checks 42

43 Quasi-Static Typing Program Type-Directed Coercion Insertion Dynamic Program Plausibility Checking Quasi-Static Program Type Error! 43

44 Hybrid Type Checking KENNETH KNOWLES CORMAC FLANAGAN University of California at Santa Cruz POPL 2006, TOPLAS 2009 Ill-typed programs Well-typed programs Clearly ill-typed Subtle programs Clearly well-typed Rejected by type checker Accepted Accepted without casts with casts Casts Casts may never fail fail 44

45 Hybrid Type Checking h i S, T ::= x:s! T {x:b t} First-order Subset Types First-Order Type Boolean Term 45

46 Hybrid Type Checking h i S, T ::= x:s! T {x:b t} Dependent Function Types 46

47 Hybrid Type Checking ` { } Subtyping E ` S<: T E ` T 1 <: S 1 E,x : T 1 ` S 2 <: T 2 E ` (x:s 1! S 2 ) <: (x:t 1! T 2 ) E,x : B ` s ) t E ` {x:b s} <: {x:b t} [S-Arrow] [S-Base] Boolean Term Entailment Undecidable Subtyping Judgment 47

48 Hybrid Type Checking 3-valued Subtyping Procedure E `aalg S<:! T a 2 { p,,?} { } Yes No Maybe 48

49 Hybrid Type Checking Program Type-Directed Coercion Insertion Hybrid Program `! # E ` s,! t : S E `?alg S<: T E ` s,! ht / Si t # T 49

50 Gradual Typing for Functional Languages Jeremy G. Siek University of Colorado Walid Taha Rice University 50

51 Gradual Typing for Functional Languages Jeremy G. Siek University of Colorado Walid Taha Rice University Static Types Gradual Types T ::= B T! T et ::= B? e T! e T 51 The Unknown Type

52 Gradual Typing static type equality Int = Int Bool = Bool Int! Bool 6= Bool! Int extend gradual type consistency Int Int Bool Bool Int! Bool 6 Bool! Int? Bool?! Bool Bool!? Consistency conservatively extends equality 52

53 Gradual Typing replace equality with consistency ` t 1 : Int ` t 2 : Int ` t 1 + t 2 : Int ` t 1 : T f 1 T1 f Int ` t 2 : T f 2 T2 f Int ` t 1 + t 2 : Int 53

54 Dynamic Checking Static Semantics Gradual Language Type-Directed Translation Dynamic Semantics Cast Language 54

55 Many Many More! 55

56 Synthesis Intrinsic vs. Extrinsic Typing Accept All Programs vs. Reject Ill-Typed Type-directed Translation is Ubiquitous Subtyping vs. Consistency Dynamic, Simple, Refinement Typing It s all relative! 56

57 3: Gradual Information-Flow Typing!! sec 57

58 erating tems R.S. Gaines Editor A Lattice Model of ecure Information low rothy E. Denning rdue University [CACM 1976] 58

59 Security as a Lattice Classification Permitted Readers Zdancewic. Programming Languages for Information Security 59

60 Security as a Lattice Low-security information may flow to high-security contexts Zdancewic. Programming Languages for Information Security 60

61 Security as a Lattice High-security information may not flow to low-security contexts Zdancewic. Programming Languages for Information Security 61

62 Example let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) Disney and Flanagan. Gradual Information Flow Typing 62

63 Example Low Security Data let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) Disney and Flanagan. Gradual Information Flow Typing 63

64 Example Low Security Data let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) High Security Data Disney and Flanagan. Gradual Information Flow Typing 64

65 Example Low Security Data let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) High Security Data Low Security Channel Disney and Flanagan. Gradual Information Flow Typing 65

66 Example Low Security Data let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) High Security Data Low Security Channel Security Leak!! Unchecked Semantic Error Disney and Flanagan. Gradual Information Flow Typing 66

67 Security Typing Int! Int Simple Type Structure 67

68 Security Typing Higher Security Lower Security Int H! L Int H Security-Indexed Type Constructors 68

69 Security Typing Higher Security Lower Security Int L <: Int H Int H! L Int L <: Int L! H Int H Induced Subtyping Structure 69

70 Example let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) Security Leak!! Unchecked Semantic Error Disney and Flanagan. Gradual Information Flow Typing 70

71 Example let age : IntL = 31 let salary : IntH = let inttostring : IntL!L StringL =... let print : StringL!L UnitL =... print(inttostring(salary)) Type Error Checked Semantic Error Disney and Flanagan. Gradual Information Flow Typing 71

72 Example let age : IntL = 31 let salary : IntH = let inttostring : IntL!L StringL =... let print : StringL!L UnitL =... print(inttostring(age)) Security Typed Disney and Flanagan. Gradual Information Flow Typing 72

73 Implicit Security Flows High-Security information can affect the control flow of a program, and thereby leak information. Upgrade the security of the results of high-value computations. 73

74 Implicit Security Flows fun b : BoolH => let tt : BoolL = true let ff : BoolL = false if b then tt else ff High-Security data can affect control flow of a program 74

75 Effects Can Leak Information High-Security values can flow from a computation via mutable reference cells 75

76 Security Typing Int H! L Int H ; ` t : S 76

77 Security Typing Int H L!L Int H ; ; ` ` t : S Latent Security Effects 77

78 Security Typing Gap Simple Typing Security Typing 78

79 Security Typing Gap Simple Typing + Dynamic Information-Flow Security Typing 79

80 Gradual Typing! Simple Typing Gradual Information Flow Typing Tim Disney and Cormac Flanagan University of California Santa Cruz Security Typing [STOP 2011] 80

81 Security Lattice 81

82 Security Lattice Dynamic Security as Top 82

83 Example let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) Disney and Flanagan. Gradual Information Flow Typing 83

84 Dynamic Program let age : Int? = 31 let salary : Int? = let inttostring : Int?!? String? =... let print : String?!? Unit? =... print(inttostring(salary)) Disney and Flanagan. Gradual Information Flow Typing 84

85 Gradual Program let age : Int? = 31 let salary : IntH = let inttostring : Int?!? String? =... let print : StringL!? Unit? =... print((stringl)inttostring(salary)) Disney and Flanagan. Gradual Information Flow Typing 85

86 Gradual Program let age : Int? = 31 let salary : IntH = let inttostring : Int?!? String? =... let print : StringL!? Unit? =... print((stringl)inttostring(salary)) Static Security Labels Disney and Flanagan. Gradual Information Flow Typing 86

87 Gradual Program let age : Int? = 31 let salary : IntH = let inttostring : Int?!? String? =... let print : StringL!? Unit? =... print((stringl)inttostring(salary)) Explicit Runtime Downcasts closer to Quasi-static than Gradual Disney and Flanagan. Gradual Information Flow Typing 87

88 Quasi-Static Style Program Type-Directed Coercion Insertion Dynamic Program Plausibility Checking Quasi-Static Program Type Error! 88

89 Gradual Information Flow Me Éric Tanter Matías Toro (A Whirlwind Tour) 89

90 static type system & type safety proof interpretation of gradual types Abstracting Gradual Typing Ronald Garcia Alison M. Clark Software Practices Lab Department of Computer Science University of British Columbia, Canada Éric Tanter PLEIAD Laboratory Computer Science Department (DCC) University of Chile, Chile POPL 2016 gradual language TYPE SYSTEM DYNAMIC SEMANTICS 90

91 Gradual Security ` 2 Label è 2 GLabel ::= `? Unknown Label 91

92 Interpret Gradual Labels : GLabel! P(Label) (L) ={L} (H) ={H} (?) = Label Concretization 92

93 Interpret Gradual Labels : GLabel! P(Label) (L) =L (H) =H (?) = Label : P(Label) * GLabel ({L}) =L ({L, H}) =? Abstraction 93

94 Gradual Label Precision e l v e l 94

95 Gradual Label Precision e l v e l ( e l 1 ) ( e l 2 ) 95

96 Consistent Ordering e l e4 e l l 1 4 l 2 for some l 1 2 ( e l 1 ),l 1 2 ( e l 1 ) 96

97 Consistent Ordering L e4 H L 6e4 H L e4 L? e4 L L e4? Not really an order 97

98 Lifted Join e l e e l ( ( e l 1 ) ( e l 2 )) 98

99 Lifted Join L e H = H H e H = H? e H =? 99

100 Interpret Gradual Types : GType! P(Type) (Int? )={Int?, Int L, Int H, Int > } Concretization 100

101 Interpret Gradual Types : GType! P(Type) (Int? )={Int?, Int L, Int H, Int > } : P(Type) * GType ({Int L })=Int L ({Int L, Int H })=Int? Abstraction 101

102 Lifting Judgments Subtyping T<: T Consistent Subtyping et. e T 102

103 Lifting Typing Rules `0 ; ; `c ` t 1 : T 11 T!`x 12 ; ; `c ` t 2 : T 2 S 2 <: S 11 `c `x 4 `0 ; ; `c ` t 1 t 2 : T 12 `x ; ; è c ` et 1 : T e è0 11 T!`x 12 ; ; è c ` et 2 : T e 2 et 2. e T 11 èc ; ; è c ` et 1 et 2 : e T 12 e è x ^è x v è0 103

104 Lift Type Safety Argument D =) D 0 ` t : T t 7! t 0 Preservation Theorem 104 ` t 0 : T

105 Gradual Program let age : Int? = 31 let salary : IntH = let inttostring : Int?!? String? =... let print : StringL!? Unit? =... print((stringl)inttostring(salary)) No Casts Necessary! Disney and Flanagan. Gradual Information Flow Typing 105

106 106

107 Conclusion Hybrid Type Checking Dynamic typing: Quasi-static Typing Gradual Typing 107

108 Conclusion Hybrid Type Checking Dynamic typing: Quasi-static Typing Gradual Typing 108

109 Synopsis it is in a sense true that the identification of the subject matter must follow the reading, not precede it. 109

The gradual typing approach to mixing static and dynamic typing

The gradual typing approach to mixing static and dynamic typing 1/38 The gradual typing approach to mixing static and dynamic typing Jeremy G. Siek University of Colorado =) Indiana University TFP 2013 at Provo, Utah, May 2013 The Goals of Gradual Typing I Enjoy the

More information

Well-typed programs can t be blamed

Well-typed programs can t be blamed Well-typed programs can t be blamed Philip Wadler University of Edinburgh Robert Bruce Findler University of Chicago Abstract We introduce the blame calculus, which adds the notion of blame from Findler

More information

Hybrid Type Checking

Hybrid Type Checking Hybrid Type Checking Cormac Flanagan Department of Computer Science University of California, Santa Cruz cormac@cs.ucsc.edu Abstract Traditional static type systems are very effective for verifying basic

More information

Sage: Unified Hybrid Checking for First-Class Types, General Refinement Types, and Dynamic (Extended Report)

Sage: Unified Hybrid Checking for First-Class Types, General Refinement Types, and Dynamic (Extended Report) Sage: Unified Hybrid Checking for First-Class Types, General Refinement Types, and Dynamic (Extended Report) Kenneth Knowles Aaron Tomb Jessica Gronski Stephen N. Freund Cormac Flanagan University of California,

More information

Semester Review. CSC 301, Fall 2015

Semester Review. CSC 301, Fall 2015 Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!

More information

Lecture 18-19 Data Types and Types of a Language

Lecture 18-19 Data Types and Types of a Language Lecture 18-19 Data Types and Types of a Language April 29, 2014 Data Types and Types of a Language Data, Data Types and Types Type: Generalities Type Systems and Type Safety Type Equivalence, Coercion

More information

Types, Polymorphism, and Type Reconstruction

Types, Polymorphism, and Type Reconstruction Types, Polymorphism, and Type Reconstruction Sources This material is based on the following sources: Pierce, B.C., Types and Programming Languages. MIT Press, 2002. Kanellakis, P.C., Mairson, H.G. and

More information

A Type System for Data-Flow Integrity on Windows Vista

A Type System for Data-Flow Integrity on Windows Vista A Type System for Data-Flow Integrity on Windows Vista Avik Chaudhuri University of California at Santa Cruz avik@cs.ucsc.edu Prasad Naldurg Sriram Rajamani Microsoft Research India {prasadn,sriram}@microsoft.com

More information

POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful

POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: ralf@cs.uu.nl Homepage: http://www.cs.uu.nl/~ralf/

More information

Integrating Typed and Untyped Code in a Scripting Language

Integrating Typed and Untyped Code in a Scripting Language Integrating Typed and Untyped Code in a Scripting Language Tobias Wrigstad Francesco Zappa Nardelli Sylvain Lebresne Johan Östlund Jan Vitek PURDUE UNIVERSITY INRIA Abstract Many large software systems

More information

Hybrid Types, Invariants, and Refinements For Imperative Objects

Hybrid Types, Invariants, and Refinements For Imperative Objects Hybrid Types, Invariants, and Refinements For Imperative Objects Cormac Flanagan Department of Computer Science University of California, Santa Cruz Stephen N. Freund Department of Computer Science Williams

More information

A SOUND TYPE SYSTEM FOR SECURE FLOW ANALYSIS

A SOUND TYPE SYSTEM FOR SECURE FLOW ANALYSIS Journal of Computer Security draft printout, (17 Sep 2009), 1 20 IOS Press 1 A SOUND TYPE SYSTEM FOR SECURE FLOW ANALYSIS Dennis Volpano Computer Science Department Naval Postgraduate School Monterey,

More information

Semantic Analysis: Types and Type Checking

Semantic Analysis: Types and Type Checking Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors

More information

Functional Programming. Functional Programming Languages. Chapter 14. Introduction

Functional Programming. Functional Programming Languages. Chapter 14. Introduction Functional Programming Languages Chapter 14 Introduction Functional programming paradigm History Features and concepts Examples: Lisp ML 1 2 Functional Programming Functional Programming Languages The

More information

Lab Experience 17. Programming Language Translation

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

More information

Harmless Advice. Daniel S Dantas Princeton University. with David Walker

Harmless Advice. Daniel S Dantas Princeton University. with David Walker Harmless Advice Daniel S Dantas Princeton University with David Walker Aspect Oriented Programming Aspect Oriented Programming IBM - 2004 IBM reports positive results in aspect-oriented programming experiments

More information

CS-XXX: Graduate Programming Languages. Lecture 25 Multiple Inheritance and Interfaces. Dan Grossman 2012

CS-XXX: Graduate Programming Languages. Lecture 25 Multiple Inheritance and Interfaces. Dan Grossman 2012 CS-XXX: Graduate Programming Languages Lecture 25 Multiple Inheritance and Interfaces Dan Grossman 2012 Multiple Inheritance Why not allow class C extends C1,C2,...{...} (and C C1 and C C2)? What everyone

More information

Journal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML

Journal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML Journal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML Xavier Leroy École Normale Supérieure Michel Mauny INRIA Rocquencourt Abstract Objects with dynamic types allow the integration

More information

Programming Languages Featherweight Java David Walker

Programming Languages Featherweight Java David Walker Programming Languages Featherweight Java David Walker Overview Featherweight Java (FJ), a minimal Javalike language. Models inheritance and subtyping. Immutable objects: no mutation of fields. Trivialized

More information

Class 16: Function Parameters and Polymorphism

Class 16: Function Parameters and Polymorphism Class 16: Function Parameters and Polymorphism SI 413 - Programming Languages and Implementation Dr. Daniel S. Roche United States Naval Academy Fall 2011 Roche (USNA) SI413 - Class 16 Fall 2011 1 / 15

More information

Aspect-Oriented Programming with Type Classes

Aspect-Oriented Programming with Type Classes Aspect-Oriented Programming with Type Classes Martin Sulzmann School of Computing, National University of Singapore S16 Level 5, 3 Science Drive 2, Singapore 117543 sulzmann@comp.nus.edu.sg Meng Wang School

More information

Visualizing Information Flow through C Programs

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

More information

Organization of DSLE part. Overview of DSLE. Model driven software engineering. Engineering. Tooling. Topics:

Organization of DSLE part. Overview of DSLE. Model driven software engineering. Engineering. Tooling. Topics: Organization of DSLE part Domain Specific Language Engineering Tooling Eclipse plus EMF Xtext, Xtend, Xpand, QVTo and ATL Prof.dr. Mark van den Brand GLT 2010/11 Topics: Meta-modeling Model transformations

More information

Deterministic Discrete Modeling

Deterministic Discrete Modeling Deterministic Discrete Modeling Formal Semantics of Firewalls in Isabelle/HOL Cornelius Diekmann, M.Sc. Dr. Heiko Niedermayer Prof. Dr.-Ing. Georg Carle Lehrstuhl für Netzarchitekturen und Netzdienste

More information

Introduction to type systems

Introduction to type systems Introduction to type systems p. 1/5 Introductory Course on Logic and Automata Theory Introduction to type systems Polyvios.Pratikakis@imag.fr Based on slides by Jeff Foster, UMD Introduction to type systems

More information

Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland

Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland Software Testing & Analysis (F22ST3) Static Analysis Techniques Andrew Ireland School of Mathematical and Computer Science Heriot-Watt University Edinburgh Software Testing & Analysis (F22ST3): Static

More information

Formal Languages and Automata Theory - Regular Expressions and Finite Automata -

Formal Languages and Automata Theory - Regular Expressions and Finite Automata - Formal Languages and Automata Theory - Regular Expressions and Finite Automata - Samarjit Chakraborty Computer Engineering and Networks Laboratory Swiss Federal Institute of Technology (ETH) Zürich March

More information

Moving from CS 61A Scheme to CS 61B Java

Moving from CS 61A Scheme to CS 61B Java Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you

More information

Chapter 5 Names, Bindings, Type Checking, and Scopes

Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named

More information

Typed Lua: An Optional Type System for Lua

Typed Lua: An Optional Type System for Lua Typed Lua: An Optional Type System for Lua André Murbach Maidl PUC-Rio Rio de Janeiro, Brazil amaidl@inf.puc-rio.br Fabio Mascarenhas UFRJ Rio de Janeiro, Brazil mascarenhas@ufrj.br Roberto Ierusalimschy

More information

Type Classes with Functional Dependencies

Type Classes with Functional Dependencies Appears in Proceedings of the 9th European Symposium on Programming, ESOP 2000, Berlin, Germany, March 2000, Springer-Verlag LNCS 1782. Type Classes with Functional Dependencies Mark P. Jones Department

More information

Main Question 1: How and where do you or your family use the Internet - whether on a computer or a cell phone? Follow up questions for INTERNET USERS

Main Question 1: How and where do you or your family use the Internet - whether on a computer or a cell phone? Follow up questions for INTERNET USERS TABLE 1: Current Internet use Main Question 1: How and where do you or your family use the Internet - whether on a computer or a cell phone? Follow up questions for INTERNET USERS 1. What do you use to

More information

15-150 Lecture 11: Tail Recursion; Continuations

15-150 Lecture 11: Tail Recursion; Continuations 15-150 Lecture 11: Tail Recursion; Continuations Lecture by Dan Licata February 21, 2011 In this lecture we will discuss space usage: analyzing the memory it takes your program to run tail calls and tail

More information

Beyond the Mouse A Short Course on Programming

Beyond the Mouse A Short Course on Programming 1 / 22 Beyond the Mouse A Short Course on Programming 2. Fundamental Programming Principles I: Variables and Data Types Ronni Grapenthin Geophysical Institute, University of Alaska Fairbanks September

More information

Programming Language Rankings. Lecture 15: Type Inference, polymorphism & Type Classes. Top Combined. Tiobe Index. CSC 131! Fall, 2014!

Programming Language Rankings. Lecture 15: Type Inference, polymorphism & Type Classes. Top Combined. Tiobe Index. CSC 131! Fall, 2014! Programming Language Rankings Lecture 15: Type Inference, polymorphism & Type Classes CSC 131 Fall, 2014 Kim Bruce Top Combined Tiobe Index 1. JavaScript (+1) 2. Java (-1) 3. PHP 4. C# (+2) 5. Python (-1)

More information

Sources: On the Web: Slides will be available on:

Sources: On the Web: Slides will be available on: C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,

More information

Adding GADTs to OCaml the direct approach

Adding GADTs to OCaml the direct approach Adding GADTs to OCaml the direct approach Jacques Garrigue & Jacques Le Normand Nagoya University / LexiFi (Paris) https://sites.google.com/site/ocamlgadt/ Garrigue & Le Normand Adding GADTs to OCaml 1

More information

LiveWeb Core Language for Web Applications. CITI Departamento de Informática FCT/UNL

LiveWeb Core Language for Web Applications. CITI Departamento de Informática FCT/UNL LiveWeb Core Language for Web Applications Miguel Domingues João Costa Seco CITI Departamento de Informática FCT/UNL Most Web Application Development is not Type Safe Heterogeneous development environments

More information

Introducing Formal Methods. Software Engineering and Formal Methods

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

More information

CHAPTER 7 GENERAL PROOF SYSTEMS

CHAPTER 7 GENERAL PROOF SYSTEMS CHAPTER 7 GENERAL PROOF SYSTEMS 1 Introduction Proof systems are built to prove statements. They can be thought as an inference machine with special statements, called provable statements, or sometimes

More information

Blame for All. Jeremy G. Siek. Amal Ahmed. Robert Bruce Findler. Philip Wadler. Abstract. 1. Introduction

Blame for All. Jeremy G. Siek. Amal Ahmed. Robert Bruce Findler. Philip Wadler. Abstract. 1. Introduction Blame for All Amal Ahmed Indiana University amal@cs.indiana.edu Robert Bruce Findler Northwestern University robby@eecs.northwestern.edu Jeremy G. Siek University of Colorado at Boulder jeremy.siek@colorado.edu

More information

Symbol Tables. Introduction

Symbol Tables. Introduction Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The

More information

Integrating Formal Models into the Programming Languages Course

Integrating Formal Models into the Programming Languages Course Integrating Formal Models into the Programming Languages Course Allen B. Tucker Robert E. Noonan Computer Science Department Computer Science Department Bowdoin College College of William and Mary Brunswick,

More information

Chapter 3. Cartesian Products and Relations. 3.1 Cartesian Products

Chapter 3. Cartesian Products and Relations. 3.1 Cartesian Products Chapter 3 Cartesian Products and Relations The material in this chapter is the first real encounter with abstraction. Relations are very general thing they are a special type of subset. After introducing

More information

Checks and Balances - Constraint Solving without Surprises in Object-Constraint Programming Languages

Checks and Balances - Constraint Solving without Surprises in Object-Constraint Programming Languages Checks and Balances - Constraint Solving without Surprises in Object-Constraint Programming Languages Tim Felgentreff, Todd Millstein, Alan Borning and Robert Hirschfeld Viewpoints Research Institute,

More information

Foundations of Access Control for Secure Storage

Foundations of Access Control for Secure Storage Foundations of Access Control for Secure Storage Thesis Proposal Avik Chaudhuri Computer Science Department University of California, Santa Cruz avik@cs.ucsc.edu Abstract Formal techniques have played

More information

opalang - Rapid & Secure Web Development

opalang - Rapid & Secure Web Development opalang - Rapid & Secure Web Development Syllabus Brief History of Web Development Ideas and Goals The Language itself Community Reason for Development Services and Apps written in OPA Future of OPA OPA

More information

UPDATES OF LOGIC PROGRAMS

UPDATES OF LOGIC PROGRAMS Computing and Informatics, Vol. 20, 2001,????, V 2006-Nov-6 UPDATES OF LOGIC PROGRAMS Ján Šefránek Department of Applied Informatics, Faculty of Mathematics, Physics and Informatics, Comenius University,

More information

Type Systems. Luca Cardelli. Microsoft Research

Type Systems. Luca Cardelli. Microsoft Research Type Systems Luca Cardelli Microsoft Research 1 Introduction The fundamental purpose of a type system is to prevent the occurrence of execution errors during the running of a program. This informal statement

More information

Program Analysis: Theory and Practice

Program Analysis: Theory and Practice Introductions Program Analysis: Theory and Practice Who am I? About you? What do you want to get out of this class? Evan Chang Meeting 1: Welcome CSCI 7135, Fall 2010 http://www.cs.colorado.edu/~bec/courses/csci7135-f10/

More information

PROGRAM LOGICS FOR CERTIFIED COMPILERS

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

More information

Computer Programming I

Computer Programming I Computer Programming I COP 2210 Syllabus Spring Semester 2012 Instructor: Greg Shaw Office: ECS 313 (Engineering and Computer Science Bldg) Office Hours: Tuesday: 2:50 4:50, 7:45 8:30 Thursday: 2:50 4:50,

More information

Security types to the rescue

Security types to the rescue Security types to the rescue p. 1 Security types to the rescue David Wagner and Rob Johnson {daw,rtjohnso}@cs.berkeley.edu University of California, Berkeley Security types to the rescue p. 2 Problem statement

More information

How To Write A Type System

How To Write A Type System Type Systems 1 Introduction Luca Cardelli Digital Equipment Corporation Systems Research Center The fundamental purpose of a type system is to prevent the occurrence of execution errors during the running

More information

Overview. Elements of Programming Languages. Advanced constructs. Motivating inner class example

Overview. Elements of Programming Languages. Advanced constructs. Motivating inner class example Overview Elements of Programming Languages Lecture 12: Object-oriented functional programming James Cheney University of Edinburgh November 6, 2015 We ve now covered: basics of functional and imperative

More information

Detecting Pattern-Match Failures in Haskell. Neil Mitchell and Colin Runciman York University www.cs.york.ac.uk/~ndm/catch

Detecting Pattern-Match Failures in Haskell. Neil Mitchell and Colin Runciman York University www.cs.york.ac.uk/~ndm/catch Detecting Pattern-Match Failures in Haskell Neil Mitchell and Colin Runciman York University www.cs.york.ac.uk/~ndm/catch Does this code crash? risers [] = [] risers [x] = [[x]] risers (x:y:etc) = if x

More information

Testing LTL Formula Translation into Büchi Automata

Testing LTL Formula Translation into Büchi Automata Testing LTL Formula Translation into Büchi Automata Heikki Tauriainen and Keijo Heljanko Helsinki University of Technology, Laboratory for Theoretical Computer Science, P. O. Box 5400, FIN-02015 HUT, Finland

More information

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,

More information

2! Multimedia Programming with! Python and SDL

2! Multimedia Programming with! Python and SDL 2 Multimedia Programming with Python and SDL 2.1 Introduction to Python 2.2 SDL/Pygame: Multimedia/Game Frameworks for Python Literature: G. van Rossum and F. L. Drake, Jr., An Introduction to Python -

More information

Object-Oriented Software Specification in Programming Language Design and Implementation

Object-Oriented Software Specification in Programming Language Design and Implementation Object-Oriented Software Specification in Programming Language Design and Implementation Barrett R. Bryant and Viswanathan Vaidyanathan Department of Computer and Information Sciences University of Alabama

More information

Regular Expressions and Automata using Haskell

Regular Expressions and Automata using Haskell Regular Expressions and Automata using Haskell Simon Thompson Computing Laboratory University of Kent at Canterbury January 2000 Contents 1 Introduction 2 2 Regular Expressions 2 3 Matching regular expressions

More information

Rigorous Software Development CSCI-GA 3033-009

Rigorous Software Development CSCI-GA 3033-009 Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 5 Disclaimer. These notes are derived from notes originally developed by Joseph Kiniry, Gary Leavens, Erik Poll,

More information

Java Interview Questions and Answers

Java Interview Questions and Answers 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java

More information

Chapter 7: Functional Programming Languages

Chapter 7: Functional Programming Languages Chapter 7: Functional Programming Languages Aarne Ranta Slides for the book Implementing Programming Languages. An Introduction to Compilers and Interpreters, College Publications, 2012. Fun: a language

More information

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

A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris

More information

Translating a Subset of OCaml into System F. Jonatha Protzenk under the dire ion of François Po ier

Translating a Subset of OCaml into System F. Jonatha Protzenk under the dire ion of François Po ier Translating a Subset of OCaml into System F Jonatha Protzenk under the dire ion of François Po ier June I Some background 1 Motivations Contents I Some background 2 1 Motivations 2 2 A high-level description

More information

Reasoning about Safety Critical Java

Reasoning about Safety Critical Java Reasoning about Safety Critical Java Chris Marriott 27 th January 2011 Motivation Safety critical systems are becoming part of everyday life Failure can potentially lead to serious consequences Verification

More information

Schema Mappings and Data Exchange

Schema Mappings and Data Exchange Schema Mappings and Data Exchange Phokion G. Kolaitis University of California, Santa Cruz & IBM Research-Almaden EASSLC 2012 Southwest University August 2012 1 Logic and Databases Extensive interaction

More information

Safe Locking for Multi-threaded Java

Safe Locking for Multi-threaded Java Safe Locking for Multi-threaded Java Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen University of Oslo, Norway NWPT 10 10-12 November, 2010 Motivation Concurrency control mechanisms

More information

Extraction of certified programs with effects from proofs with monadic types in Coq

Extraction of certified programs with effects from proofs with monadic types in Coq Extraction of certified programs with effects from proofs with monadic types in Coq Marino Miculan 1 and Marco Paviotti 2 1 Dept. of Mathematics and Computer Science, University of Udine, Italy 2 IT University

More information

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111 Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo

More information

M/M/1 and M/M/m Queueing Systems

M/M/1 and M/M/m Queueing Systems M/M/ and M/M/m Queueing Systems M. Veeraraghavan; March 20, 2004. Preliminaries. Kendall s notation: G/G/n/k queue G: General - can be any distribution. First letter: Arrival process; M: memoryless - exponential

More information

Origin Tracking in Attribute Grammars

Origin Tracking in Attribute Grammars Origin Tracking in Attribute Grammars Kevin Williams and Eric Van Wyk University of Minnesota Stellenbosch, WG2.11, January 20-22, 2015 1 / 37 First, some advertising Multiple new faculty positions at

More information

One-Stop-Shopping Investment For Retirement Planning

One-Stop-Shopping Investment For Retirement Planning TARGET DATE RETIREMENT FUNDS One-Stop-Shopping Investment For Retirement Planning Investing for retirement can be challenging if you re not an expert. Here s a simple choice for your retirement investing...

More information

Pluggable Type Systems. Gilad Bracha

Pluggable Type Systems. Gilad Bracha Pluggable Type Systems Gilad Bracha The Paradox of Type Systems Type systems help reliability and security by mechanically proving program properties Type systems hurt reliability and security by making

More information

Documenting questionnaires

Documenting questionnaires Documenting questionnaires Jean-Pierre Kent and Leon Willenborg, Statistics Netherlands 1. Introduction The growing possibilities of Blaise III have led designers to build very complex survey instruments.

More information

Software Engineering Reference Framework

Software Engineering Reference Framework Software Engineering Reference Framework Michel Chaudron, Jan Friso Groote, Kees van Hee, Kees Hemerik, Lou Somers, Tom Verhoeff. Department of Mathematics and Computer Science Eindhoven University of

More information

UCSC Mathematics BA Graduates Academic Plans

UCSC Mathematics BA Graduates Academic Plans Academic Plans No plans to apply pursue in the next 5 years Undecided Not applied, but intend to within the next 5 years Have applied, unknown acceptance Accepted, plan to defer Accepted and will start

More information

1 Operational Semantics for While

1 Operational Semantics for While Models of Computation, 2010 1 1 Operational Semantics for While The language While of simple while programs has a grammar consisting of three syntactic categories: numeric expressions, which represent

More information

A puzzle. Suppose that you want to run some JavaScript programs---all the cool kids are doing it.

A puzzle. Suppose that you want to run some JavaScript programs---all the cool kids are doing it. A puzzle Suppose that you want to run some JavaScript programs---all the cool kids are doing it. However, you are deathly afraid that your mom/ significant other/boss will see the curse word b00 appear

More information

Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 10

Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 10 CS 70 Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 10 Introduction to Discrete Probability Probability theory has its origins in gambling analyzing card games, dice,

More information

Using Questions to Promote Critical Thinking By Cindy McClung, coordinator for quality, and Bob Hoglund, president of Bob Hoglund Inc.

Using Questions to Promote Critical Thinking By Cindy McClung, coordinator for quality, and Bob Hoglund, president of Bob Hoglund Inc. Using Questions to Promote Critical Thinking By Cindy McClung, coordinator for quality, and Bob Hoglund, president of Bob Hoglund Inc. Critical thinking occurs whenever you judge, decide or solve a problem.

More information

Fundamentals of Programming Languages

Fundamentals of Programming Languages A puzzle and a dilemma Suppose I want to capture/catch/slay crashing programs before they have a chance to run (=static type safety). Do I let this one go? let c = ref (fun x -> x) in c := (fun x -> x

More information

VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR

VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR Andrey V.Lyamin, State University of IT, Mechanics and Optics St. Petersburg, Russia Oleg E.Vashenkov, State University of IT, Mechanics and Optics, St.Petersburg,

More information

Týr: a dependent type system for spatial memory safety in LLVM

Týr: a dependent type system for spatial memory safety in LLVM Týr: a dependent type system for spatial memory safety in LLVM Vítor De Araújo Álvaro Moreira (orientador) Rodrigo Machado (co-orientador) August 13, 2015 Vítor De Araújo Álvaro Moreira (orientador) Týr:

More information

Quality Risk Management

Quality Risk Management PS/INF 1/2010 * * Quality Risk Management Quality Risk Management Implementation of ICH Q9 in the pharmaceutical field an example of methodology from PIC/S Document > Authors: L. Viornery (AFSSAPS) Ph.

More information

AP English Language Research Project Assignment Created by Sandy Jameson, Nazareth Area High School, 2013

AP English Language Research Project Assignment Created by Sandy Jameson, Nazareth Area High School, 2013 Assignment Created by Sandy Jameson, Nazareth Area High School, 2013 You will be creating an AP Exam style Synthesis Question. The Synthesis Question gives you several sources, and asks you to combine

More information

Software Engineering Tools and Methods

Software Engineering Tools and Methods Software Engineering Tools and Methods Fernando Brito e Abreu (fba@di.fct.unl.pt) Universidade Nova de Lisboa (http://www.unl.pt) QUASAR Research Group (http://ctp.di.fct.unl.pt/quasar) SWEBOK: the 10

More information

4 View Based Access Control

4 View Based Access Control This chapter presents and discusses a declarative access control language designed to meet the manageability requirements introduced in the previous chapters. The language builds on the earlier publications

More information

Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine

Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine Maxime Chevalier-Boisvert Erick Lavoie Marc Feeley Bruno Dufour {chevalma, lavoeric, feeley, dufour}@iro.umontreal.ca DIRO - Université de

More information

Automatic Verification by Abstract Interpretation

Automatic Verification by Abstract Interpretation Automatic Verification by Abstract Interpretation (Invited tutorial) Patrick Cousot École normale supérieure, Département d informatique, 45 rue d Ulm, 75230 Paris cedex 05, France Patrick.Cousot@ens.fr

More information

The Clean programming language. Group 25, Jingui Li, Daren Tuzi

The Clean programming language. Group 25, Jingui Li, Daren Tuzi The Clean programming language Group 25, Jingui Li, Daren Tuzi The Clean programming language Overview The Clean programming language first appeared in 1987 and is still being further developed. It was

More information

A COOL AND PRACTICAL ALTERNATIVE TO TRADITIONAL HASH TABLES

A COOL AND PRACTICAL ALTERNATIVE TO TRADITIONAL HASH TABLES A COOL AND PRACTICAL ALTERNATIVE TO TRADITIONAL HASH TABLES ULFAR ERLINGSSON, MARK MANASSE, FRANK MCSHERRY MICROSOFT RESEARCH SILICON VALLEY MOUNTAIN VIEW, CALIFORNIA, USA ABSTRACT Recent advances in the

More information

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014 CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections

More information

SUBGROUPS OF CYCLIC GROUPS. 1. Introduction In a group G, we denote the (cyclic) group of powers of some g G by

SUBGROUPS OF CYCLIC GROUPS. 1. Introduction In a group G, we denote the (cyclic) group of powers of some g G by SUBGROUPS OF CYCLIC GROUPS KEITH CONRAD 1. Introduction In a group G, we denote the (cyclic) group of powers of some g G by g = {g k : k Z}. If G = g, then G itself is cyclic, with g as a generator. Examples

More information

Technical Assistance to Support Evidence-Based Policymaking: A Conversation With the Regional Comprehensive Centers

Technical Assistance to Support Evidence-Based Policymaking: A Conversation With the Regional Comprehensive Centers Technical Assistance to Support Evidence-Based Policymaking: A Conversation With the Regional Comprehensive Centers Facilitated By Betheny Gross November 2015 2015 Edvance Research, Inc. 53 the SEA of

More information

Testing, Debugging, and Verification

Testing, Debugging, and Verification Testing, Debugging, and Verification Testing, Part II Moa Johansson 10 November 2014 TDV: Testing /GU 141110 1 / 42 Admin Make sure you are registered for the course. Otherwise your marks cannot be recorded.

More information

BBA to Become a Real Business Manager

BBA to Become a Real Business Manager Academic Plans No plans to apply pursue in the next 5 years Undecided Not applied, but intend to within the next 5 years Have applied, unknown acceptance Accepted, plan to defer Accepted and will start

More information

A STUDY OF SEMANTICS, TYPES AND LANGUAGES FOR DATABASES AND OBJECT-ORIENTED PROGRAMMING ATSUSHI OHORI. Computer and Information Science

A STUDY OF SEMANTICS, TYPES AND LANGUAGES FOR DATABASES AND OBJECT-ORIENTED PROGRAMMING ATSUSHI OHORI. Computer and Information Science A STUDY OF SEMANTICS, TYPES AND LANGUAGES FOR DATABASES AND OBJECT-ORIENTED PROGRAMMING ATSUSHI OHORI A DISSERTATION in Computer and Information Science Presented to the Faculties of the University of

More information

Programming and Reasoning with Algebraic Effects and Dependent Types

Programming and Reasoning with Algebraic Effects and Dependent Types Programming and Reasoning with Algebraic Effects and Dependent Types Edwin C. Brady School of Computer Science, University of St Andrews, St Andrews, Scotland. Email: ecb10@st-andrews.ac.uk Abstract One

More information