An Eiffel Library for Units of Measurement

Size: px
Start display at page:

Download "An Eiffel Library for Units of Measurement"

Transcription

1 An Eiffel Library for Units of Measurement Issues and approaches to the support of numerical values with physical dimensions Semester project Markus Keller 1 / 16

2 Schedule Short introduction to units: concepts & standards Previous work for other languages Requirements for a Base Library Architecture #1: Genericity-based, checks at compile time Discussion Architecture #2: Object-based, checks at run time (DbC) Discussion 2 / 16

3 The SI-System Why Units? - Unit of scale is a reference for comparison and measurement - Dimensional Analysis: helps detecting errors & gives insight - Assumption: Physical laws are dimensionally invariant. ISO 1000: "SI units and multiples (prefixes)" ISO 31:0-13: "Quantities and units of {field of use}" - 7 base units: m (length), kg (mass), s (time), A (electric current), K (temperature), mol (amount of substance), cd (luminous intensity) -- "orthogonal" dimensions - 2 supplementary units: rad, sr -- they couldn t decide... - Derived units: e.g. N, J, V, m/s -- from base units - Obsolete units -- everything before SI 3 / 16

4 some nasty cases absolute temperature: absolute or relative? coordinate - different origins of C and F - not automatically derivable, perhaps C C? relative measure db, neper: logarithmic density, loudness, currencies: not even constant time: s, min, h, d => calendar for m(onth), y(ear), time zone, plane and solid angles: rad and sr or dimensionless? dimensionless ratios: refractive index, particle density (ppm) not reducible quantities: car uses 3 l / 100 km = 0.03 mm 2? 4 / 16

5 Unit (of Measurement), Dimension, Quantity Adimension is a type. It denotes a class of similar scales. Aunit is an instance of a dimension type. Different units of the same dimension are isomorphic. -- a reference of scale Aquantity consists of a value and a unit. Conformance should be based on dimensions, not on units. Operations on Quantities - Addition (subtraction) of quantities: only equal dimensions - Multiplication (division): always OK from unit point of view - may result in composite dimensions which have to be resolved (brought to a canonical form) - q: only if q is power of 2. () int : always OK. sin, : [rad] -> [] 5 / 16

6 Previous Work Some activity in this field. Why not in broad use? Most common approach: extend compiler to include unit types - extended type system, static resolution at compile time Other approaches: - Type inference: guess who? ML & co. - Use runtime objects & throw exceptions: Smalltalk A general issue: How to build a customizable compiler? - Compile by Contract: How can we let programmers decide what to do at (compile assembly run) time? - manifest constants for complex types, (type-)checks, assertions 6 / 16

7 Requirements for a Base Library of Units user can add new units (even better: and new dimensions) automatic conversion and static unit-equality checks little/no overhead (execution time and syntactic) generic value representation (REAL, DOUBLE,, INTEGER?) - problem: how to represent conversion factors? accuracy & precision: unsolved (unsolvable) numeric problem - additional problems: prefixes & implicit conversion to internal representation can hamper precision Create/change units and dimensions at run time? - > static type checking impossible -- irreversible decision 7 / 16

8 Architecture #1: static unit checking class QUANTITY [V -> {NUMERIC, COMPARABLE}; D -> DIMENSION] inherit NUMERIC redefine infix "+", infix " ", infix "*", infix "/", COMPARABLE redefine feature value: expanded V infix "*" (other: QUANTITY [V; DIMENSION]):??? is do end end -- class QUANTITY DIMENSION [1, -2, 0, 0, 0, 0, 0]??? Eiffel lacks C++ s non-type template parameters. A complete unit library with dimensional analysis at compile time is not feasible. The problem is with the inability to reduce complex unit expressions to a canonical (normal) form. Since there s no way to compute generic type parameters in Eiffel, we cannot produce the correct result types for unit multiplication and division. In C++, the compiler can create new types by instantiating templates with (constant) non-type parameters. These "compile time calculations" are not possible in Eiffel. 8 / 16

9 Architecture #1: static unit checking (2) We could simulate non-type generic parameters by an explosion of hand-written generic classes and routines - classes (Px, Z, Mx) represent values (+x, 0, x), respectively: class FORCE [V -> {NUMERIC, COMPARABLE}; D -> DIMENSION [P1, P1, M2, Z, Z, Z, Z]] inherit NUMERIC redefine infix "+", infix " ", infix "*", infix "/", COMPARABLE redefine feature DIMENSION [L, M, T, I, Θ, N, J] value: expanded V infix "*" (other: QUANTITY [V; DIMENSION [Z, Z, Z, Z, Z, Z, Z]]): DIMENSION [P1, P1, M2, Z, Z, Z, Z]] is do end infix "*" (other: QUANTITY [V; DIMENSION [P1, Z, Z, Z, Z, Z, Z]]): DIMENSION [P2, P1, M2, Z, Z, Z, Z]] is do end end but that s neither object-oriented nor extensible. 9 / 16

