Structured Application Development over Wide-Area Networks
|
|
|
- Bryce Barber
- 9 years ago
- Views:
Transcription
1 Structured Application Development over Wide-Area Networks William Cook, Jayadev Misra, David Kitchin, Adrian Quark, Andrew Matsuoka, John Thywissen Department of Computer Science University of Texas at Austin
2 Internet Scripting Contact two airlines simultaneously for price quotes. Buy a ticket if the quote is at most $300. Buy the cheapest ticket if both quotes are above $300. Buy a ticket if the other airline does not give a timely quote. Notify client if neither airline provides a timely quote. -
3 Orchestrating Components (services) Acquire data from services. Calculate with these data. Invoke yet other services with the results. Additionally Invoke multiple services simultaneously for failure tolerance. Repeatedly poll a service. Ask a service to notify the user when it acquires the appropriate data. Download a service and invoke it locally. Have a service call another service on behalf of the user....
4 Structured Concurrent Programming Structured Sequential Programming: Dijkstra circa 1968 Component Integration in a sequential world. Structured Concurrent Programming: Component Integration in a concurrent world.
5 Orc, an Orchestration Theory Site: Basic service or component. Concurrency combinators for integrating sites. Theory includes nothing other than the combinators. No notion of data type, thread, process, channel, synchronization, parallelism New concepts are programmed using the combinators.
6 + && < =... Examples of Sites println, random, Prompt, ... Ref, Semaphore, Channel, Database... Timer External Services: Google Search, MySpace, CNN,... Any Java Class instance Sites that create sites: MakeSemaphore, MakeChannel... Humans...
7 Sites A site is called like a procedure with parameters. Site returns at most one value. The value is published. Site calls are strict.
8 Overview of Orc Orc program has a goal expression, a set of definitions. The goal expression is executed. Its execution calls sites, publishes values.
9 Structure of Orc Expression Simple: just a site call, CNN(d) Publishes the value returned by the site. Composition of two Orc expressions: do f and g in parallel f g Symmetric composition for all x from f do g f >x> g Sequential composition for some x from g do f f <x< g Pruning
10 Structure of Orc Expression Simple: just a site call, CNN(d) Publishes the value returned by the site. Composition of two Orc expressions: do f and g in parallel f g Symmetric composition for all x from f do g f >x> g Sequential composition for some x from g do f f <x< g Pruning
11 Structure of Orc Expression Simple: just a site call, CNN(d) Publishes the value returned by the site. Composition of two Orc expressions: do f and g in parallel f g Symmetric composition for all x from f do g f >x> g Sequential composition for some x from g do f f <x< g Pruning
12 Structure of Orc Expression Simple: just a site call, CNN(d) Publishes the value returned by the site. Composition of two Orc expressions: do f and g in parallel f g Symmetric composition for all x from f do g f >x> g Sequential composition for some x from g do f f <x< g Pruning
13 Symmetric composition: f g Evaluate f and g independently. Publish all values from both. No direct communication or interaction between f and g. They can communicate only through sites. Example: CNN(d) BBC(d) calls both CNN and BBC simultaneously. Publishes values returned by both sites. ( 0, 1 or 2 values)
14 Sequential composition: f >x> g For all values published by f do g. Publish only the values from g. CNN(d) >x> (address, x) Call CNN(d). Bind result (if any) to x. Call (address, x). Publish the value, if any, returned by . (CNN(d) BBC(d)) >x> (address, x) May call twice. Publishes up to two values from . Notation: f g for f >x> g, if x unused in g.
15 Schematic of Sequential composition f g0 g1 g2 Figure: Schematic of f >x> g
16 Pruning: (f <x< g) For some value published by g do f. Evaluate f and g in parallel. Site calls that need x are suspended. see (M() N(x)) <x< g When g returns a (first) value: Bind the value to x. Terminate g. Resume suspended calls. Values published by f are the values of (f <x< g).
17 Example of Pruning (address, x) <x< (CNN(d) BBC(d)) Binds x to the first value from CNN(d) BBC(d). Sends at most one .
18 Some Fundamental Sites if(b): boolean b, returns a signal if b is true; remains silent if b is false. Rtimer(t): integer t, t 0, returns a signal t time units later. stop: never responds. Same as if(false). signal: returns a signal immediately. Same as if(true).
19 Centralized Execution Model An expression is evaluated on a single machine (client). Client communicates with sites by messages.
20 Expression Definition def MailOnce(a) = (a, m) <m< (CNN(d) BBC(d)) def MailLoop(a, t) = MailOnce(a) Rtimer(t) MailLoop(a, t) def metronome() = signal (Rtimer(1) metronome()) metronome() stockquote() Expression is called like a procedure. It may publish many values. MailLoop does not publish. Site calls are strict; expression calls non-strict.
21 Functional Core Language Data Types: Number, Boolean, String, with usual operators Conditional Expression: if E then F else G Data structures: Tuple and List Pattern Matching Function Definition; Closure
22 Variable Binding; Silent expression val x = val y = x + x val z = x/0 -- expression is silent val u = if (0 < 5) then 0 else z
23 Translating Functional Core to Pure Orc Operators to Site calls: 1 + (2 + 3) to add(1, x) <x< add(2, 3) if E then F else G: (if(b) F not(b) >c> if(c) G) <b< E val x = G followed by F: F <x< G Data Structures, Patterns: Site calls and variable bindings Function Definitions: Orc definitions
24 Comingling with Orc expressions Components of Orc expression could be functional. Components of functional expression could be Orc. (1 + 2) (2 + 3) (1 2) + (2 3) Convention: whenever expression F appears in a context where a single value is expected, convert it to x <x< F is (x <x< add(1, 2)) (y <y< add(2, 3)) (1 2) + (2 3) is (add(x, y) <x< (1 2)) <y< (2 3)
25 Example: Fibonacci numbers def H(0) = (1, 1) def H(n) = H(n 1) >(x, y)> (y, x + y) def Fib(n) = H(n) >(x, _)> x {- Goal expression -} Fib(5)
26 Some Typical Applications Adaptive Workflow (Business process management): Workflow lasting over months or years Security, Failure, Long-lived Data Extended 911: Using humans as components Components join and leave Real-time response Network simulation: Experiments with differing traffic and failure modes Animation
27 Some Typical Applications, contd. Grid Computations Music Composition Traffic simulation Computation Animation
28 Some Typical Applications, contd. Map-Reduce using a server farm Thread management in an operating system Mashups (Internet Scripting). Concurrent Programming on Android.
29 Time-out Publish M s response if it arrives before time t, Otherwise, publish 0. z <z< (M() (Rtimer(t) 0)), or val z = M() (Rtimer(t) 0) z
30 Fork-join parallelism Call M and N in parallel. Return their values as a tuple after both respond. or, ((u, v) <u< M()) <v< N() (M(), N())
31 Recursive definition with time-out Call a list of sites simultaneously. Count the number of responses received within 10 time units. def tally([]) = 0 def tally(m : MS) = (M() 1 Rtimer(10) 0) + tally(ms)
32 Barrier Synchronization in M() f N() g f and g start only after both M and N complete. Rendezvous of CSP or CCS; M and N are complementary actions. (M(), N()) (f g)
33 Priority Publish N s response asap, but no earlier than 1 unit from now. Apply fork-join between Rtimer(1) and N. val (u, _) = (N(), Rtimer(1)) Call M, N together. If M responds within one unit, publish its response. Else, publish the first response. val x = M() u
34 Interrupt f Evaluation of f can not be directly interrupted. Introduce a semaphore interrupt: interrupt.release(): to interrupt f interrupt.acquire(): responds after interrupt.release() has been called. Instead of evaluating evaluate val z = f val (z, b) = f >x> (x, true) interrupt.acquire() >x> (x, false)
35 Parallel or Sites M and N return booleans. Compute their parallel or. val x = M() val y = N() if(x) true if(y) true (x y) To return just one value: val x = M() val y = N() val z = if(x) true if(y) true (x y) z
36 Airline quotes: Application of Parallel or Contact airlines A and B. Return any quote if it is below $300 as soon as it is available, otherwise return the minimum quote. threshold(x) returns x if x < 300; silent otherwise. Min(x, y) returns the minimum of x and y. val x = A() val y = B() val z = threshold(x) threshold(y) Min(x, y) z
37 Backtracking: Eight queens x... 0 x 0 1 x x 7 x x x Row 1 Row 2 Row 3 Figure: Backtrack Search for Eight queens
38 Eight queens; contd. xs: partial placement of queens (list of values from 0..7) extend(xs) publishes all solutions that are extensions of xs. open(xs) publishes the columns that are open in the next row. Solve the original problem by calling extend([]). def extend(xs) = if (length(xs) = 8) then xs else (open(xs) >j> extend(j : xs))
39 Mutable Structures val r = Ref() r.write(3), or r := 3 r.read(), or r? def swaprefs(x, y) = (x?, y?) >(xv, yv)> (x := yv, y := xv)
40 Random Permutation val N = size of permutation array val ar = fillarray(array(n), lambda(i) = i) -- Randomize array a of size n, n 1 def randomize(1) = signal def randomize(n) = random(n) >k> swaprefs(ar(n 1), ar(k)) randomize(n 1) randomize(n)
41 Binary Search Tree; Pointer Manipulation def search(key) = -- return true or false searchstart(key) >(_, _, q)> (q null) def insert(key) = -- true if value was inserted, false if it was there searchstart(key) >(p, d, q)> if q = null then Ref() >r> r := (key, null, null) update(p, d, r) true else false def delete(key) =
42 Semaphore val s = Semaphore(2) -- s is a semaphore with initial value 2 s.acquire() s.release() Rendezvous: val s = Semaphore(0) val t = Semaphore(0) def send() = t.release() s.acquire() def receive() = t.acquire() s.release() n-party Rendezvous using 2(n 1) semaphores.
43 val req = Buffer() val cb = Counter() Readers-Writers def rw() = req.get() >(b, s)> ( if(b) cb.inc() s.release() rw() if( b) cb.onzero() cb.inc() s.release() cb.onzero() rw() ) def start(b) = val s = Semaphore(0) req.put((b, s)) s.acquire() def quit() = cb.dec()
44 Processes Processes typically communicate via channels. For channel c, treat c.put and c.get as site calls. In our examples, c.get is blocking and c.put is non-blocking. Other kinds of channels can be programmed as sites.
45 Typical Iterative Process Forever: Read x from channel c, compute with x, output result on e: def P(c, e) = c.get() >x> Compute(x) >y> e.put(y) P(c, e) c Compute e P(c,e) Figure: Iterative Process
46 Process Network Process (network) to read from both c and d and write on e: def Net(c, d, e) = P(c, e) P(d, e) c P(c,e) e d P(d,e) Net(c,d,e) Figure: Network of Iterative Processes
47 Workload Balancing Read from c, assign work randomly to one of the processes. def bal(c, c, d ) = c.get() >x> random(2) >t> (if t = 0 then c.put(x) else d.put(x)) bal(c, c, d ) def WorkBal(c, e) = val c = Buffer() val d = Buffer() bal(c, c, d ) Net(c, d, e) c bal c d P(c,e) P(d,e) e WorkBal(c,e) Figure: Workload Balancing in a network of Processes
48 Laws Based on Kleene Algebra (Zero and ) f stop = f (Commutativity of ) f g = g f (Associativity of ) (f g) h = f (g h) (Idempotence of ) NO f f = f (Associativity of ) (f g) h = f (g h) (Left zero of ) stop f = stop (Right zero of ) NO f stop = stop (Left unit of ) signal f = f (Right unit of ) f >x> let(x) = f (Left Distributivity of over ) NO f (g h) = (f g) (f h) (Right Distributivity of over ) (f g) h = (f h g h)
49 Additional Laws (Distributivity over ) if g is x-free ((f g) <x< h) = (f <x< h) g (Distributivity over ) if g is x-free ((f g) <x< h) = (f <x< h) g (Distributivity over << ) if g is y-free ((f <x< g) <y< h) = ((f <y< h) <x< g) (Elimination of where) if f is x-free, for site M (f <x< M) = f (M stop)
Workflow Patterns in Orc
Workflow Patterns in Orc William R. Cook, Sourabh Patwardhan, and Jayadev Misra Department of Computer Sciences, University of Texas at Austin {wcook,sourabh,misra}@cs.utexas.edu Abstract. Van der Aalst
Mutual Exclusion using Monitors
Mutual Exclusion using Monitors Some programming languages, such as Concurrent Pascal, Modula-2 and Java provide mutual exclusion facilities called monitors. They are similar to modules in languages that
Section IV.1: Recursive Algorithms and Recursion Trees
Section IV.1: Recursive Algorithms and Recursion Trees Definition IV.1.1: A recursive algorithm is an algorithm that solves a problem by (1) reducing it to an instance of the same problem with smaller
Concurrent Programming
Concurrent Programming Principles and Practice Gregory R. Andrews The University of Arizona Technische Hochschule Darmstadt FACHBEREICH INFCRMATIK BIBLIOTHEK Inventar-Nr.:..ZP.vAh... Sachgebiete:..?r.:..\).
It is the thinnest layer in the OSI model. At the time the model was formulated, it was not clear that a session layer was needed.
Session Layer The session layer resides above the transport layer, and provides value added services to the underlying transport layer services. The session layer (along with the presentation layer) add
Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture
Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts
Chapter 6, The Operating System Machine Level
Chapter 6, The Operating System Machine Level 6.1 Virtual Memory 6.2 Virtual I/O Instructions 6.3 Virtual Instructions For Parallel Processing 6.4 Example Operating Systems 6.5 Summary Virtual Memory General
ML for the Working Programmer
ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming
Pseudo code Tutorial and Exercises Teacher s Version
Pseudo code Tutorial and Exercises Teacher s Version Pseudo-code is an informal way to express the design of a computer program or an algorithm in 1.45. The aim is to get the idea quickly and also easy
Programming Database lectures for mathema
Programming Database lectures for mathematics students April 25, 2015 Functions Functions are defined in Postgres with CREATE FUNCTION name(parameter type,...) RETURNS result-type AS $$ function-body $$
Real Time Programming: Concepts
Real Time Programming: Concepts Radek Pelánek Plan at first we will study basic concepts related to real time programming then we will have a look at specific programming languages and study how they realize
Introduction to Parallel Programming and MapReduce
Introduction to Parallel Programming and MapReduce Audience and Pre-Requisites This tutorial covers the basics of parallel programming and the MapReduce programming model. The pre-requisites are significant
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa September 14, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction
Architectural Patterns (3)
Scatter/Gather Architectural Patterns (3) Prof. Cesare Pautasso http://www.pautasso.info [email protected] @pautasso Goal: send the same message to multiple recipients which will (or may) reply to
Programming Exercises
s CMPS 5P (Professor Theresa Migler-VonDollen ): Assignment #8 Problem 6 Problem 1 Programming Exercises Modify the recursive Fibonacci program given in the chapter so that it prints tracing information.
Basic Programming and PC Skills: Basic Programming and PC Skills:
Texas University Interscholastic League Contest Event: Computer Science The contest challenges high school students to gain an understanding of the significance of computation as well as the details of
Lesson Objectives. To provide a grand tour of the major operating systems components To provide coverage of basic computer system organization
Lesson Objectives To provide a grand tour of the major operating systems components To provide coverage of basic computer system organization AE3B33OSD Lesson 1 / Page 2 What is an Operating System? A
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG
Channel Access Client Programming Andrew Johnson Computer Scientist, AES-SSG Channel Access The main programming interface for writing Channel Access clients is the library that comes with EPICS base Written
A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:
Binary Search Trees 1 The general binary tree shown in the previous chapter is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will)
Chapter 5. Recursion. Data Structures and Algorithms in Java
Chapter 5 Recursion Data Structures and Algorithms in Java Objectives Discuss the following topics: Recursive Definitions Method Calls and Recursion Implementation Anatomy of a Recursive Call Tail Recursion
AP Computer Science Java Mr. Clausen Program 9A, 9B
AP Computer Science Java Mr. Clausen Program 9A, 9B PROGRAM 9A I m_sort_of_searching (20 points now, 60 points when all parts are finished) The purpose of this project is to set up a program that will
Arena Tutorial 1. Installation STUDENT 2. Overall Features of Arena
Arena Tutorial This Arena tutorial aims to provide a minimum but sufficient guide for a beginner to get started with Arena. For more details, the reader is referred to the Arena user s guide, which can
IT2305 Database Systems I (Compulsory)
Database Systems I (Compulsory) INTRODUCTION This is one of the 4 modules designed for Semester 2 of Bachelor of Information Technology Degree program. CREDITS: 04 LEARNING OUTCOMES On completion of this
Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification
Introduction Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification Advanced Topics in Software Engineering 1 Concurrent Programs Characterized by
Data Structures and Algorithms
Data Structures and Algorithms CS245-2016S-06 Binary Search Trees David Galles Department of Computer Science University of San Francisco 06-0: Ordered List ADT Operations: Insert an element in the list
MS Access: Advanced Tables and Queries. Lesson Notes Author: Pamela Schmidt
Lesson Notes Author: Pamela Schmidt Tables Text Fields (Default) Text or combinations of text and numbers, as well as numbers that don't require calculations, such as phone numbers. or the length set by
CSE 530A Database Management Systems. Introduction. Washington University Fall 2013
CSE 530A Database Management Systems Introduction Washington University Fall 2013 Overview Time: Mon/Wed 7:00-8:30 PM Location: Crow 206 Instructor: Michael Plezbert TA: Gene Lee Websites: http://classes.engineering.wustl.edu/cse530/
Ordered Lists and Binary Trees
Data Structures and Algorithms Ordered Lists and Binary Trees Chris Brooks Department of Computer Science University of San Francisco Department of Computer Science University of San Francisco p.1/62 6-0:
1. INTRODUCTION TO RDBMS
Oracle For Beginners Page: 1 1. INTRODUCTION TO RDBMS What is DBMS? Data Models Relational database management system (RDBMS) Relational Algebra Structured query language (SQL) What Is DBMS? Data is one
Tuple spaces and Object spaces. Distributed Object Systems 12. Tuple spaces and Object spaces. Communication. Tuple space. Mechanisms 2.
Distributed Object Systems 12 Tuple spaces and Object spaces Tuple spaces and Object spaces Tuple spaces Shared memory as a mechanism for exchanging data in a distributed setting (i.e. separate from processes)
Traditional IBM Mainframe Operating Principles
C H A P T E R 1 7 Traditional IBM Mainframe Operating Principles WHEN YOU FINISH READING THIS CHAPTER YOU SHOULD BE ABLE TO: Distinguish between an absolute address and a relative address. Briefly explain
Design Patterns in C++
Design Patterns in C++ Concurrency Patterns Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa May 4, 2011 G. Lipari (Scuola Superiore Sant Anna) Concurrency Patterns May 4,
fakultät für informatik informatik 12 technische universität dortmund Data flow models Peter Marwedel Informatik 12 TU Dortmund Germany
12 Data flow models Peter Marwedel Informatik 12 TU Dortmund Germany Models of computation considered in this course Communication/ local computations Communicating finite state machines Data flow model
Big Data and Analytics by Seema Acharya and Subhashini Chellappan Copyright 2015, WILEY INDIA PVT. LTD. Introduction to Pig
Introduction to Pig Agenda What is Pig? Key Features of Pig The Anatomy of Pig Pig on Hadoop Pig Philosophy Pig Latin Overview Pig Latin Statements Pig Latin: Identifiers Pig Latin: Comments Data Types
Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner
1 vk» Java 7 Recipes (,\['«** - < g!p#«josh Juneau Carl Dea Freddy Guime John O'Conner Contents J Contents at a Glance About the Authors About the Technical Reviewers Acknowledgments Introduction iv xvi
Lecture 2 Notes: Flow of Control
6.096 Introduction to C++ January, 2011 Massachusetts Institute of Technology John Marrero Lecture 2 Notes: Flow of Control 1 Motivation Normally, a program executes statements from first to last. The
Virtuozzo Virtualization SDK
Virtuozzo Virtualization SDK Programmer's Guide February 18, 2016 Copyright 1999-2016 Parallels IP Holdings GmbH and its affiliates. All rights reserved. Parallels IP Holdings GmbH Vordergasse 59 8200
CSC 2405: Computer Systems II
CSC 2405: Computer Systems II Spring 2013 (TR 8:30-9:45 in G86) Mirela Damian http://www.csc.villanova.edu/~mdamian/csc2405/ Introductions Mirela Damian Room 167A in the Mendel Science Building [email protected]
C#5.0 IN A NUTSHELL. Joseph O'REILLY. Albahari and Ben Albahari. Fifth Edition. Tokyo. Sebastopol. Beijing. Cambridge. Koln.
Koln C#5.0 IN A NUTSHELL Fifth Edition Joseph Albahari and Ben Albahari O'REILLY Beijing Cambridge Farnham Sebastopol Tokyo Table of Contents Preface xi 1. Introducing C# and the.net Framework 1 Object
What Is Recursion? Recursion. Binary search example postponed to end of lecture
Recursion Binary search example postponed to end of lecture What Is Recursion? Recursive call A method call in which the method being called is the same as the one making the call Direct recursion Recursion
Relational Databases
Relational Databases Jan Chomicki University at Buffalo Jan Chomicki () Relational databases 1 / 18 Relational data model Domain domain: predefined set of atomic values: integers, strings,... every attribute
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
Shared Address Space Computing: Programming
Shared Address Space Computing: Programming Alistair Rendell See Chapter 6 or Lin and Synder, Chapter 7 of Grama, Gupta, Karypis and Kumar, and Chapter 8 of Wilkinson and Allen Fork/Join Programming Model
1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
Introduction to Algorithms March 10, 2004 Massachusetts Institute of Technology Professors Erik Demaine and Shafi Goldwasser Quiz 1.
Introduction to Algorithms March 10, 2004 Massachusetts Institute of Technology 6.046J/18.410J Professors Erik Demaine and Shafi Goldwasser Quiz 1 Quiz 1 Do not open this quiz booklet until you are directed
Monitors, Java, Threads and Processes
Monitors, Java, Threads and Processes 185 An object-oriented view of shared memory A semaphore can be seen as a shared object accessible through two methods: wait and signal. The idea behind the concept
Common Data Structures
Data Structures 1 Common Data Structures Arrays (single and multiple dimensional) Linked Lists Stacks Queues Trees Graphs You should already be familiar with arrays, so they will not be discussed. Trees
Chapter 13: Query Processing. Basic Steps in Query Processing
Chapter 13: Query Processing! Overview! Measures of Query Cost! Selection Operation! Sorting! Join Operation! Other Operations! Evaluation of Expressions 13.1 Basic Steps in Query Processing 1. Parsing
12-6 Write a recursive definition of a valid Java identifier (see chapter 2).
CHAPTER 12 Recursion Recursion is a powerful programming technique that is often difficult for students to understand. The challenge is explaining recursion in a way that is already natural to the student.
D. SamKnows Methodology 20 Each deployed Whitebox performs the following tests: Primary measure(s)
v. Test Node Selection Having a geographically diverse set of test nodes would be of little use if the Whiteboxes running the test did not have a suitable mechanism to determine which node was the best
Load Balancing and Termination Detection
Chapter 7 slides7-1 Load Balancing and Termination Detection slides7-2 Load balancing used to distribute computations fairly across processors in order to obtain the highest possible execution speed. Termination
Output: 12 18 30 72 90 87. struct treenode{ int data; struct treenode *left, *right; } struct treenode *tree_ptr;
50 20 70 10 30 69 90 14 35 68 85 98 16 22 60 34 (c) Execute the algorithm shown below using the tree shown above. Show the exact output produced by the algorithm. Assume that the initial call is: prob3(root)
Operating system Dr. Shroouq J.
3 OPERATING SYSTEM STRUCTURES An operating system provides the environment within which programs are executed. The design of a new operating system is a major task. The goals of the system must be well
Resurrecting Ada s Rendez-Vous in Java
Resurrecting Ada s Rendez-Vous in Java Luis Mateu, José M. Piquer and Juan León DCC - Universidad de Chile Casilla 2777, Santiago, Chile [email protected] Abstract Java is a programming language designed
Spring 2011 Prof. Hyesoon Kim
Spring 2011 Prof. Hyesoon Kim Today, we will study typical patterns of parallel programming This is just one of the ways. Materials are based on a book by Timothy. Decompose Into tasks Original Problem
ODBC Client Driver Help. 2015 Kepware, Inc.
2015 Kepware, Inc. 2 Table of Contents Table of Contents 2 4 Overview 4 External Dependencies 4 Driver Setup 5 Data Source Settings 5 Data Source Setup 6 Data Source Access Methods 13 Fixed Table 14 Table
CS 3719 (Theory of Computation and Algorithms) Lecture 4
CS 3719 (Theory of Computation and Algorithms) Lecture 4 Antonina Kolokolova January 18, 2012 1 Undecidable languages 1.1 Church-Turing thesis Let s recap how it all started. In 1990, Hilbert stated a
COSC 1020 3.0 Introduction to Computer Science I Section A, Summer 2005. Question Out of Mark A Total 16. B-1 7 B-2 4 B-3 4 B-4 4 B Total 19
Term Test #2 COSC 1020 3.0 Introduction to Computer Science I Section A, Summer 2005 Family Name: Given Name(s): Student Number: Question Out of Mark A Total 16 B-1 7 B-2 4 B-3 4 B-4 4 B Total 19 C-1 4
Java Virtual Machine Locks
Java Virtual Machine Locks SS 2008 Synchronized Gerald SCHARITZER (e0127228) 2008-05-27 Synchronized 1 / 13 Table of Contents 1 Scope...3 1.1 Constraints...3 1.2 In Scope...3 1.3 Out of Scope...3 2 Logical
COSC 6397 Big Data Analytics. 2 nd homework assignment Pig and Hive. Edgar Gabriel Spring 2015
COSC 6397 Big Data Analytics 2 nd homework assignment Pig and Hive Edgar Gabriel Spring 2015 2 nd Homework Rules Each student should deliver Source code (.java files) Documentation (.pdf,.doc,.tex or.txt
Course: Programming II - Abstract Data Types. The ADT Stack. A stack. The ADT Stack and Recursion Slide Number 1
Definition Course: Programming II - Abstract Data Types The ADT Stack The ADT Stack is a linear sequence of an arbitrary number of items, together with access procedures. The access procedures permit insertions
Client/Server Computing Distributed Processing, Client/Server, and Clusters
Client/Server Computing Distributed Processing, Client/Server, and Clusters Chapter 13 Client machines are generally single-user PCs or workstations that provide a highly userfriendly interface to the
2.3 WINDOW-TO-VIEWPORT COORDINATE TRANSFORMATION
2.3 WINDOW-TO-VIEWPORT COORDINATE TRANSFORMATION A world-coordinate area selected for display is called a window. An area on a display device to which a window is mapped is called a viewport. The window
A Propositional Dynamic Logic for CCS Programs
A Propositional Dynamic Logic for CCS Programs Mario R. F. Benevides and L. Menasché Schechter {mario,luis}@cos.ufrj.br Abstract This work presents a Propositional Dynamic Logic in which the programs are
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
Synchronization in. Distributed Systems. Cooperation and Coordination in. Distributed Systems. Kinds of Synchronization.
Cooperation and Coordination in Distributed Systems Communication Mechanisms for the communication between processes Naming for searching communication partners Synchronization in Distributed Systems But...
Exceptions in MIPS. know the exception mechanism in MIPS be able to write a simple exception handler for a MIPS machine
7 Objectives After completing this lab you will: know the exception mechanism in MIPS be able to write a simple exception handler for a MIPS machine Introduction Branches and jumps provide ways to change
SMock A Test Platform for the Evaluation of Monitoring Tools
SMock A Test Platform for the Evaluation of Monitoring Tools User Manual Ruth Mizzi Faculty of ICT University of Malta June 20, 2013 Contents 1 Introduction 3 1.1 The Architecture and Design of SMock................
SnapLogic Salesforce Snap Reference
SnapLogic Salesforce Snap Reference Document Release: October 2012 SnapLogic, Inc. 71 East Third Avenue San Mateo, California 94401 U.S.A. www.snaplogic.com Copyright Information 2012 SnapLogic, Inc. All
agileworkflow Manual 1. agileworkflow 2. The repository 1 of 29 Contents Definition
agileworkflow Manual Contents 1. Intro 2. Repository 3. Diagrams 4. Agents 4.1. Dispatcher Service 4.2. Event Service 4.3. Execution Service 5. Variables 6. Instances 7. Events 7.1. External 7.2. File
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,
IT2304: Database Systems 1 (DBS 1)
: Database Systems 1 (DBS 1) (Compulsory) 1. OUTLINE OF SYLLABUS Topic Minimum number of hours Introduction to DBMS 07 Relational Data Model 03 Data manipulation using Relational Algebra 06 Data manipulation
Operating Systems 4 th Class
Operating Systems 4 th Class Lecture 1 Operating Systems Operating systems are essential part of any computer system. Therefore, a course in operating systems is an essential part of any computer science
L7_L10. MongoDB. Big Data and Analytics by Seema Acharya and Subhashini Chellappan Copyright 2015, WILEY INDIA PVT. LTD.
L7_L10 MongoDB Agenda What is MongoDB? Why MongoDB? Using JSON Creating or Generating a Unique Key Support for Dynamic Queries Storing Binary Data Replication Sharding Terms used in RDBMS and MongoDB Data
Translating to Java. Translation. Input. Many Level Translations. read, get, input, ask, request. Requirements Design Algorithm Java Machine Language
Translation Translating to Java Introduction to Computer Programming The job of a programmer is to translate a problem description into a computer language. You need to be able to convert a problem description
Simulation Tools. Python for MATLAB Users I. Claus Führer. Automn 2009. Claus Führer Simulation Tools Automn 2009 1 / 65
Simulation Tools Python for MATLAB Users I Claus Führer Automn 2009 Claus Führer Simulation Tools Automn 2009 1 / 65 1 Preface 2 Python vs Other Languages 3 Examples and Demo 4 Python Basics Basic Operations
Cluster to Cluster Failover Using Double-Take
Cluster to Cluster Failover Using Double-Take Cluster to Cluster Failover Using Double-Take published August 2001 NSI and Double-Take are registered trademarks of Network Specialists, Inc. GeoCluster is
Elixir Schedule Designer User Manual
Elixir Schedule Designer User Manual Release 7.3 Elixir Technology Pte Ltd Elixir Schedule Designer User Manual: Release 7.3 Elixir Technology Pte Ltd Published 2008 Copyright 2008 Elixir Technology Pte
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
Introduction. What is an Operating System?
Introduction What is an Operating System? 1 What is an Operating System? 2 Why is an Operating System Needed? 3 How Did They Develop? Historical Approach Affect of Architecture 4 Efficient Utilization
The Workflow Management Coalition Specification Workflow Management Coalition Terminology & Glossary
The Workflow Management Coalition Specification Workflow Management Coalition Terminology & Glossary Workflow The automation of a business process, in whole or part, during which documents, information
10CS35: Data Structures Using C
CS35: Data Structures Using C QUESTION BANK REVIEW OF STRUCTURES AND POINTERS, INTRODUCTION TO SPECIAL FEATURES OF C OBJECTIVE: Learn : Usage of structures, unions - a conventional tool for handling a
Disfer. Sink - Sensor Connectivity and Sensor Android Application. Protocol implementation: Charilaos Stais (stais AT aueb.gr)
Disfer Sink - Sensor Connectivity and Sensor Android Application Protocol implementation: Charilaos Stais (stais AT aueb.gr) Android development: Dimitri Balerinas (dimi.balerinas AT gmail.com) Supervised
Chapter 1 Computer System Overview
Operating Systems: Internals and Design Principles Chapter 1 Computer System Overview Eighth Edition By William Stallings Operating System Exploits the hardware resources of one or more processors Provides
Compiler Construction
Compiler Construction Regular expressions Scanning Görel Hedin Reviderad 2013 01 23.a 2013 Compiler Construction 2013 F02-1 Compiler overview source code lexical analysis tokens intermediate code generation
Implementing and testing tftp
CSE123 Spring 2013 Term Project Implementing and testing tftp Project Description Checkpoint: May 10, 2013 Due: May 29, 2013 For this project you will program a client/server network application in C on
Computational Mathematics with Python
Computational Mathematics with Python Basics Claus Führer, Jan Erik Solem, Olivier Verdier Spring 2010 Claus Führer, Jan Erik Solem, Olivier Verdier Computational Mathematics with Python Spring 2010 1
Introduction to Programming System Design. CSCI 455x (4 Units)
Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures,
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D.
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D. base address 2. The memory address of fifth element of an array can be calculated
Linux Process Scheduling Policy
Lecture Overview Introduction to Linux process scheduling Policy versus algorithm Linux overall process scheduling objectives Timesharing Dynamic priority Favor I/O-bound process Linux scheduling algorithm
DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING Question Bank Subject Name: EC6504 - Microprocessor & Microcontroller Year/Sem : II/IV
DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING Question Bank Subject Name: EC6504 - Microprocessor & Microcontroller Year/Sem : II/IV UNIT I THE 8086 MICROPROCESSOR 1. What is the purpose of segment registers
Spark ΕΡΓΑΣΤΗΡΙΟ 10. Prepared by George Nikolaides 4/19/2015 1
Spark ΕΡΓΑΣΤΗΡΙΟ 10 Prepared by George Nikolaides 4/19/2015 1 Introduction to Apache Spark Another cluster computing framework Developed in the AMPLab at UC Berkeley Started in 2009 Open-sourced in 2010
Input / Output and I/O Strategies
The Four Major Input / Output Strategies Preliminary Definitions A Silly Example to Illustrate Basic Definitions Input / Output and I/O Strategies A Context for Advanced I/O Strategies The Four Strategies
Relational Database: Additional Operations on Relations; SQL
Relational Database: Additional Operations on Relations; SQL Greg Plaxton Theory in Programming Practice, Fall 2005 Department of Computer Science University of Texas at Austin Overview The course packet
Parquet. Columnar storage for the people
Parquet Columnar storage for the people Julien Le Dem @J_ Processing tools lead, analytics infrastructure at Twitter Nong Li [email protected] Software engineer, Cloudera Impala Outline Context from various
Hadoop Parallel Data Processing
MapReduce and Implementation Hadoop Parallel Data Processing Kai Shen A programming interface (two stage Map and Reduce) and system support such that: the interface is easy to program, and suitable for
