Towards Interface Types for Haskell
|
|
|
- Brittany Wiggins
- 9 years ago
- Views:
Transcription
1 Towards Interface Types for Haskell Work in Progress Peter Thiemann Joint work with Stefan Wehr Universität Freiburg, Germany WG 2.8 Meeting, Nesjavellir, Island,
2 What is a type class? A type class is a signature of an abstract data type. But where is the abstract type?
3 What is a type class? A type class is a signature of an abstract data type. But where is the abstract type?
4 What is a type class? A type class is a signature of an abstract data type. But where is the abstract type?
5 Example: HDBC interface Signature of abstract data type module HDBC where class Connection conn where exec :: conn > String > IO QueryResult Implementation of abstract data type module PostgreSQLDB where import HDBC instance Connection PostgreSQLConnection where exec = pgsqlexec Extending the abstract data type class Connection conn => BetterConnection conn where notify :: conn > String > IO ()
6 Example: HDBC interface Signature of abstract data type module HDBC where class Connection conn where exec :: conn > String > IO QueryResult Implementation of abstract data type module PostgreSQLDB where import HDBC instance Connection PostgreSQLConnection where exec = pgsqlexec Extending the abstract data type class Connection conn => BetterConnection conn where notify :: conn > String > IO ()
7 Example: HDBC interface Signature of abstract data type module HDBC where class Connection conn where exec :: conn > String > IO QueryResult Implementation of abstract data type module PostgreSQLDB where import HDBC instance Connection PostgreSQLConnection where exec = pgsqlexec Extending the abstract data type class Connection conn => BetterConnection conn where notify :: conn > String > IO ()
8 Why want an abstract type? Encapsulation What is a good type for connect? Can do with connectwith :: URL > (forall c. Connection c => c > IO a) > IO a but: requires user code in continuation no connection value that can be stored not possible as member of class Connection How about connect :: URL > IO Connection where Connection behaves like a Java interface type?
9 Why want an abstract type? Encapsulation What is a good type for connect? Can do with connectwith :: URL > (forall c. Connection c => c > IO a) > IO a but: requires user code in continuation no connection value that can be stored not possible as member of class Connection How about connect :: URL > IO Connection where Connection behaves like a Java interface type?
10 Why want an abstract type? Encapsulation What is a good type for connect? Can do with connectwith :: URL > (forall c. Connection c => c > IO a) > IO a but: requires user code in continuation no connection value that can be stored not possible as member of class Connection How about connect :: URL > IO Connection where Connection behaves like a Java interface type?
11 Interfaces for Haskell A Design Proposal Type class I interface type I Type I is exists c. (I c) => c Subtyping for interface types if I is a subclass of J, then I J Subtyping for instance types if t is an instance type of J, then t J Introduction by type annotation no new syntax
12 Interfaces for Haskell A Design Proposal Type class I interface type I Type I is exists c. (I c) => c Subtyping for interface types if I is a subclass of J, then I J Subtyping for instance types if t is an instance type of J, then t J Introduction by type annotation no new syntax
13 Interfaces for Haskell A Design Proposal Type class I interface type I Type I is exists c. (I c) => c Subtyping for interface types if I is a subclass of J, then I J Subtyping for instance types if t is an instance type of J, then t J Introduction by type annotation no new syntax
14 Example Patterns of Use Create a connection betterconnect :: URL > IO BetterConnection betterconnect url = do c < pgconnect url c :: PGSQLConnection return (c :: BetterConnection) Wrapper dbwrapper :: URL > (URL > IO Connection) > IO Result dbwrapper url connect = do c < connect url do something c... dbwrapper url betterconnect... Worker worker :: Connection > IO Result withbetterconnection :: (BetterConnection > IO a) > IO a... withbetterconnection worker...
15 Collecting the Pieces Surprise! Everything needed is (almost) there
16 Collecting the Pieces Existential Types in Haskell data T Connection where T Connection :: forall conn. Connection conn => conn > T Connection data T BetterConnection where T BetterConnection :: forall conn. BetterConnection conn => conn > T BetterConnection instance T Connection Connection where... instance T Connection BetterConnection where... instance T BetterConnection BetterConnection where... Tagged existentials Need pattern match to unpack
17 Collecting the Pieces Subtyping in Haskell There is no subtyping in Haskell! But, there is the generic instance relation: forall c. BetterConnection c => c > T forall c. Connection c => c > T And there is the double negation equivalence: exists a. P => T = (forall a. P => T > x) > x Approach: Translate existential types to (higher-rank) polymorphism where possible
18 Collecting the Pieces Subtyping in Haskell There is no subtyping in Haskell! But, there is the generic instance relation: forall c. BetterConnection c => c > T forall c. Connection c => c > T And there is the double negation equivalence: exists a. P => T = (forall a. P => T > x) > x Approach: Translate existential types to (higher-rank) polymorphism where possible
19 Collecting the Pieces Subtyping in Haskell There is no subtyping in Haskell! But, there is the generic instance relation: forall c. BetterConnection c => c > T forall c. Connection c => c > T And there is the double negation equivalence: exists a. P => T = (forall a. P => T > x) > x Approach: Translate existential types to (higher-rank) polymorphism where possible
20 Collecting the Pieces Subtyping in Haskell There is no subtyping in Haskell! But, there is the generic instance relation: forall c. BetterConnection c => c > T forall c. Connection c => c > T And there is the double negation equivalence: exists a. P => T = (forall a. P => T > x) > x Approach: Translate existential types to (higher-rank) polymorphism where possible
21 Example Translation Create a Connection betterconnect :: URL > IO BetterConnection betterconnect url = do c < pgconnect url c :: PGSQLConnection return (c :: BetterConnection) translates to betterconnect :: URL > IO T BetterConnection betterconnect url = do c < pgconnect url return (T BetterConnection c)
22 Example Translation Wrapper dbwrapper :: URL > (URL > IO Connection) > IO Result dbwrapper url connect = do c < connect url do something c... dbwrapper url betterconnect... translates to dbwrapper :: URL > forall c. Connection c => (URL > IO c) > IO Result dbwrapper url connect = do c < connect url do something c betterconnect :: URL > IO T BetterConnection... dbwrapper url betterconnect...
23 Example Translation Worker worker :: Connection > IO Result withbetterconnection :: (BetterConnection > IO a) > IO a... withbetterconnection worker... translates to worker :: forall c. Connection c => c > IO Result withbetterconnection :: (forall c. BetterConnection c => c > IO a) > IO a... withbetterconnection worker...
24 Interfaces for Haskell Translational Approach Starting point: Haskell with higher-rank polymorphism (as in current implementations) Extensions: Extended syntax of types Typing rules s, t ::= I (E-ann ) (E-sub ) P Γ e : s s t P Γ (e :: t) : t P Γ e : s s t P Γ e : t
25 Subtyping (S-refl) t t (S-trans) t 1 t 2 t 2 t 3 t 1 t 3 (S-subclass) I C J I J (S-instance) m I J m J (S-tycon) s t T s T t (S-fun) t 1 s 1 s 2 t 2 s 1 s 2 t 1 t 2 (S-qual) s t a.q s a.q t
26 Restricted Subtyping t t t 1 t 2 t 2 t 3 t 1 t 3 s t T s T t t 1 s 1 s 2 t 2 s 1 s 2 t 1 t 2 Restricted subtyping vs generic instance Lemma If s t and s s and t t then true s t.
27 Restricted Subtyping t t t 1 t 2 t 2 t 3 t 1 t 3 s t T s T t t 1 s 1 s 2 t 2 s 1 s 2 t 1 t 2 Restricted subtyping vs generic instance Lemma If s t and s s and t t then true s t.
28 Translation of Types a /a t i C i /t i T t mapt (λx.c i [x]) /T t t 1 π 1 t 1 t 2 C 2 /t 2 t 1 t 2 λx.c 2 [ x]/π 1 (t 1 t 2 ) I K I /W I t C /t a.p t C / a.p t a a t π t T t π T t t 1 π 1 t 1 t 2 π 2 t 2 t 1 t 2 π 2 π 1 (t 1 t 2 ) I c.i c c t π t a.q t π a.q t
29 Translation of Terms x x e e e e s s λx.e λx.e λ(x :: s).e λ(x :: s ).e e e s c.q s s C /s λ(x :: s).e Λc(Q).λ(y :: s ).(λ(x :: s ).e ) (C [y]) f f e e f e f e e e f f let x = e in f let x = e in f e e s C /s (e :: s) (C [e ] :: s )
30 Results Let P Γ e : s be the typing judgment for Haskell with higher-rank qualified polymorphism. If P Γ e : s, s s, Γ Γ, and e e, then P Γ e : s.
31 Conclusions Type translation maps subtyping to generic instantiation Term translation is typing preserving Both are purely syntactic Q: Is the term translation meaning preserving? Q: Is the translated term amenable to type inference? Q: Can we do direct inference and translation to F2? If Java interface types make sense for Haskell, then how about type classes for Java? 07
32 Conclusions Type translation maps subtyping to generic instantiation Term translation is typing preserving Both are purely syntactic Q: Is the term translation meaning preserving? Q: Is the translated term amenable to type inference? Q: Can we do direct inference and translation to F2? If Java interface types make sense for Haskell, then how about type classes for Java? 07
33 Digression: The ML way 1 signature CONNECTION = 2 sig type connection 3 val exec : connection > string > queryresult 4 end 5 6 signature BETTERCONNECTION = 7 sig type connection 8 val exec : connection > string > queryresult 9 val notify : connection > string > unit 10 end structure PostgreSQL : BETTERCONNECTION = 13 struct type connection = postgresqlconnection 14 val exec = val notify = end Encapsulation and Extensibility: BETTERCONNECTION <: CONNECTION But: application code as a functor taking a connection.
Practical Generic Programming with OCaml
Practical Generic Programming with OCaml Jeremy Yallop LFCS, University of Edinburgh ML Workshop 2007 Instead of this... type α tree = Node of α Branch of (α tree) (α tree) val show_tree : (α string) (α
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
Lecture 12: Abstract data types
Lecture 12: Abstract data types Algebras Abstract data types Encapsulation and information hiding Parameterization Algebras Definition Which kinds of data do we want to discuss? What can we do with it?
The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1
The Java Series Java Essentials I What is Java? Basic Language Constructs Slide 1 What is Java? A general purpose Object Oriented programming language. Created by Sun Microsystems. It s a general purpose
CSCE 314 Programming Languages
CSCE 314 Programming Languages Introduction and Course Administration Dr. Hyunyoung Lee [email protected] 410B HR Bright 979-845-2490 1 CSCE 314: Programming Languages Course Homepage http://faculty.cse.tamu.edu/hlee/csce314/
Introducing Variance into the Java Programming Language DRAFT
Introducing Variance into the Java Programming Language A Quick Tutorial DRAFT Christian Plesner Hansen Peter von der Ahé Erik Ernst Mads Torgersen Gilad Bracha June 3, 2003 1 Introduction Notice: This
Part I. Multiple Choice Questions (2 points each):
Part I. Multiple Choice Questions (2 points each): 1. Which of the following is NOT a key component of object oriented programming? (a) Inheritance (b) Encapsulation (c) Polymorphism (d) Parallelism ******
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
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
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
Chapter 1 Fundamentals of Java Programming
Chapter 1 Fundamentals of Java Programming Computers and Computer Programming Writing and Executing a Java Program Elements of a Java Program Features of Java Accessing the Classes and Class Members The
Java SE 7 Programming
Java SE 7 Programming The second of two courses that cover the Java Standard Edition 7 (Java SE 7) Platform, this course covers the core Application Programming Interfaces (API) you will use to design
Busy Java Developer's Guide to Functional Programming. Ted Neward Neward & Associates http://www.tedneward.com
Busy Java Developer's Guide to Functional Programming Ted Neward Neward & Associates http://www.tedneward.com Who is this guy? Principal Consultant: architect, mentor, free agent coach BEA Technical Director,
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
Konzepte objektorientierter Programmierung
Konzepte objektorientierter Programmierung Prof. Dr. Peter Müller Werner Dietl Software Component Technology Exercises 3: Some More OO Languages Wintersemester 04/05 Agenda for Today 2 Homework Finish
Abstract Class & Java Interface
Abstract Class & Java Interface 1 Agenda What is an Abstract method and an Abstract class? What is Interface? Why Interface? Interface as a Type Interface vs. Class Defining an Interface Implementing an
Java Programming Language
Lecture 1 Part II Java Programming Language Additional Features and Constructs Topics in Quantitative Finance: Numerical Solutions of Partial Differential Equations Instructor: Iraj Kani Subclasses and
AP Computer Science Java Subset
APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall
Translating Generalized Algebraic Data Types to System F
Translating Generalized Algebraic Data Types to System F Martin Sulzmann and Meng Wang {sulzmann,wangmeng}@comp.nus.edu.sg School of Computing, National University of Singapore S16 Level 5, 3 Science Drive
Web Development in Java
Web Development in Java Detailed Course Brochure @All Rights Reserved. Techcanvass, 265, Powai Plaza, Hiranandani Garden, Powai, Mumbai www.techcanvass.com Tel: +91 22 40155175 Mob: 773 877 3108 P a g
Course MS10975A Introduction to Programming. Length: 5 Days
3 Riverchase Office Plaza Hoover, Alabama 35244 Phone: 205.989.4944 Fax: 855.317.2187 E-Mail: [email protected] Web: www.discoveritt.com Course MS10975A Introduction to Programming Length: 5 Days
Cohort: BCA/07B/PT - BCA/06/PT - BCNS/06/FT - BCNS/05/FT - BIS/06/FT - BIS/05/FT - BSE/05/FT - BSE/04/PT-BSE/06/FT
BSc (Hons) in Computer Applications, BSc (Hons) Computer Science with Network Security, BSc (Hons) Business Information Systems & BSc (Hons) Software Engineering Cohort: BCA/07B/PT - BCA/06/PT - BCNS/06/FT
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
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
Gluing things together with Haskell. Neil Mitchell http://nmitchell.co.uk/
Gluing things together with Haskell Neil Mitchell http://nmitchell.co.uk/ Code Elegantly designed Build system Test harness Continuous integration Release bundling Installer generator Release distribution
Chapter 15 Functional Programming Languages
Chapter 15 Functional Programming Languages Introduction - The design of the imperative languages is based directly on the von Neumann architecture Efficiency (at least at first) is the primary concern,
Topic VII. Data abstraction and modularity SML Modules a. References: Chapter 7 of ML for the working programmer (2ND
References: Topic VII Data abstraction and modularity SML Modules a Chapter 7 of ML for the working programmer (2ND EDITION) by L. C. Paulson. CUP, 1996. a Largely based on an Introduction to SML Modules
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
Lecture 1: Introduction
Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming
Scala type classes and machine learning. David Andrzejewski Bay Area Scala Enthusiasts - 1/14/2013, 1/16/2013
Scala type classes and machine learning David Andrzejewski Bay Area Scala Enthusiasts - 1/14/2013, 1/16/2013 Context: Sumo Logic Mission: Transform Machine Data into IT and Business Insights Offering:
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)
Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program
Free Java textbook available online "Thinking in Java" by Bruce Eckel, 4th edition, 2006, ISBN 0131872486, Pearson Education Introduction to the Java programming language CS 4354 Summer II 2015 The third
Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program
Free Java textbook available online "Thinking in Java" by Bruce Eckel, 4th edition, 2006, ISBN 0131872486, Pearson Education Introduction to the Java programming language CS 4354 Summer II 2014 Jill Seaman
Programming and Software Development CTAG Alignments
Programming and Software Development CTAG Alignments This document contains information about four Career-Technical Articulation Numbers (CTANs) for Programming and Software Development Career-Technical
History OOP languages Year Language 1967 Simula-67 1983 Smalltalk
History OOP languages Intro 1 Year Language reported dates vary for some languages... design Vs delievered 1957 Fortran High level programming language 1958 Lisp 1959 Cobol 1960 Algol Structured Programming
Taming Wildcards in Java s Type System
Taming Wildcards in Java s Type System Ross Tate University of California, San Diego [email protected] Alan Leung University of California, San Diego [email protected] Sorin Lerner University of California,
Inheritance, overloading and overriding
Inheritance, overloading and overriding Recall with inheritance the behavior and data associated with the child classes are always an extension of the behavior and data associated with the parent class
Introduction to Object-Oriented Programming
Introduction to Object-Oriented Programming Objects and classes Abstract Data Types (ADT) Encapsulation and information hiding Aggregation Inheritance and polymorphism OOP: Introduction 1 Pure Object-Oriented
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!
MLS module Sealing and Functor Design
Understanding and Evolving the ML Module System Derek Dreyer May 2005 CMU-CS-05-131 School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 Thesis Committee: Robert Harper (co-chair)
N3458: Simple Database Integration in C++11
N3458: Simple Database Integration in C++11 Thomas Neumann Technische Univeristät München [email protected] 2012-10-22 Many applications make use of relational database to store and query their data. However,
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING Kuan C. Chen, Ph.D. Assistant Professor Management Information Systems School of Management Purdue University
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
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
The Needle Programming Language
The Needle Programming Language The Needle Programming Language 1 What is Needle? Needle is an object-oriented functional programming language with a multimethod-based OO system, and a static type system
Parametric Domain-theoretic models of Linear Abadi & Plotkin Logic
Parametric Domain-theoretic models of Linear Abadi & Plotkin Logic Lars Birkedal Rasmus Ejlers Møgelberg Rasmus Lerchedahl Petersen IT University Technical Report Series TR-00-7 ISSN 600 600 February 00
COURSE OUTLINE. Prerequisites: Course Description:
Lab/Recitation Revised Fall 2015 36TITP220 21TJava Programming II COURSE OUTLINE Prerequisites: ITP120 wi ITD130 as a co-requisite or instructor s permission Course Description: Imparts instruction in
Programming Languages CIS 443
Course Objectives Programming Languages CIS 443 0.1 Lexical analysis Syntax Semantics Functional programming Variable lifetime and scoping Parameter passing Object-oriented programming Continuations Exception
core. Volume I - Fundamentals Seventh Edition Sun Microsystems Press A Prentice Hall Title ULB Darmstadt
core. 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Volume I - Fundamentals Seventh Edition CAY S. HORSTMANN GARY
Real SQL Programming 1
Real 1 We have seen only how SQL is used at the generic query interface an environment where we sit at a terminal and ask queries of a database. Reality is almost always different: conventional programs
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
1.1 WHAT IS A PROGRAMMING LANGUAGE?
1 INTRODUCTION 1.1 What is a Programming Language? 1.2 Abstractions in Programming Languages 1.3 Computational Paradigms 1.4 Language Definition 1.5 Language Translation 1.6 Language Design How we communicate
Functional Programming in C++11
Functional Programming in C++11 science + computing ag IT-Dienstleistungen und Software für anspruchsvolle Rechnernetze Tübingen München Berlin Düsseldorf An Overview Programming in a functional style
First Class Overloading via Insersection Type Parameters
First Class Overloading via Insersection Type Parameters Elton Cardoso 2, Carlos Camarão 1, and Lucilia Figueiredo 2 1 Universidade Federal de Minas Gerais, [email protected] 2 Universidade Federal de
Java SE 7 Programming
Oracle University Contact Us: 1.800.529.0165 Java SE 7 Programming Duration: 5 Days What you will learn This Java SE 7 Programming training explores the core Application Programming Interfaces (API) you'll
A Generic Type-and-Effect System
A Generic Type-and-Effect System Daniel Marino Todd Millstein Computer Science Department University of California, Los Angeles dlmarino,todd}@cs.ucla.edu Abstract Type-and-effect systems are a natural
Java SE 7 Programming
Oracle University Contact Us: Local: 1800 103 4775 Intl: +91 80 4108 4709 Java SE 7 Programming Duration: 5 Days What you will learn This Java Programming training covers the core Application Programming
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 [email protected] Meng Wang School
OutsideIn(X) Modular type inference with local assumptions
Under consideration for publication in J. Functional Programming 1 OutsideIn(X) Modular type inference with local assumptions 11 April 2011 Dimitrios Vytiniotis Microsoft Research Simon Peyton Jones Microsoft
CS 111 Classes I 1. Software Organization View to this point:
CS 111 Classes I 1 Software Organization View to this point: Data Objects and primitive types Primitive types operators (+, /,,*, %). int, float, double, char, boolean Memory location holds the data Objects
Testing Tools Content (Manual with Selenium) Levels of Testing
Course Objectives: This course is designed to train the fresher's, intermediate and professionals on testing with the concepts of manual testing and Automation with Selenium. The main focus is, once the
AURA: A language with authorization and audit
AURA: A language with authorization and audit Steve Zdancewic University of Pennsylvania WG 2.8 2008 Security-oriented Languages Limin Jia, Karl Mazurak, Jeff Vaughan, Jianzhou Zhao Joey Schorr and Luke
ios Dev Crib Sheet In the Shadow of C
ios Dev Crib Sheet As you dive into the deep end of the ios development pool, the first thing to remember is that the mother ship holds the authoritative documentation for this endeavor http://developer.apple.com/ios
Concepts and terminology in the Simula Programming Language
Concepts and terminology in the Simula Programming Language An introduction for new readers of Simula literature Stein Krogdahl Department of Informatics University of Oslo, Norway April 2010 Introduction
Contents. 9-1 Copyright (c) 1999-2004 N. Afshartous
Contents 1. Introduction 2. Types and Variables 3. Statements and Control Flow 4. Reading Input 5. Classes and Objects 6. Arrays 7. Methods 8. Scope and Lifetime 9. Utility classes 10. Introduction to
OUR COURSES 19 November 2015. All prices are per person in Swedish Krona. Solid Beans AB Kungsgatan 32 411 19 Göteborg Sweden
OUR COURSES 19 November 2015 Solid Beans AB Kungsgatan 32 411 19 Göteborg Sweden Java for beginners JavaEE EJB 3.1 JSF (Java Server Faces) PrimeFaces Spring Core Spring Advanced Maven One day intensive
DIPLOMADO DE JAVA - OCA
DIPLOMADO DE JAVA - OCA TABLA DE CONTENIDO INTRODUCCION... 3 ESTRUCTURA DEL DIPLOMADO... 4 Nivel I:... 4 Fundamentals of the Java Programming Language Java SE 7... 4 Introducing the Java Technology...
Using Files as Input/Output in Java 5.0 Applications
Using Files as Input/Output in Java 5.0 Applications The goal of this module is to present enough information about files to allow you to write applications in Java that fetch their input from a file instead
Annotated bibliography for the tutorial on Exploring typed language design in Haskell
Annotated bibliography for the tutorial on Exploring typed language design in Haskell Oleg Kiselyov 1 and Ralf Lämmel 2 1 Fleet Numerical Meteorology and Oceanography Center, Monterey, CA 2 Universität
Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
Summit Public Schools Summit, New Jersey Grade Level / Content Area: Mathematics Length of Course: 1 Academic Year Curriculum: AP Computer Science A
Summit Public Schools Summit, New Jersey Grade Level / Content Area: Mathematics Length of Course: 1 Academic Year Curriculum: AP Computer Science A Developed By Brian Weinfeld Course Description: AP Computer
Visual Basic Programming. An Introduction
Visual Basic Programming An Introduction Why Visual Basic? Programming for the Windows User Interface is extremely complicated. Other Graphical User Interfaces (GUI) are no better. Visual Basic provides
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
Specialized Programme on Web Application Development using Open Source Tools
Specialized Programme on Web Application Development using Open Source Tools A. NAME OF INSTITUTE Centre For Development of Advanced Computing B. NAME/TITLE OF THE COURSE C. COURSE DATES WITH DURATION
Unboxed Polymorphic Objects for Functional Numerical Programming
Unboxed Polymorphic Objects for Functional Numerical Programming Christopher Rodrigues [email protected] Wen-Mei Hwu [email protected] IMPACT Technical Report IMPACT-12-02 University of Illinois at
Fundamentals of Java Programming
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
The Interface Concept
Multiple inheritance Interfaces Four often used Java interfaces Iterator Cloneable Serializable Comparable The Interface Concept OOP: The Interface Concept 1 Multiple Inheritance, Example Person name()
Jedd: A BDD-based Relational Extension of Java
Jedd: A BDD-based Relational Extension of Java Ondřej Lhoták Laurie Hendren Sable Research Group, School of Computer Science McGill University, Montreal, Canada {olhotak,hendren}@sable.mcgill.ca ABSTRACT
Object-Oriented Databases
Object-Oriented Databases based on Fundamentals of Database Systems Elmasri and Navathe Acknowledgement: Fariborz Farahmand Minor corrections/modifications made by H. Hakimzadeh, 2005 1 Outline Overview
Masters programmes in Computer Science and Information Systems. Object-Oriented Design and Programming. Sample module entry test xxth December 2013
Masters programmes in Computer Science and Information Systems Object-Oriented Design and Programming Sample module entry test xxth December 2013 This sample paper has more questions than the real paper
Formal Engineering for Industrial Software Development
Shaoying Liu Formal Engineering for Industrial Software Development Using the SOFL Method With 90 Figures and 30 Tables Springer Contents Introduction 1 1.1 Software Life Cycle... 2 1.2 The Problem 4 1.3
Coeffects: Unified static analysis of context-dependence
Coeffects: Unified static analysis of context-dependence Tomas Petricek, Dominic Orchard and Alan Mycroft University of Cambridge, UK {tp322,dao29,am}@cl.cam.ac.uk Abstract. Monadic effect systems provide
CSC 272 - Software II: Principles of Programming Languages
CSC 272 - Software II: Principles of Programming Languages Lecture 1 - An Introduction What is a Programming Language? A programming language is a notational system for describing computation in machine-readable
Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition
Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating
<is web> Information Systems & Semantic Web University of Koblenz Landau, Germany
Information Systems University of Koblenz Landau, Germany Semantic Multimedia Management - Multimedia Annotation Tools http://isweb.uni-koblenz.de Multimedia Annotation Different levels of annotations
Object systems available in R. Why use classes? Information hiding. Statistics 771. R Object Systems Managing R Projects Creating R Packages
Object systems available in R Statistics 771 R Object Systems Managing R Projects Creating R Packages Douglas Bates R has two object systems available, known informally as the S3 and the S4 systems. S3
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
The CLIPS environment. The CLIPS programming language. CLIPS production rules language - facts. Notes
The CLIPS environment The CLIPS environment CLIPS is an environment to develop knowledge based systems It defines a programming language that allows to represent declarative and procedural knowledge This
Java SE 8 Programming
Oracle University Contact Us: 1.800.529.0165 Java SE 8 Programming Duration: 5 Days What you will learn This Java SE 8 Programming training covers the core language features and Application Programming
StaRVOOrS: A Tool for Combined Static and Runtime Verification of Java
StaRVOOrS: A Tool for Combined Static and Runtime Verification of Java Jesús Mauricio Chimento 1, Wolfgang Ahrendt 1, Gordon J. Pace 2, and Gerardo Schneider 3 1 Chalmers University of Technology, Sweden.