10 Architecture #2: object-based UNITS [V ->...] QUANTITY [V -> {NUMERIC, COMPARABLE}] dimension DIMENSION DOUBLE_UNITS DOUBLE_ LENGTH_UNITS s, min, h DOUBLE_ TIME_UNITS COMPLEX_DIMENSION BASE_DIMENSION LENGTH TIME / 16

11 Architecture #2: object-based (2) class QUANTITY [V -> {NUMERIC, COMPARABLE}] inherit NUMERIC redefine infix "+", infix "-", infix "*", infix "/", COMPARABLE redefine create make (value: V; dimension: DIMENSION) is do end feature value: expanded V; dimension: expanded DIMENSION infix "+" (other: like Current): like Current is require dimension.commensurate_with (other.dimension) do create Result.make (value + other.value, dimension) end infix "*" (other: QUANTITY [V]): QUANTITY [V] is do create Result.make (value * other.value, dimension *other.dimension) end -- a candidate for target conversion from V item (unit: QUANTITY[V]): V is-- value in units unit require... commensurate_with... do Result := value / unit.value end 11 / 16

12 References Michael Karr and David B. Loveman: "Incorporation of Units into Programming languages". CACM Vol. 21, No. 5, May Compiler André van Delft: "A Java Extension with Support for Dimensions". Software Practice and Experience 29(7), (1999) -- Compiler Walter E. Brown: "The SI Library of Unit-Based Computation", CHEP 98, Chicago, SIunits: The reference implementation for C++ John J. Barton and Lee R Nackman: "Scientific and engineering C++". Addison Wesley, same idea as SIunits Paul N. Hilfinger: "An Ada Package for Dimensional Analysis". ACM Trans. on Progamming Lang. and Systems, Vol. 10, No. 2, April 1988, pp Andrew J. Kennedy: "Programming Languages and Dimensions". Diss. Univ. Cambridge, November 1995, -- ML, inference 12 / 16

13 Discussion Eiffel Unit Library Presentation style Language (Eiffel and mine ;-) - > Another topic to discuss (TUPLE conformance) 13 / 16

14 A TUPLE of problems Agent mechanism is not statically type safe: class C feature f (x1: T1; x2: T2) is do... end make is do use (agent f (?,?)) end --> PROCEDURE [C, TUPLE [T1, T2]] use (action: PROCEDURE [C, TUPLE [T1]] is do action.call ([a1]) -- call s argument type: TUPLE [T1] -- call fails at run time, even though end end -- openness of arguments is static issue Problem: TUPLE [T1, T2] conforms to TUPLE [T1] Solution: TUPLE [T1, T2,...] shall only conform to TUPLE 14 / 16

15 A TUPLE of problems (2) Today s definition implies: "agent f (?,?)": PROCEDURE [C, TUPLE [A, B]]... is-a-kind-of... "agent g (?)": PROCEDURE [C, TUPLE [A]] TUPLE TUPLE [A] TUPLE [A, B] Is there a convincing reason, why tuple type conformance rules are so loose? - Features with variable argument count can always use ARRAY [ANY] for their arguments. - Static typing => avoid avoidable run time exceptions 15 / 16

16 A TUPLE of problems (3) - Solution? Proposition: retain "inheritance" only from TUPLE - undefine TUPLE - TUPLE [] is the empty TUPLE - TUPLE [A, B,...] only conforms to TUPLE (not to TUPLE []) TUPLE * TUPLE [] TUPLE [A] TUPLE [A, B]... and BTW: rename agent as wrap -- agent is overloaded in class PROGRAMMING_CONSTRUCTS 16 / 16

A Package for Handling Units of Measure in Lisp

A Package for Handling Units of Measure in Lisp A Package for Handling Units of Measure in Lisp Roman Cunis* MAZ GmbH Karnapp 20, D-2100 Hamburg 90 February 7, 1992 1 Introduction The ability to handle units of measure in a programming environment together

More information

CSCE 314 Programming Languages. Type System

CSCE 314 Programming Languages. Type System CSCE 314 Programming Languages Type System Dr. Hyunyoung Lee 1 Names Names refer to different kinds of entities in programs, such as variables, functions, classes, templates, modules,.... Names can be

More information

Wrapping a complex C++ library for Eiffel. FINAL REPORT July 1 st, 2005

Wrapping a complex C++ library for Eiffel. FINAL REPORT July 1 st, 2005 Wrapping a complex C++ library for Eiffel FINAL REPORT July 1 st, 2005 Semester project Student: Supervising Assistant: Supervising Professor: Simon Reinhard simonrei@student.ethz.ch Bernd Schoeller Bertrand

More information

Introduction to Eiffel

Introduction to Eiffel Introduction to Eiffel Martin Nordio, Christian Estler ETH Zurich Distributed Software Engineering Lab 1 Overview Part 1: Language Constructs Ø Basics: definition, if then else, expressions, loops and

More information

Adding Contracts to C#

Adding Contracts to C# Adding Contracts to C# Peter Lagace ABSTRACT Design by contract is a software engineering technique used to promote software reliability. In order to use design by contract the selected programming language

More information

arxiv:cs/ v1 [cs.pl] 7 Dec 2005

arxiv:cs/ v1 [cs.pl] 7 Dec 2005 Checking C++ Programs for Dimensional Consistency Ingo Josopait Astrophysikalisches Institut Potsdam, 14482 Potsdam, Germany I will present my implementation n-units of physical units into C++ programs.

More information

Object-Oriented Software Construction

Object-Oriented Software Construction 1 Object-Oriented Software Construction Bertrand Meyer 2 Lecture 5: Objects The basic structure: The class 3 A class is an implementation of an ADT. It is both: A module. A type. Much of the conceptual

More information

Static type safety guarantees for the operators of a relational database querying system. Cédric Lavanchy

Static type safety guarantees for the operators of a relational database querying system. Cédric Lavanchy Static type safety guarantees for the operators of a relational database querying system Cédric Lavanchy June 6, 2008 Contents 1 Previous work 2 2 Goal 3 3 Theory bases 4 3.1 Typing a relation...........................

More information

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 2. true / false ML can be compiled. 3. true / false FORTRAN can reasonably be considered

More information

What s Conformance? Conformance. Conformance and Class Invariants Question: Conformance and Overriding

What s Conformance? Conformance. Conformance and Class Invariants Question: Conformance and Overriding Conformance Conformance and Class Invariants Same or Better Principle Access Conformance Contract Conformance Signature Conformance Co-, Contra- and No-Variance Overloading and Overriding Inheritance as

More information

CS4215 Programming Language Implementation. Martin Henz

CS4215 Programming Language Implementation. Martin Henz CS4215 Programming Language Implementation Martin Henz Thursday 26 January, 2012 2 Chapter 4 The Language simpl In this chapter, we are exting the language epl in order to provide a more powerful programming

More information

Object Oriented Programming

Object Oriented Programming Object Oriented Programming Primary object-oriented language concepts dynamic lookup encapsulation inheritance subtyping Program organization Organize concepts into objects and relationships between them

More information

Programming Languages Third Edition. Chapter 7 Basic Semantics

Programming Languages Third Edition. Chapter 7 Basic Semantics Programming Languages Third Edition Chapter 7 Basic Semantics Objectives Understand attributes, binding, and semantic functions Understand declarations, blocks, and scope Learn how to construct a symbol

More information

Universe Type System for Eiffel. Annetta Schaad

Universe Type System for Eiffel. Annetta Schaad Universe Type System for Eiffel Annetta Schaad Semester Project Report Software Component Technology Group Department of Computer Science ETH Zurich http://sct.inf.ethz.ch/ SS 2006 Supervised by: Dipl.-Ing.

More information

Com S 541. Programming Languages I

Com S 541. Programming Languages I Programming Languages I Lecturer: TA: Markus Lumpe Department of Computer Science 113 Atanasoff Hall http://www.cs.iastate.edu/~lumpe/coms541.html TR 12:40-2, W 5 Pramod Bhanu Rama Rao Office hours: TR

More information

Chapter 5 Object-Oriented Programming

Chapter 5 Object-Oriented Programming Chapter 5 Object-Oriented Programming Develop code that implements tight encapsulation, loose coupling, and high cohesion Develop code that demonstrates the use of polymorphism Develop code that declares

More information

Discussion. Type 08/12/2016. Language and Type. Type Checking Subtypes Type and Polymorphism Inheritance and Polymorphism

Discussion. Type 08/12/2016. Language and Type. Type Checking Subtypes Type and Polymorphism Inheritance and Polymorphism Type Joseph Spring Discussion Languages and Type Type Checking Subtypes Type and Inheritance and 7COM1023 Programming Paradigms 1 2 Type Type denotes the kind of values that programs can manipulate: Simple

More information

Units of Measure in Fortran

Units of Measure in Fortran Units of Measure in Fortran N1970 Van Snyder van.snyder@jpl.nasa.gov Caltech Jet Propulsion Laboratory 22 April 2013 The Problem Incorrect use of physical units is the third most common error in scientific

More information

Example: Haskell algebraic data types (1)

Example: Haskell algebraic data types (1) Example: Haskell algebraic data types (1) Type declaration: data Number = Exact Int Inexact Float Set of values: Each Number value consists of a tag, together with either an Integer variant (if the tag

More information

Programmiersprachen (Programming Languages)

Programmiersprachen (Programming Languages) 2016-05-13 Preface Programmiersprachen (Programming Languages) coordinates: lecturer: web: usable for: requirements: No. 185.208, VU, 3 ECTS Franz Puntigam http://www.complang.tuwien.ac.at/franz/ps.html

More information

CSci 450: Org. of Programming Languages Overloading and Type Classes

CSci 450: Org. of Programming Languages Overloading and Type Classes CSci 450: Org. of Programming Languages Overloading and Type Classes H. Conrad Cunningham 27 October 2017 (after class) Contents 9 Overloading and Type Classes 1 9.1 Chapter Introduction.........................

More information

Software Architecture Bertrand Meyer. Lecture 3: Language constructs for modularity and information hiding

Software Architecture Bertrand Meyer. Lecture 3: Language constructs for modularity and information hiding Software Architecture Bertrand Meyer Last update: 3 April 2007 ETH Zurich, March-July 2007 Lecture 3: Language constructs for modularity and information hiding Ilinca Ciupa Overview Review of modularity

More information

Coordination Patterns

Coordination Patterns Coordination Patterns 1. Coordination Patterns Design Patterns and their relevance for Coordination Oscar Nierstrasz Software Composition Group Institut für Informatik (IAM) Universität Bern oscar@iam.unibe.ch

More information

Informatica 3 Syntax and Semantics

Informatica 3 Syntax and Semantics Informatica 3 Syntax and Semantics Marcello Restelli 9/15/07 Laurea in Ingegneria Informatica Politecnico di Milano Introduction Introduction to the concepts of syntax and semantics Binding Variables Routines

More information

Semantic Analysis. CSE 307 Principles of Programming Languages Stony Brook University

Semantic Analysis. CSE 307 Principles of Programming Languages Stony Brook University Semantic Analysis CSE 307 Principles of Programming Languages Stony Brook University http://www.cs.stonybrook.edu/~cse307 1 Role of Semantic Analysis Syntax vs. Semantics: syntax concerns the form of a

More information

Some instance messages and methods

Some instance messages and methods Some instance messages and methods x ^x y ^y movedx: dx Dy: dy x

More information

Programming in C and C++

Programming in C and C++ Programming in C and C++ 1. Types Variables Expressions & Statements Dr. Anil Madhavapeddy University of Cambridge (based on previous years thanks to Alan Mycroft, Alastair Beresford and Andrew Moore)

More information

CS61B Lecture #14: Integers

CS61B Lecture #14: Integers Announcement: CS61B Lecture #14: Integers Project #0 due Tuesday night. Programming contest SATURDAY! You can still sign up at https://inst.eecs.berkeley.edu/~ctest/contest/register. Test #1 will be Tuesday,

More information

CS-XXX: Graduate Programming Languages. Lecture 9 Simply Typed Lambda Calculus. Dan Grossman 2012

CS-XXX: Graduate Programming Languages. Lecture 9 Simply Typed Lambda Calculus. Dan Grossman 2012 CS-XXX: Graduate Programming Languages Lecture 9 Simply Typed Lambda Calculus Dan Grossman 2012 Types Major new topic worthy of several lectures: Type systems Continue to use (CBV) Lambda Caluclus as our

More information

Support for Object-Oriented Testing

Support for Object-Oriented Testing Support for Object-Oriented Testing Michael Kolling School of Computer Science & Software Engineering Monash University Australia michael. kolling @ csse.monash. edu.au John Rosenberg Faculty of Information

More information

On the correctness of template metaprograms

On the correctness of template metaprograms Proceedings of the 7 th International Conference on Applied Informatics Eger, Hungary, January 28 31, 2007 Vol 2 pp 301 308 On the correctness of template metaprograms Ádám Sipos, István Zólyomi, Zoltán

More information

University of California at Berkeley April 1984

University of California at Berkeley April 1984 Network Working Group Request for Comments: 893 Samuel J. Leffler Michael J. Karels University of California at Berkeley April 1984 Trailer Encapsulations Status of this Memo This RFC discusses the motivation

More information

The Contract Pattern. Design by contract

The Contract Pattern. Design by contract The Contract Pattern Copyright 1997, Michel de Champlain Permission granted to copy for PLoP 97 Conference. All other rights reserved. Michel de Champlain Department of Computer Science University of Canterbury,

More information

Chapter 7 Control I Expressions and Statements

Chapter 7 Control I Expressions and Statements Chapter 7 Control I Expressions and Statements Expressions Conditional Statements and Guards Loops and Variation on WHILE The GOTO Controversy Exception Handling Values and Effects Important Concepts in

More information

Jam: A Smooth Extension With Java Mixins

Jam: A Smooth Extension With Java Mixins Jam: A Smooth Extension With Java Mixins Davide Ancona, Giovanni Lagorio, Ellena Zucca Presentation created by Left-out Jam abstract syntax Formal definitions of Jam static semantics Formal definitions

More information

(12-1) OOP: Polymorphism in C++ D & D Chapter 12. Instructor - Andrew S. O Fallon CptS 122 (April 3, 2019) Washington State University

(12-1) OOP: Polymorphism in C++ D & D Chapter 12. Instructor - Andrew S. O Fallon CptS 122 (April 3, 2019) Washington State University (12-1) OOP: Polymorphism in C++ D & D Chapter 12 Instructor - Andrew S. O Fallon CptS 122 (April 3, 2019) Washington State University Key Concepts Polymorphism virtual functions Virtual function tables

More information

Middle School Math Course 2

Middle School Math Course 2 Middle School Math Course 2 Correlation of the ALEKS course Middle School Math Course 2 to the Indiana Academic Standards for Mathematics Grade 7 (2014) 1: NUMBER SENSE = ALEKS course topic that addresses

More information

CSC Advanced Object Oriented Programming, Spring Specification

CSC Advanced Object Oriented Programming, Spring Specification CSC 520 - Advanced Object Oriented Programming, Spring 2018 Specification Specification A specification is an unambiguous description of the way the components of the software system should be used and

More information

Seminar in Programming Languages

Seminar in Programming Languages Seminar in Programming Languages Shuly Wintner Fall 2010-11 Course web site: http://cs.haifa.ac.il/~shuly/teaching/10/plseminar/ Course Goals Programming Language Concepts A language is a conceptual universe

More information

Benchmarks Addressed. Quizzes. Strand IV, S 1-2, 1-4, 2-1, 2-2, 2-3, 3-1. Journal writing. Projects. Worksheets

Benchmarks Addressed. Quizzes. Strand IV, S 1-2, 1-4, 2-1, 2-2, 2-3, 3-1. Journal writing. Projects. Worksheets August/September The Decimal System Translating English words into Decimal Notation What is the decimal system? Str IV, S 1-2, 1-4, 2-1, 2-2, 2-3, 3-1 Estimating Decimals What is a number line? Changing

More information

Definition MATH Benjamin V.C. Collins, James A. Swenson MATH 2730

Definition MATH Benjamin V.C. Collins, James A. Swenson MATH 2730 MATH 2730 Benjamin V.C. Collins James A. Swenson s and undefined terms The importance of definition s matter! may be more important in Discrete Math than in any math course that you have had previously.

More information

Overloading, Type Classes, and Algebraic Datatypes

Overloading, Type Classes, and Algebraic Datatypes Overloading, Type Classes, and Algebraic Datatypes Delivered by Michael Pellauer Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. September 28, 2006 September 28, 2006 http://www.csg.csail.mit.edu/6.827

More information

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor. 3.Constructors and Destructors Develop cpp program to implement constructor and destructor. Constructors A constructor is a special member function whose task is to initialize the objects of its class.

More information

Elementary Recursive Function Theory

Elementary Recursive Function Theory Chapter 6 Elementary Recursive Function Theory 6.1 Acceptable Indexings In a previous Section, we have exhibited a specific indexing of the partial recursive functions by encoding the RAM programs. Using

More information

Shapes leading to CAD system project

Shapes leading to CAD system project EXERCISES Shapes leading to CAD system project Strings leading to distribution control project Tables leading to infinite precision arithmetic project Conversions leading to instrument control project

More information

Data Structure. Recitation IV

Data Structure. Recitation IV Data Structure Recitation IV Topic Java Generics Java error handling Stack Lab 2 Java Generics The following code snippet without generics requires casting: List list = new ArrayList(); list.add("hello");

More information

type classes & locales

type classes & locales Content Rough timeline Intro & motivation, getting started [1] COMP 4161 NICTA Advanced Course Advanced Topics in Software Verification Gerwin Klein, June Andronick, Toby Murray type classes & locales

More information

Assertions. Assertions - Example

Assertions. Assertions - Example References: internet notes; Bertrand Meyer, Object-Oriented Software Construction; 11/13/2003 1 Assertions Statements about input to a routine or state of a class Have two primary roles As documentation,

More information

Spectral Color and Radiometry

Spectral Color and Radiometry Spectral Color and Radiometry Louis Feng April 13, 2004 April 13, 2004 Realistic Image Synthesis (Spring 2004) 1 Topics Spectral Color Light and Color Spectrum Spectral Power Distribution Spectral Color

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 3 Thomas Wies New York University Review Last week Names and Bindings Lifetimes and Allocation Garbage Collection Scope Outline Control Flow Sequencing

More information

Conformance. Object-Oriented Programming Spring 2015

Conformance. Object-Oriented Programming Spring 2015 Conformance Object-Oriented Programming 236703 Spring 2015 1 What s Conformance? Overriding: replace method body in sub-class Polymorphism: subclass is usable wherever superclass is usable Dynamic Binding:

More information

02157 Functional Programming. Michael R. Ha. Lecture 2: Functions, Types and Lists. Michael R. Hansen

02157 Functional Programming. Michael R. Ha. Lecture 2: Functions, Types and Lists. Michael R. Hansen Lecture 2: Functions, Types and Lists nsen 1 DTU Compute, Technical University of Denmark Lecture 2: Functions, Types and Lists MRH 13/09/2018 Outline Functions as first-class citizens Types, polymorphism

More information

Inheritance. OOP: Inheritance 1

Inheritance. OOP: Inheritance 1 Inheritance Reuse Extension and intension Class specialization and class extension Inheritance The protected keyword revisited Inheritance and methods Method redefinition An widely used inheritance example

More information

Lecture 20: Implementation () / 33

Lecture 20: Implementation () / 33 Lecture 20: Implementation 15.07.2013 () 15.07.2013 1 / 33 Contents Implementation Implementation Principles Example: Eight Queens by Refinement () 15.07.2013 2 / 33 Implementation Input: software architecture,

More information

Reading Assignment. Symbolic Evaluation/Execution. Move from Dynamic Analysis to Static Analysis. Move from Dynamic Analysis to Static Analysis

Reading Assignment. Symbolic Evaluation/Execution. Move from Dynamic Analysis to Static Analysis. Move from Dynamic Analysis to Static Analysis Reading Assignment Symbolic Evaluation/Execution *R.W. Floyd, "Assigning Meaning to Programs, Symposium on Applied Mathematics, 1967, pp. 19-32 (Appeared as volume 19 of Mathematical Aspects of Computer

More information

KS3 MATHEMATICS THRESHOLD DESCRIPTORS NUMBER (Incl. RATIO & PROPORTION)

KS3 MATHEMATICS THRESHOLD DESCRIPTORS NUMBER (Incl. RATIO & PROPORTION) KS3 MATHEMATICS THRESHOLD DESCRIPTORS NUMBER (Incl. RATIO & PROPORTION) Topic Integers Decimals Approximation Fractions Concepts and skills Read, write, order and compare positive integers up to 1000 Add

More information

1. Quality issues (5 points)

1. Quality issues (5 points) ETH Zurich Computer Science Course: Advanced Topics in Object Technology, by Bertrand Meyer Summer semester 2003 Exam (prepared by Karine Arnout) 2 July 2003 10:00 to 12:00 Name:.. Id-Nr:.. No notes, computers,

More information

Symbolic Evaluation/Execution

Symbolic Evaluation/Execution Symbolic Evaluation/Execution Reading Assignment *R.W. Floyd, "Assigning Meaning to Programs, Symposium on Applied Mathematics, 1967, pp. 19-32 (Appeared as volume 19 of Mathematical Aspects of Computer

More information

Advances in Programming Languages

Advances in Programming Languages T O Y H Advances in Programming Languages APL4: JML The Java Modeling Language David Aspinall (slides originally by Ian Stark) School of Informatics The University of Edinburgh Thursday 21 January 2010

More information

Table of Contents Preface Bare Necessities... 17

Table of Contents Preface Bare Necessities... 17 Table of Contents Preface... 13 What this book is about?... 13 Who is this book for?... 14 What to read next?... 14 Personages... 14 Style conventions... 15 More information... 15 Bare Necessities... 17

More information

ETHZ D-INFK Final Exam Booklet

ETHZ D-INFK Final Exam Booklet ETHZ D-INFK Booklet Date: 15 December 2009 Surname, first name:... Student number:... I confirm with my signature, that I was able to take this exam under regular circumstances and that I have read and

More information

Page 1. Stuff. Last Time. Today. Safety-Critical Systems MISRA-C. Terminology. Interrupts Inline assembly Intrinsics

Page 1. Stuff. Last Time. Today. Safety-Critical Systems MISRA-C. Terminology. Interrupts Inline assembly Intrinsics Stuff Last Time Homework due next week Lab due two weeks from today Questions? Interrupts Inline assembly Intrinsics Today Safety-Critical Systems MISRA-C Subset of C language for critical systems System

More information

IMPLEMENTATION OF AN OPTIMAL MATRIX-CHAIN PRODUCT EXPLOITING MATRIX SPECIALIZATION

IMPLEMENTATION OF AN OPTIMAL MATRIX-CHAIN PRODUCT EXPLOITING MATRIX SPECIALIZATION IMPLEMENTATION OF AN OPTIMAL MATRIX-CHAIN PRODUCT EXPLOITING MATRIX SPECIALIZATION Swetha Kukkala and Andrew A. Anda Computer Science Department St Cloud State University St Cloud, MN 56301 kusw0601@stcloudstate.edu

More information

! Use of formal notations. ! in software system descriptions. ! for a broad range of effects. ! and varying levels of use. !

! Use of formal notations. ! in software system descriptions. ! for a broad range of effects. ! and varying levels of use. ! What Are Formal Methods? David S. Rosenblum ICS 221 Winter 2001! Use of formal notations! first-order logic, state machines, etc.! in software system descriptions! system models, constraints, specifications,

More information

Types. Type checking. Why Do We Need Type Systems? Types and Operations. What is a type? Consensus

Types. Type checking. Why Do We Need Type Systems? Types and Operations. What is a type? Consensus Types Type checking What is a type? The notion varies from language to language Consensus A set of values A set of operations on those values Classes are one instantiation of the modern notion of type

More information

Object typing and subtypes

Object typing and subtypes CS 242 2012 Object typing and subtypes Reading Chapter 10, section 10.2.3 Chapter 11, sections 11.3.2 and 11.7 Chapter 12, section 12.4 Chapter 13, section 13.3 Subtyping and Inheritance Interface The

More information

CSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN

CSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN What languages do you know? CSC 326H1F, Programming Languages The usual suspects: C, C++, Java fine languages nearly the same Perhaps you've also learned some others? assembler Basic, Visual Basic, Turing,

More information

The software lifecycle and its documents

The software lifecycle and its documents The software lifecycle and its documents Supplementary material for Software Architecture course B. Meyer, May 2006 Lifecycle models Origin: Royce, 1970, Waterfall model Scope: describe the set of processes

More information

Note 12/1/ Review of Inheritance Practice: Please write down 10 most important facts you know about inheritance...

Note 12/1/ Review of Inheritance Practice: Please write down 10 most important facts you know about inheritance... CISC 2000 Computer Science II Fall, 2014 Note 12/1/2014 1 Review of Inheritance Practice: Please write down 10 most important facts you know about inheritance... (a) What s the purpose of inheritance?

More information

7 th Grade HONORS Year at a Glance

7 th Grade HONORS Year at a Glance These skills will be incorporated into at least 75% of the test questions in reporting categories 1 5 and will be identified along with content standards. 7.13A identify and apply mathematics to everyday

More information

Lecture Notes on Static Single Assignment Form

Lecture Notes on Static Single Assignment Form Lecture Notes on Static Single Assignment Form 15-411: Compiler Design Frank Pfenning Lecture 6 September 12, 2013 1 Introduction In abstract machine code of the kind we have discussed so far, a variable

More information

Alignments to SuccessMaker. Providing rigorous intervention for K-8 learners with unparalleled precision

Alignments to SuccessMaker. Providing rigorous intervention for K-8 learners with unparalleled precision Alignments to SuccessMaker Providing rigorous intervention for K-8 learners with unparalleled precision OH.Math.7.RP Ratios and Proportional Relationships OH.Math.7.RP.A Analyze proportional relationships

More information

Semantic Processing. Semantic Errors. Semantics - Part 1. Semantics - Part 1

Semantic Processing. Semantic Errors. Semantics - Part 1. Semantics - Part 1 Semantic Processing The Lexer and Parser Found lexical and syntax errors Built Abstract Syntax Tree Now!Find semantic errors.!build information about the program. Later!Generate IR Code!Optimize IR Code!Generate

More information

Error Analysis, Statistics and Graphing

Error Analysis, Statistics and Graphing Error Analysis, Statistics and Graphing This semester, most of labs we require us to calculate a numerical answer based on the data we obtain. A hard question to answer in most cases is how good is your

More information

Framework Fundamentals

Framework Fundamentals Questions Framework Fundamentals 1. Which of the following are value types? (Choose all that apply.) A. Decimal B. String C. System.Drawing.Point D. Integer 2. Which is the correct declaration for a nullable

More information

(heavily based on last year s notes (Andrew Moore) with thanks to Alastair R. Beresford. 1. Types Variables Expressions & Statements 2/23

(heavily based on last year s notes (Andrew Moore) with thanks to Alastair R. Beresford. 1. Types Variables Expressions & Statements 2/23 Structure of this course Programming in C: types, variables, expressions & statements functions, compilation, pre-processor pointers, structures extended examples, tick hints n tips Programming in C++:

More information

Part B: Significant Figures = Precision

Part B: Significant Figures = Precision Part A: Accuracy vs. Precision The terms precision and accuracy are often used in discussing measured values. Precision is a measure of how closely individual measurements agree with one another or is

More information

Data Types The ML Type System

Data Types The ML Type System 7 Data Types 7.2.4 The ML Type System The following is an ML version of the tail-recursive Fibonacci function introduced Fibonacci function in ML in Section 6.6.1: EXAMPLE 7.96 1. fun fib (n) = 2. let

More information

Designing Robust Classes

Designing Robust Classes Designing Robust Classes Learning Goals You must be able to:! specify a robust data abstraction! implement a robust class! design robust software! use Java exceptions Specifications and Implementations

More information

Chapter 7. Expressions and Assignment Statements ISBN

Chapter 7. Expressions and Assignment Statements ISBN Chapter 7 Expressions and Assignment Statements ISBN 0-321-33025-0 Chapter 7 Topics Introduction Arithmetic Expressions Overloaded Operators Type Conversions Relational and Boolean Expressions Short-Circuit

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

Computer Vision 2 Lecture 8

Computer Vision 2 Lecture 8 Computer Vision 2 Lecture 8 Multi-Object Tracking (30.05.2016) leibe@vision.rwth-aachen.de, stueckler@vision.rwth-aachen.de RWTH Aachen University, Computer Vision Group http://www.vision.rwth-aachen.de

More information

CS 315 Software Design Homework 3 Preconditions, Postconditions, Invariants Due: Sept. 29, 11:30 PM

CS 315 Software Design Homework 3 Preconditions, Postconditions, Invariants Due: Sept. 29, 11:30 PM CS 315 Software Design Homework 3 Preconditions, Postconditions, Invariants Due: Sept. 29, 11:30 PM Objectives Defining a wellformed method to check class invariants Using assert statements to check preconditions,

More information

Multiple Constraint Satisfaction by Belief Propagation: An Example Using Sudoku

Multiple Constraint Satisfaction by Belief Propagation: An Example Using Sudoku Multiple Constraint Satisfaction by Belief Propagation: An Example Using Sudoku Todd K. Moon and Jacob H. Gunther Utah State University Abstract The popular Sudoku puzzle bears structural resemblance to

More information

TDDD38 - Advanced programming in C++

TDDD38 - Advanced programming in C++ TDDD38 - Advanced programming in C++ Course introduction Eric Elfving Department of Computer and information science 1 What is TDDD38 Syllabus Organization Exam Literature Plan 2 What is C++? History Design

More information

Computer Components. Software{ User Programs. Operating System. Hardware

Computer Components. Software{ User Programs. Operating System. Hardware Computer Components Software{ User Programs Operating System Hardware What are Programs? Programs provide instructions for computers Similar to giving directions to a person who is trying to get from point

More information

09/08/2017 CS2530 INTERMEDIATE COMPUTING 9/8/2017 FALL 2017 MICHAEL J. HOLMES UNIVERSITY OF NORTHERN IOWA TODAY S TOPIC: Exceptions and enumerations.

09/08/2017 CS2530 INTERMEDIATE COMPUTING 9/8/2017 FALL 2017 MICHAEL J. HOLMES UNIVERSITY OF NORTHERN IOWA TODAY S TOPIC: Exceptions and enumerations. CS2530 INTERMEDIATE COMPUTING 9/8/2017 FALL 2017 MICHAEL J. HOLMES UNIVERSITY OF NORTHERN IOWA TODAY S TOPIC: Exceptions and enumerations. 1 RUNTIME ERRORS All of us have experienced syntax errors. This

More information

APS Seventh Grade Math District Benchmark Assessment NM Math Standards Alignment

APS Seventh Grade Math District Benchmark Assessment NM Math Standards Alignment APS Seventh Grade Math District Benchmark NM Math Standards Alignment SEVENTH GRADE NM STANDARDS Strand: NUMBER AND OPERATIONS Standard: Students will understand numerical concepts and mathematical operations.

More information

NEW YORK CITY COLLEGE OF TECHNOLOGY/CUNY Computer Systems Technology Department

NEW YORK CITY COLLEGE OF TECHNOLOGY/CUNY Computer Systems Technology Department NEW YORK CITY COLLEGE OF TECHNOLOGY/CUNY Computer Systems Technology Department COURSE: CST1201 Programming Fundamentals (2 class hours, 2 lab hours, 3 credits) Course Description: This course is an intensive

More information

Types and Type Inference

Types and Type Inference CS 242 2012 Types and Type Inference Notes modified from John Mitchell and Kathleen Fisher Reading: Concepts in Programming Languages, Revised Chapter 6 - handout on Web!! Outline General discussion of

More information

What about Object-Oriented Languages?

What about Object-Oriented Languages? What about Object-Oriented Languages? What is an OOL? A language that supports object-oriented programming How does an OOL differ from an ALL? (ALGOL-Like Language) Data-centric name scopes for values

More information

CSE341: Programming Languages Lecture 11 Type Inference. Dan Grossman Spring 2016

CSE341: Programming Languages Lecture 11 Type Inference. Dan Grossman Spring 2016 CSE341: Programming Languages Lecture 11 Type Inference Dan Grossman Spring 2016 Type-checking (Static) type-checking can reject a program before it runs to prevent the possibility of some errors A feature

More information

A Correctness Proof for a Practical Byzantine-Fault-Tolerant Replication Algorithm

A Correctness Proof for a Practical Byzantine-Fault-Tolerant Replication Algorithm Appears as Technical Memo MIT/LCS/TM-590, MIT Laboratory for Computer Science, June 1999 A Correctness Proof for a Practical Byzantine-Fault-Tolerant Replication Algorithm Miguel Castro and Barbara Liskov

More information

ChE 111 Elements of Chemical Engineering

ChE 111 Elements of Chemical Engineering ChE 111 Elements of Chemical Engineering February 2015 M.A.A. Shoukat Choudhury, PhD Professor Department of Chemical Engineering, BUET 10/9/16 1 Units and Dimensions Unit: A measured quantity has a numerical

More information

Brain Surface Conformal Spherical Mapping

Brain Surface Conformal Spherical Mapping Brain Surface Conformal Spherical Mapping Min Zhang Department of Industrial Engineering, Arizona State University mzhang33@asu.edu Abstract It is well known and proved that any genus zero surface can

More information

Francesco Nidito. Programmazione Avanzata AA 2007/08

Francesco Nidito. Programmazione Avanzata AA 2007/08 Francesco Nidito Programmazione Avanzata AA 2007/08 Outline 1 2 3 4 Reference: Micheal L. Scott, Programming Languages Pragmatics, Chapter 10 , type systems and type checking A type type is an abstraction

More information

Modeling Unsteady Compressible Flow

Modeling Unsteady Compressible Flow Tutorial 4. Modeling Unsteady Compressible Flow Introduction In this tutorial, FLUENT s density-based implicit solver is used to predict the timedependent flow through a two-dimensional nozzle. As an initial

More information

Computer Science II Lecture 1 Introduction and Background

Computer Science II Lecture 1 Introduction and Background Computer Science II Lecture 1 Introduction and Background Discussion of Syllabus Instructor, TAs, office hours Course web site, http://www.cs.rpi.edu/courses/fall04/cs2, will be up soon Course emphasis,

More information

CS4215 Programming Language Implementation

CS4215 Programming Language Implementation CS4215 Programming Language Implementation You have 45 minutes to complete the exam. Use a B2 pencil to fill up the provided MCQ form. Leave Section A blank. Fill up Sections B and C. After finishing,

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Fall 2016 Lecture 3a Andrew Tolmach Portland State University 1994-2016 Formal Semantics Goal: rigorous and unambiguous definition in terms of a wellunderstood formalism (e.g.

More information