Size: px
Start display at page:

Download ""

Transcription

1 Chapter 6 A Case Study: The Eiht Queens Puzzle This chapter presents the ærst of several case studies èor paradims, in the oriinal sense of the wordè of prorams written in an object-oriented style. The prorams in this Chapter will be rather small so that we can present versions in several diæerent lanaues. Later case studies will be presented in only one lanuae. After ærst describin the problem, we will discuss how an object-oriented solution would diæer from another type of solution. The chapter then concludes with a solution written in each lanuae. 6.1 The Eiht-Queens Puzzle In the ame of chess, the queen can attack any piece that lies on the same row, on the same column, or alon a diaonal. The eiht-queens is a classic loic puzzle. The task is to place eiht queens on a chessboard in such a fashion that no queen can attack any other queen. A solution is shown in Fiure 6.1, but this solution is not unique. The eiht-queens puzzle is often used to illustrate problem-solvin or backtrackin techniques. How would an object-oriented solution to the eiht-queens puzzle diæer from a solution written in a conventional imperative prorammin lanuae? In a conventional solution, some sort of data structure would be used to maintain the positions of the pieces. A proram would then solve the puzzle by systematically manipulatin the values in these data structures, testin each new position to see whether it satisæed the property that no queen can attack any other. We can provide an amusin but nevertheless illustrative metaphor for the difference between a conventional and an object-oriented solution. A conventional proram is like a human bein sittin above the board, and movin the chess pieces, which have no animate life of their own. In an object-oriented solution, 125

2 126 CHAPTER 6. A CASE STUDY: THE EIGHT QUEENS PUZZLE Q Q Q Q Q Q Q Q Fiure 6.1: í One solution to the eiht-queens puzzle. on the other hand, we will empower the pieces to solve the problem themselves. That is, instead of a sinle monolithic entity controllin the outcome, we will distribute responsibility for ændin the solution amon many interactin aents. It is as if the chess pieces themselves are animate beins who interact with each other and take chare of ændin their own solution. Thus, the essence of our object-oriented solution will be to create objects that represent each of the queens, and to provide them with the abilities to discover the solution. With the computin-as-simulation view of Chapter 1, we are creatin a model universe, deænin behavior for the objects in this universe, then settin the universe in motion. When the activity of the universe stabilizes, the solution has been found Creatin Objects That Find Their Own Solution How miht we deæne the behavior of a queen object so that a roup of queens workin toether can ænd a solution on their own? The ærst observation is that, in any solution, no two queens can occupy the same column, and consequently no column can be empty. At the start we can therefore assin a speciæc column to each queen and reduce the problem to the simpler task of ændin an appropriate row. To ænd a solution it is clear that the queens will need to communicate with each other. Realizin this, we can make a second important observation that will reatly simplify our prorammin taskínamely, each queen needs to know only about the queens to her immediate left. Thus, the data values maintained for each queen will consist of three values: a column value, which is immutable; a row value, which is altered in pursuit of a solution; and the neihborin queen to the immediate left. Let us deæne an acceptable solution for column n to be a conæuration of

3 6.2. USING GENERATORS 127 columns 1 throuh n in which no queen can attack any other queen in those columns. Each queen will be chared with ændin acceptable solutions between herself and her neihbors on her left. We will ænd a solution to the entire puzzle by askin the riht most queen to ænd an acceptable solution. A CRC-card description of the class Queen, includin the data manaed by each instance èrecall that this information is described on the back side of the cardè, is shown in Fiure Usin Generators As with many similar problems, the solution to the eiht-queens puzzle involves two interactin steps: eneratin possible partial solutions and ælterin out solutions that fail to satisfy some later oal. This style of problem solvin is sometimes known as the enerate and test paradim. Let us consider the ælter step ærst, as it is easier. For the system to test a potential solution it is suæcient for a queen to take a coordinate èrow-columnè pair and produce a Boolean value that indicates whether that queen, or any queen to her left, can attack the iven location. A pseudo code alorithm that checks to see whether a queen can attack a speciæc position is iven below. The procedure canattack uses the fact that, for a diaonal motion, the diæerences in rows must be equal to the diæerences in columns. function queen.canattackètestrow, testcolumnè -é boolean èæ test for same row æè if row = testrow then return true èæ test diaonals æè columndifference := testcolumn - column if èrow + columndifference = testrowè or èrow - columndifference = testrowè then return true èæ we can't attack, see if neihbor can æè return neihbor.canattackètestrow, testcolumnè Initialization We will divide the task of ændin a solution into parts. The method initialize establishes the initial conditions necessary for a queen object, which in this case simply means settin the data values. This is usually followed immediately by a call on ændsolution to discover a solution for the iven column. Because such a

4 128 CHAPTER 6. A CASE STUDY: THE EIGHT QUEENS PUZZLE Queen initialize í initialize row, then ænd ærst acceptable solution for self and neihbor advance í advance row and ænd next acceptable solution canattack í see whether a position can be attacked by self or neihbors Queen í data values row í current row number èchanesè column í column number èæxedè neihbor í neihbor to left èæxedè Fiure 6.2: ífront and back sides of the Queen CRC card.

5 6.2. USING GENERATORS 129 solution will often not be satisfactory to subsequent queens, the messae advance is used to advance to the next solution. A queen in column n is initialized by bein iven a column number, and the neihborin queen èthe queen in column n, 1è. At this level of analysis, we will leave unspeciæed the actions of the leftmost queen, who has no neihbor. We will explore various alternative actions in the example problems we subsequently present. We will assume the neihbor queens èif anyè have already been initialized, which includes their havin found a mutually satisfactory solution. The queen in the current column simply places herself in row 1. A pseudo-code description of the alorithm is shown below. function queen.initializeècol, neihè -é boolean èæ initialize our column and neihbor values æè column := col neihbor := neih èæ start in row 1 æè row := 1 return findsolution; Findin a Solution To ænd a solution, a queen simply asks its neihbors if they can attack. If so, then the queen advances herself, if possible èreturnin failure if she cannotè. When the neihbors indicate they cannot attack, a solution has been found. function queen.findsolution -é boolean èæ test positions æè while neihbor.canattack èrow, columnè do if not self.advance then return false èæ found a solution æè return true As we noted in Chapter 5, the pseudo-variable self denotes the receiver for the current messae. In this case we want the queen who is bein asked to ænd a solution to pass the messae advance to herself.

6 130 CHAPTER 6. A CASE STUDY: THE EIGHT QUEENS PUZZLE Advancin to the Next Position The procedure advance divides into two cases. If we are not at the, the queen simply advances the row value by 1. Otherwise, she has tried all positions and not found a solution, so nothin remains but to ask her neihbor for a new solution and start aain from row 1. function queen.advance -é boolean èæ try next row æè if row é 8 then bein row := row + 1 return self.findsolution èæ cannot o further æè èæ move neihbor to next solution æè if not neihbor.advance then return false èæ start aain in row 1 æè row := 1 return self.findsolution The one remainin task is to print out the solution. This is most easily accomplished by a simple method, print that is rippled down the neihbors. procedure print neihbor.print write row, column 6.3 The Eiht-Queens Puzzle in Several Lanuaes In this section we present solutions to the eiht-queens puzzle in several of the prorammin lanuaes we are considerin. Examine each variation, and compare how the basic features provided by the lanuae make subtle chanes to the ænal solution. In particular, examine the solutions written in Smalltalk and Objective-C, which use a special class for a sentinel value, and contrast this with the solutions iven in Object Pascal, C++, orjava, all of which use a null pointer for the leftmost queen and thus must constantly test the value of pointer variables.

7 6.3. THE EIGHT-QUEENS PUZZLE IN SEVERAL LANGUAGES The Eiht-Queens Puzzle in Object Pascal The class deænition for the eiht-queens puzzle in Apple Object Pascal is shown below. A subtle but important point is that this deænition is recursive; objects of type Queen maintain a data æeld that is itself of type Queen. This is suæcient to indicate that declaration and storae allocation are not necessarily linked; if they were, an inænite amount ofstorae would be required to hold any Queen value. We will contrast this with the situation in C ++ when we discuss that lanuae. type Queen = object èæ data æelds æè row : inteer; column : inteer; neihbor : Queen; èæ initialization æè procedure initialize ècol : inteer; nh : Queenè; èæ operations æè function canattack ètestrow, testcolumn : inteerè : boolean; function findsolution : boolean; function advance : boolean; procedure print; ; The class deænition for the Delphi lanuae diæers only slihtly, as shown below. The Borland lanuae allows the class declaration to be broken into public and private sections, and it includes a constructor function, which we will use in place of the initialize routine. TQueen = class ètobjectè public constructor Create èinitialcolumn : inteer; nbr : TQueenè; function findsolution : boolean; function advance : boolean; procedure print; private function canattack ètestrow, testcolumn : inteerè : boolean; row : inteer; column : inteer; neihbor : TQueen;

8 132 CHAPTER 6. A CASE STUDY: THE EIGHT QUEENS PUZZLE ; The pseudo-code presented in the earlier sections is reasonably close to the Pascal solution, with two major diæerences. The ærst is the lack of a return statement inpascal, and the second is the necessity to ærst test whether a queen has a neihbor before passin a messae to that neihbor. The functions ændsolution and advance, shown below, illustrate these diæerences. ènote that Delphi Pascal diæers from standard Pascal in permittin short-circuit interpretation of the and and or directives, in the fashion of C++. Thus, the code for the Delphi lanuae could in a sinle expression combine the test for neihbor bein non-null and the passin of a messae to the neihborè. function Queen.findSolution : boolean; var done : boolean; bein done := false; findsolution := true; èæ test positions æè if neihbor éé nil then while not done and neihbor.canattackèrow, columnè do if not self.advance then bein findsolution := false; done := true; ; ; function Queen.advance : boolean; bein advance := false; èæ try next row æè if row é 8 then bein row := row + 1; advance := self.findsolution; else bein èæ cannot o further æè èæ move neihbor to next solution æè if neihbor éé nil then if not neihbor.advance then advance := false else bein row := 1; advance := self.findsolution;

9 6.3. THE EIGHT-QUEENS PUZZLE IN SEVERAL LANGUAGES 133 ; ; ; The main proram allocates space for each of the eiht queens and initializes the queens with their column number and neihbor value. Since durin initialization the ærst solution will be discovered, it is only necessary for the queens to print their solution. The code to do this in Apple Object Pascal is shown below. Here, neihbor and i are temporary variables used durin initialization and lastqueen is the most recently created queen. bein neihbor := nil; for i := 1 to 8 do bein èæ create and initialize new queen æè new èlastqueenè; lastqueen.initial èi, neihborè; if not lastqueen.findsolution then writelnèæno solutionæè; èæ newest queen is next queen neihbor æè neihbor := lastqueen; ; èæ print the solution æè lastqueen.print; ;. By providin explicit constructors that combine new object creation and initialization, the Delphi lanuae allows us to eliminate one of the temporary variables. The main proram for the Delphi lanuae is as follows: bein lastqueen := nil; for i := 1 to 8 do bein èè create and initialize new queen lastqueen := Queen.createèi, lastqueenè; lastqueen.findsolution; ; èè print the solution lastqueen.print; ;

10 134 CHAPTER 6. A CASE STUDY: THE EIGHT QUEENS PUZZLE The Eiht-Queens Puzzle in C ++ The most important diæerence between the pseudo-code description of the alorithm presented earlier and the eiht-queens puzzle as actually coded in C++ is the explicit use of pointer values. The class description for the class Queen is shown below. Each instance maintains, as part of its data area, a pointer to another queen value. Note that, unlike the Object Pascal solution, in C ++ this value must be declared explicitly as a pointer rather than an object value. class Queen f public: èè constructor Queen èint, Queen æè; èè ænd and print solutions bool findsolutionèè; bool advanceèè; void printèè; private: èè data æelds int row; const int column; const Queen æ neihbor; ; èè internal method bool canattack èint, intè; As in the Delphi Pascal solution, we have subsumed the behavior of the method initialize in the constructor. We will describe this shortly. There are three data æelds. The inteer data æeld column has been marked as const. This identiæes the æeld as an immutable value, which cannot chane durin execution. The third data æeld is a pointer value, which either contains anull value èthat is, points at nothinè or points to another queen. Since initialization is performed by the constructor, the main proram can simply create the eiht queen objects, and then print their solution. The variable lastqueen will point to the most recent queen created. This value is initially a null pointeríit points to nothin. A loop then creates the eiht values, initializin each with a column value and the previous queen value. When the loop completes, the leftmost queen holds a null value for its neihbor æeld while every other queen points to its neihbor, and the value lastqueen points to the rihtmost queen.

11 6.3. THE EIGHT-QUEENS PUZZLE IN SEVERAL LANGUAGES 135 void mainèè f Queen æ lastqueen = 0; for èint i = 1; i é= 8; i++è f lastqueen = new Queenèi, lastqueenè; if è! lastqueen-éfindsolutionèèè cout éé "no solutionën"; lastqueen-éprintèè; We will describe only those methods that illustrate important points. The complete solution can be examined in Appix A. The constructor method must use the initialization clauses on the headin to initialize the constant value column, as it is not permitted to use an assinment operator to initialize instance æelds that have been declared const. An initialization clause is also used to assin the value neihbor, althouh we have not declared this æeld as constant. Queen::Queenèint col, Queen æ nhè : columnècolè, neihborènhè f row = 1; Because the value of the neihbor variable can be either a queen or a null value, a test must be performed before any messaes are sent to the neihbor. This is illustrated in the method ændsolution. The use of short-circuit evaluation in the loical connectives and the ability to return from within a procedure simplify the code in comparison to the Object Pascal version, which is otherwise very similar. bool Queen::findSolutionèè f while èneihbor && neihbor-écanattackèrow, columnèè if è! advanceèèè return false; return true; The advance method must similarly test to make certain there is a neihbor before tryin to advance the neihbor to a new solution. When passin a messae to oneself, as in the recursive messae ændsolution, it is not necessary to specify a receiver. bool Queen::advanceèè

12 136 CHAPTER 6. A CASE STUDY: THE EIGHT QUEENS PUZZLE f if èrow é 8è f row++; return findsolutionèè; if èneihbor &&! neihbor-éadvanceèèè return false; row = 1; return findsolutionèè; The Eiht-Queens Puzzle in Java The solution in Java is in many respects similar to the C++ solution. However, in Java the bodies of the methods are written directly in place, and public or private desinations are placed on the class deænitions themselves. The followin is the class description for the class Queen, with some of the methods omitted. class Queen f èè data æelds private int row; private int column; private Queen neihbor; èè constructor Queen èint c, Queen nè f èè initialize data æelds row = 1; column = c; neihbor = n; public boolean findsolutionèè f while èneihbor!= null && neihbor.canattackèrow, columnèè if è! advanceèèè return false; return true; public boolean advanceèè f...

13 6.3. THE EIGHT-QUEENS PUZZLE IN SEVERAL LANGUAGES 137 private boolean canattackèint testrow, int testcolumnè f... public void paint ègraphics è f... Unlike in C ++, in Java the link to the next queen is simply declared as an object of type Queen and not as a pointer to a queen. Before a messae is sent to the neihbor instance variable, an explicit test is performed to see if the value is null. Since Java provides a rich set of raphics primitives, this solution will diæer from the others in actually drawin the ænal solution as a board. The method paint will draw an imae of the queen, then print the neihbor imaes. class Queen f... public void paint ègraphics è f èè x, y is upper left corner èè 10 and 40 ive sliht marins to sides int x = èrow - 1è æ ; int y = ècolumn - 1è æ ;.drawLineèx+5, y+45, x+45, y+45è;.drawlineèx+5, y+45, x+5, y+5è;.drawlineèx+45, y+45, x+45, y+5è;.drawlineèx+5, y+35, x+45, y+35è;.drawlineèx+5, y+5, x+15, y+20è;.drawlineèx+15, y+20, x+25, y+5è;.drawlineèx+25, y+5, x+35, y+20è;.drawlineèx+35, y+20, x+45, y+5è;.drawovalèx+20, y+20, 10, 10è; èè then draw neihbor if èneihbor!= nullè neihbor.paintèè; The raphics routines draw a small crown, which looks like this: JJææJJææ m

14 138 CHAPTER 6. A CASE STUDY: THE EIGHT QUEENS PUZZLE Java does not have lobal variables nor functions that are not member functions. As we will describe in more detail in Chapter 22, a proram is created by the deænin of a subclass of the system class JFrame, and then the overridin of certain methods. Notably, the constructor is used to provide initialization for the application, while the method paint is used to redraw the screen. Mouse events and window events are handled by creatin listener objects that will execute when their associated event occurs. We will describe listeners in much reater detail in later sections. We name the application class QueenSolver and deæne it as follows: public class QueenSolver exts JFrame f public static void mainèstrin ë ë arsè f QueenSolver world = new QueenSolverèè; world.showèè; private Queen lastqueen = null; public QueenSolverèè f settitleè"8 queens"è; setsizeè600, 500è; for èint i = 1; i é= 8; i++è f lastqueen = new Queenèi, lastqueenè; lastqueen.findsolutionèè; addmouselistenerènew MouseKeeperèèè; addwindowlistenerènew CloseQuitèèè; public void paintègraphics è f super.paintèè; èè draw board for èint i = 0; i é= 8; i++è f.drawlineè50 æ i + 10, 40, 50æi + 10, 440è;.drawLineè10, 50 æ i + 40, 410, 50æi + 40è;.drawStrinè"Click Mouse for Next Solution", 20, 470è; èè draw queens lastqueen.paintèè; private class CloseQuit exts WindowAdapter f public void windowclosin èwindowevent eè f System.exitè0è;

15 6.3. THE EIGHT-QUEENS PUZZLE IN SEVERAL LANGUAGES 139 private class MouseKeeper exts MouseAdapter f public void mousepressed èmouseevent eè f lastqueen.advanceèè; repaintèè; Note that the application class must be declared as public, because it must be accessible to the main proram The Eiht-Queens Puzzle in Objective-C The interface description for our class Queen is as Queen : Object f èæ data æelds æè int row; int column; id neihbor; èæ methods æè - èvoidè initialize: èintè c neihbor: nh; - èintè advance; - èvoidè print; - èintè canattack: èintè testrow column: èintè testcolumn; - èintè Each queen will maintain three data æelds: a row value, a column, and the neihbor queen. The last is declared with the data type id. This declaration indicates that the value bein held by the variable is an object type, althouh not necessarily a queen. In fact, we can use this typeless nature of variables in Objective-C to our advantae. We will employ a technique that is not possible, or at least not as easy, ina more stronly typed lanuae such asc ++ or Object Pascal. Recall that the leftmost queen does not have any neihbor. In the C++ solution, this was indicated by the null, or empty value, in the neihbor pointer variable in the leftmost queen. In the current solution, we will instead create a new type

16 140 CHAPTER 6. A CASE STUDY: THE EIGHT QUEENS PUZZLE of class, a sentinel value. The leftmost queen will point to this sentinel value, thereby ensurin that every queen has a valid neihbor. Sentinel values are frequently used as markers and are found in alorithms that manipulate linked lists, such as our linked list of queen values. The diæerence between an object-oriented sentinel and a more conventional value is that an object-oriented sentinel value can be activeíit can have behavioríwhich means it can respond to requests. What behaviors should our sentinel value exhibit? Recall that the neihbor links in our alorithm were used for two purposes. The ærst was to ensure that a iven position could not be attacked; our sentinel value should always respond neatively to such requests, since it cannot attack any position. The second use of the neihbor links was in a recursive call to print the solution. In this case our sentinel value should simply return, since it does not have any information concernin the solution. Puttin these toether yields the followin implementation for our sentinel SentinelQueen : Object - èintè advance f èæ do nothin æè return 0; - èintè findsolution f èæ do nothin æè return 1; - èvoidè print f èæ do nothin æè - èintè canattack: èintè testrow column: èintè testcolumn; èæ cannot attack æè return 0; In the full solution there is an implementation section for SentinelQueen, but no interface section. This omission is leal, althouh the compiler will provide a warnin since it is somewhat unusual.

17 6.3. THE EIGHT-QUEENS PUZZLE IN SEVERAL LANGUAGES 141 The use of the sentinel allows the methods in class Queen to simply pass messaes to their neihbor without ærst determinin whether or not she is the leftmost queen. The method for canattack, for example, illustrates this use: - èintè canattack: èintè testrow column: èintè testcolumn f int columndifference; èæ can attack same row æè if èrow == testrowè return 1; columndifference = testcolumn - column; if èèrow + columndifference == testrowè jj èrow - columndifference == testrowèè return 1; return ë neihbor canattack:testrow column: testcolumn ë; Within a method, a messae sent to the receiver is denoted by a messae sent to the pseudo-variable self. - èvoidè initialize: èintè c neihbor: nh f èæ set the constant æelds æè column = c; neihbor = nh; row = 1; - èintè findsolution f èæ loop until we ænd a solution æè while èëneihbor canattack: row and: column ëè if è! ëself advanceëè return 0; èæ return false æè return 1; èæ return true æè Other methods are similar, and are not described here The Eiht-Queens Puzzle in Smalltalk The solution to the eiht-queens puzzle in Smalltalk is in most respects very similar to the solution iven in Objective-C. Like Objective-C, Smalltalk handles

18 142 CHAPTER 6. A CASE STUDY: THE EIGHT QUEENS PUZZLE the fact that the leftmost queen does not have a neihbor by deænin a special sentinel class. The sole purpose of this class is to provide a taret for the messaes sent by the leftmost queen. The sentinel value is the sole instance of the class SentinelQueen, a subclass of class Object, which implements the followin three methods: advance " sentinels do not attack " " false canattack: row column: column " sentinels cannot attack " " false result " return empty list as result " " List new One diæerence between the Objective-C and Smalltalk versions is that the Smalltalk code returns the result as a list of values rather than printin it on the output. The techniques for printin output are rather tricky in Smalltalk and vary from implementation to implementation. By returnin a list we can isolate these diæerences in the callin method. The class Queen is a subclass of class Object. Instances of class Queen maintain three instance variables: a row value, a column value, and a neihbor. Initialization is performed by the method setcolumn:neihbor: setcolumn: anumber neihbor: aqueen " initialize the data æelds " column := anumber. neihbor := aqueen. row := 1. The canattack method diæers from the Objective-C counterpart only in syntax: canattack: testrow column: testcolumn j columndifference j columndifference := testcolumn - column. èèèrow = testrowè or: ë row + columndifference = testrowëè or: ë row - columndifference = testrowëè iftrue: ë " true ë. " neihbor canattack: testrow column: testcolumn

19 6.3. THE EIGHT-QUEENS PUZZLE IN SEVERAL LANGUAGES 143 Rather than testin for the neation of a condition, Smalltalk provides an explicit iffalse statement, which is used in the method advance: advance " ærst try next row " èrow é 8è iftrue: ë row := row + 1. " self findsolution ë. " cannot o further, move neihbor " èneihbor advanceè iffalse: ë " false ë. " bein aain in row 1 " row := 1. " self findsolution The while loop in Smalltalk must use a block as the condition test, as in the followin: ændsolution ë neihbor canattack: row column: column ë whiletrue: ë self advance iffalse: ë " false ë ë. " true A recursive method is used to obtain the list of answer positions. Recall that an empty list is created by the sentinel value in response to the messae result. result " neihbor result; addlast: row A solution can be found by invocation of the followin method, which is not part of class Queen but is instead attached to some other class, such as Object. solvepuzzle j lastqueen j lastqueen := SentinelQueen new. 1 to: 8 do: ë:i j lastqueen := èqueen newè setcolumn: i neihbor: lastqueen. lastqueen findsolution ë. " lastqueen result The Eiht-Queens Puzzle in Ruby Ruby is a recent scriptin lanuae, similar in spirit to Python or Perl. There are only functions in Ruby, every method returns a value, which is simply the value of the last statement in the body of the method. A feel for the syntax for

20 144 CHAPTER 6. A CASE STUDY: THE EIGHT QUEENS PUZZLE Ruby can be found by the deænition of the sentinel queen, which can be written as follows: class NullQueen def canattackèrow, columnè false def first? true def next? false def etstate Array.new The class Queen handles all but the last case. In Ruby instance variables must bein with an at-sin. Thus the initialization method is written as follows: class Queen def initialcolumnècolumn, = = neihbour nil... Conditional statements are written in a curious form where the expression is iven ærst, followed by the if keyword. This is illustrated by the method canattack: def canattackèrow, columnè return true if row cd = ècolumn

21 6.3. THE EIGHT-QUEENS PUZZLE IN SEVERAL LANGUAGES 145 rd = èrow return true if cd == columnè The remainder of the Ruby solution can be found in the appix. Chapter Summary In this ærst case study we have examined a classic puzzle, how to place eiht queens on a chessboard in such a way that no queen can attack any of the others. While the problem is moderately intriuin, our interest is not so much in the problem itself, but in the way the solution to the problem has been structured. We have addressed the problem by makin the queens into indepent aents, who then work amon themselves to discover a solution. Further Readin A solution to the eiht-queens puzzle constructed without the use of a sentinel value was described in my earlier book on Smalltalk ëbudd 1987ë. The eiht queens puzzle is found in many computin texts. See ëgriswold 1983, Budd 1987, Berztiss 1990ë, for some representative examples. For further information on the eneral technique termed enerate and test, see ëhanson 1981ë, or ëberztiss 1990ë. The solution in Ruby was written by Mike Stok. Further information on Ruby can be found in ëthomas 2001ë. Self Study Questions 1. What is the eiht queens puzzle? 2. In what way is the object-oriented solution presented here diæerent from a conventional solution? 3. What is the enerate and test approach to ændin a solution in a space of various alternative possibilities? 4. What is a sentinel? èthe term is introduced in the solution presented in Objective-Cè.

22 146 CHAPTER 6. A CASE STUDY: THE EIGHT QUEENS PUZZLE Exercises 1. Modify any one of the prorams to produce all possible solutions rather than just one. How many possible solutions are there for the eiht-queens puzzle? How many of these are rotations of other solutions? How miht you ælter out rotations? 2. Can you explain why the sentinel class in the Objective-C and Smalltalk versions of the eiht-queens puzzle do not need to provide an implementation for the method ændsolution, despite the fact that this messae is passed to the neihbor value in the method advance? 3. Suppose we eneralize the eiht-queens problem to the N-queens problem, where the task is to place N queens on an N by N chessboard. How must the prorams be chaned? It is clear that there are values for N for which no solution exists èconsider N=2 or N=3, for exampleè. What happens when your proram is executed for these values? How miht you produce more meaninful output? 4. Usin whatever raphics facilities your system has, alter one of the prorams to display dynamically on a chessboard the positions of each queen as the proram advances. What portions of the proram need to know about the display?

ON AN APPROACH TO STATEMENT OF SQL QUESTIONS IN THE NATURAL LANGUAGE FOR CYBER2 KNOWLEDGE DEMONSTRATION AND ASSESSMENT SYSTEM

ON AN APPROACH TO STATEMENT OF SQL QUESTIONS IN THE NATURAL LANGUAGE FOR CYBER2 KNOWLEDGE DEMONSTRATION AND ASSESSMENT SYSTEM 216 International Journal "Information Technoloies & Knowlede" Volume 9, Number 3, 2015 ON AN APPROACH TO STATEMENT OF SQ QUESTIONS IN THE NATURA ANGUAGE FOR CYBER2 KNOWEDGE DEMONSTRATION AND ASSESSMENT

More information

Hardware Resource Allocation for Hardware/Software Partitioning in the LYCOS System

Hardware Resource Allocation for Hardware/Software Partitioning in the LYCOS System Downloaded from orbit.dtu.dk on: Feb 02, 2016 Hardware Resource Allocation for Hardware/Software Partitionin in the LYCOS System Grode, Jesper Nicolai Riis; Knudsen, Peter Voit; Madsen, Jan Published in:

More information

Solving Equations and Inequalities Graphically

Solving Equations and Inequalities Graphically 4.4 Solvin Equations and Inequalities Graphicall 4.4 OBJECTIVES 1. Solve linear equations raphicall 2. Solve linear inequalities raphicall In Chapter 2, we solved linear equations and inequalities. In

More information

Moving from CS 61A Scheme to CS 61B Java

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

More information

SMART Bridgit 4.5 software. User's Guide

SMART Bridgit 4.5 software. User's Guide SMART Bridit 4.5 software User's Guide Trademark notice SMART Bridit, SMART Board, SMART Podium, SMART Meetin Pro, SMART Notebook, smarttech, the SMART loo and all SMART talines are trademarks or reistered

More information

A Privacy Mechanism for Mobile-based Urban Traffic Monitoring

A Privacy Mechanism for Mobile-based Urban Traffic Monitoring A Privacy Mechanism for Mobile-based Urban Traffic Monitorin Chi Wan, Hua Liu, Bhaskar Krishnamachari, Murali Annavaram Tsinhua University, Beijin, China sonicive@mail.com University of Southern California,

More information

S i m p l i c i t y c o n t r o l P o w e r. Alcatel-Lucent OmniTouch Contact Center Premium Edition

S i m p l i c i t y c o n t r o l P o w e r. Alcatel-Lucent OmniTouch Contact Center Premium Edition Alcatel-Lucent OmniTouch Contact Center Premium Edition Enablin onoin visual trackin of contact center activities S i m p l i c i t y c o n t r o l P o w e r Can you UNDERSTAND, ANTICIPATE and RESPOND

More information

A Multiagent Based System for Resource Allocation and Scheduling of Distributed Projects

A Multiagent Based System for Resource Allocation and Scheduling of Distributed Projects International Journal of Modelin and Optimization, Vol. 2, No., Auust 2012 A Multiaent Based System for Resource Allocation and Schedulin of Distributed Projects Sunil Adhau and M. L. Mittal Abstract In

More information

Principles of Assessment and Reporting in NSW Public Schools

Principles of Assessment and Reporting in NSW Public Schools NSW DEPARTMENT OF EDUCATION & TRAINING Auust 2008 nt sme Lea rn portin Re Principles Assessment and Reportin in NSW Public Schools in Ass es to p a re nts Preamble Backround Underpinnin the development

More information

SMART Ink. Windows operating systems. User s guide

SMART Ink. Windows operating systems. User s guide SMART Ink Windows operatin systems User s uide Trademark notice SMART Ink, SMART Notebook, SMART Meetin Pro, Bridit, smarttech, the SMART loo and all SMART talines are trademarks or reistered trademarks

More information

A FRAMEWORK FOR MONITORING PROGRAM EXECUTION

A FRAMEWORK FOR MONITORING PROGRAM EXECUTION A FRAMEWORK FOR MONITORING PROGRAM EXECUTION Clinton Lewis Jeffery TR 93-21 July 30, 1993 Department of Computer Science The University of Arizona Tucson, Arizona 85721 This work was supported in part

More information

Appian Acquisition Business Management (ABM) A modern, flexible, agile, and accredited BPM solution for end-to-end federal acquisition.

Appian Acquisition Business Management (ABM) A modern, flexible, agile, and accredited BPM solution for end-to-end federal acquisition. Appian Acquisition Business Manaement (ABM) A modern, flexible, aile, and accredited BPM solution for end-to-end federal acquisition. Appian Acquisition Business Manaement (ABM) Solution Complete Acquisition

More information

BPO. COMPEtitive BUSINESS PROCESS

BPO. COMPEtitive BUSINESS PROCESS BPO BUSINESS PROCESS outsourcin COMPEtitive INTELlience SmartBPO is a unique, innovative business process outsourcin (BPO) and competitive intellience model that helps companies to simplify their operations

More information

Hewlett-Packard 12C Tutorial

Hewlett-Packard 12C Tutorial To bein, look at the ace o the calculator. Every key (except the arithmetic unction keys in the ar riht column and the ive keys on the bottom let row) has two or three unctions: each key s primary unction

More information

The Preprocessor Variables, Functions, and Classes Less important for C++ than for C due to inline functions and const objects. The C++ preprocessor h

The Preprocessor Variables, Functions, and Classes Less important for C++ than for C due to inline functions and const objects. The C++ preprocessor h Object-Oriented Desin and Prorammin Overview of Basic C++ Constructs Outline Lexical Elements The Preprocessor Variables, Functions, and Classes Denition and Declaration Compound Statement Iteration Statements

More information

How To Write A Report In Xbarl

How To Write A Report In Xbarl XBRL Generation, as easy as a database. Christelle BERNHARD - christelle.bernhard@addactis.com Consultant & Deputy Product Manaer of ADDACTIS Pillar3 Copyriht 2015 ADDACTIS Worldwide. All Rihts Reserved

More information

How To Write A Program For The Web In Java (Java)

How To Write A Program For The Web In Java (Java) 21 Applets and Web Programming As noted in Chapter 2, although Java is a general purpose programming language that can be used to create almost any type of computer program, much of the excitement surrounding

More information

1 Background. 2 Martin C. Rinard

1 Background. 2 Martin C. Rinard Journal of Prorammin Lanuaes 6 (199), 1 35 Implicitly synchronized abstract data types: data structures for modular parallel prorammin Martin C. Rinard Department of Computer Science, University of California

More information

Today. Generic Language g Technology (2IS15)

Today. Generic Language g Technology (2IS15) Today Generic Lanuae Technoloy (2IS15) Domain Specific Lanuae Desin Prof.dr. Mark van den Brand Tools for software analysis and manipulation Prorammin lanuae independent (parametric) The story is from

More information

Efficient and Provably Secure Ciphers for Storage Device Block Level Encryption

Efficient and Provably Secure Ciphers for Storage Device Block Level Encryption Efficient and Provably Secure Ciphers for Storae Device Block evel Encryption Yulian Zhen SIS Department, UNC Charlotte yzhen@uncc.edu Yone Wan SIS Department, UNC Charlotte yonwan@uncc.edu ABSTACT Block

More information

Curriculum Map. Discipline: Computer Science Course: C++

Curriculum Map. Discipline: Computer Science Course: C++ Curriculum Map Discipline: Computer Science Course: C++ August/September: How can computer programs make problem solving easier and more efficient? In what order does a computer execute the lines of code

More information

SPSS WebApp Framework

SPSS WebApp Framework SPSS WebApp Framework Solve business problems with customized, Web-based, analytical applications powered by SPSS Solve business problems with SPSS WebApp applications Predictin the best course of action

More information

Save thousands with the complete e-document distribution solution

Save thousands with the complete e-document distribution solution Albany econnect Save thousands with the complete e-document distribution solution The UK s leadin provider of electronic document distribution software Since 1989, Albany Software has been developin software

More information

Chapter. The Role of the Paralegal

Chapter. The Role of the Paralegal Chapter ONE The Role of the Paraleal The Lawyer-Paraleal Relationship Paraleals today perform many tasks that once were performed only by lawyers, such as preparin, filin, or producin documents. Law firms

More information

THE SIMPLE PENDULUM. Objective: To investigate the relationship between the length of a simple pendulum and the period of its motion.

THE SIMPLE PENDULUM. Objective: To investigate the relationship between the length of a simple pendulum and the period of its motion. THE SIMPLE PENDULUM Objective: To investiate the relationship between the lenth of a simple pendulum and the period of its motion. Apparatus: Strin, pendulum bob, meter stick, computer with ULI interface,

More information

Decimal Fractions. Decimal Fractions. Curriculum Ready. www.mathletics.com

Decimal Fractions. Decimal Fractions. Curriculum Ready. www.mathletics.com Decimal Fractions Curriculum Ready www.mathletics.com Decimal fractions allow us to be more accurate with our calculations and measurements. Because most of us have ten finers, it is thouht that this

More information

! stack, queue, priority queue, dictionary, sequence, set e.g., a Stack is a list implements a LIFO policy on additions/deletions.

! stack, queue, priority queue, dictionary, sequence, set e.g., a Stack is a list implements a LIFO policy on additions/deletions. Abstract Data Types and Data Structures Often, these terms are used as synonyms. But it s better to think of them this way: ADTs and Data Structures An Abstract Data Type (ADT) represents a particular

More information

How To Write A Mathematical Model Of Ship Hydrodynamics In An Inland Shiphandlin Simulator Of Smu Insim

How To Write A Mathematical Model Of Ship Hydrodynamics In An Inland Shiphandlin Simulator Of Smu Insim Scientific Journals Maritime University of Szczecin Zeszyty Naukowe Akademia Morska w Szczecinie 14, 37(19) pp. 1 15 14, 37(19) s. 1 15 ISSN 1733-867 Ship manoeuvrin hydrodynamics in a new inland shiphandlin

More information

Strategies for Reducing the Risk of ecommerce Fraud

Strategies for Reducing the Risk of ecommerce Fraud October 2010 Strateies for Reducin the Risk of ecommerce Fraud Fraud techniques are constantly evolvin, and new data breaches are reported every day are your online security practices adaptin rapidly enouh?

More information

Business Agility in the Mobile Age

Business Agility in the Mobile Age Business Aility in the Mobile Ae Published Auust 2011 Executive Summary Movement towards the mobile enterprise is ainin momentum based on the clear business value afforded by better leverain today s increasinly

More information

SIMPLIFICATION OF WATER SUPPLY NETWORK MODELS THROUGH LINEARISATION

SIMPLIFICATION OF WATER SUPPLY NETWORK MODELS THROUGH LINEARISATION SIMPLIFICATIO OF WATER SUPPLY ETWORK MODELS THROUGH LIEARISATIO Tobias Maschler and Draan A. Savic D.Savic@exeter.ac.uk Report umber:99/ 999 Centre for Water Systems, University of Exeter, orth Park Road,

More information

TSM ASSESSMENT PROTOCOL

TSM ASSESSMENT PROTOCOL TSM ASSESSMENT PROTOCOL A Tool for Assessin External Outreach Performance Introduction Launched in 2004, Towards Sustainable Minin (TSM) is an initiative of the Minin Association of Canada desined to enhance

More information

For Educational Service Subject To Article 6 But Not Article 7 Of The Private Postsecondary And Vocational Education Reform Act.

For Educational Service Subject To Article 6 But Not Article 7 Of The Private Postsecondary And Vocational Education Reform Act. Anaheim University TESOL Student Enrollment Areement Anaheim University 1240 S. State Collee Blvd. Room #110 Anaheim, CA 9206 USA Tel: 714-772-3330 Fax: 714-772-3331 E-mail: admissions@anaheim.edu Website:

More information

The Projman Application: Allowing SAS to Manage Your Project Jon Patton, Miami University, Oxford, Ohio

The Projman Application: Allowing SAS to Manage Your Project Jon Patton, Miami University, Oxford, Ohio 1 Abstract Paper TU13 The Projman Application: Allowin SAS to Manae Your Project Jon Patton, Miami University, Oxford, Ohio SAS/OR software has four major procedures that can be used to manae your projects.

More information

Adaptive Learning Resources Sequencing in Educational Hypermedia Systems

Adaptive Learning Resources Sequencing in Educational Hypermedia Systems Karampiperis, P., & Sampson, D. (2005). Adaptive Learnin Resources Sequencin in Educational Hypermedia Systems. Educational Technoloy & Society, 8 (4), 28-47. Adaptive Learnin Resources Sequencin in Educational

More information

An Organisational Perspective on Collaborative Business Processes

An Organisational Perspective on Collaborative Business Processes An Oranisational Perspective on Collaborative Business Processes Xiaohui Zhao, Chenfei Liu, and Yun Yan CICEC - Centre for Internet Computin and E-Commerce Faculty of Information and Communication Technoloies

More information

UNIQUE Business for SaaS

UNIQUE Business for SaaS UNIQUE The solution for your business with more control and security when accessin your Cloud network. UNIQUE enables secure access control of all remote desktop structures and web services in the Cloud

More information

HPC Scheduling & Job Prioritization WHITEPAPER

HPC Scheduling & Job Prioritization WHITEPAPER HPC Schedulin & Job Prioritization WHITEPAPER HPC Schedulin & Job Prioritization Table of contents 3 Introduction 3 The Schedulin Cycle 5 Monitorin The Schedulin Cycle 6 Conclusion 2 HPC Schedulin & Job

More information

A better choice for good health

A better choice for good health Individuals and Families Enrollment Guide Georia 2015 A better choice for ood health a wide rane of specialists test results online convenient facilities near you I can choose and chane my doctor anytime

More information

The Smalltalk Programming Language. Beatrice Åkerblom beatrice@dsv.su.se

The Smalltalk Programming Language. Beatrice Åkerblom beatrice@dsv.su.se The Smalltalk Programming Language Beatrice Åkerblom beatrice@dsv.su.se 'The best way to predict the future is to invent it' - Alan Kay. History of Smalltalk Influenced by Lisp and Simula Object-oriented

More information

UNIQUE Identity Access Management

UNIQUE Identity Access Management Manaement UNIQUE Manaement The IAM solution for your company with more control and security when accessin your corporate network. UNIQUE Manaement enables secure access control of all remote desktop structures

More information

Governed Data Discovery. with Pyramid Analytics. Navigating the business analytics disruption. Issue 1. Why Data Discovery is the new King?

Governed Data Discovery. with Pyramid Analytics. Navigating the business analytics disruption. Issue 1. Why Data Discovery is the new King? Issue 1 Governed Data Discovery with Pyramid Analytics Why Data Discovery is the New Kin... 1 The Missin Component in Data Discovery Tools... 2 Governed Data Discovery: A Key to Success... 2 Governed Data

More information

It has become evident that traditional network architecture. Storage-Defined Networking

It has become evident that traditional network architecture. Storage-Defined Networking S T O R A G E Storae-Defined Networkin A detailed look at SDN and its best practices. It has become evident that traditional network architecture desins are poorly suited to meet the needs of today s dynamic

More information

Internet Connectivity for Mobile Ad Hoc Networks Using Hybrid Adaptive Mobile Agent Protocol

Internet Connectivity for Mobile Ad Hoc Networks Using Hybrid Adaptive Mobile Agent Protocol The International Arab Journal of Information Technoloy, Vol. 5, No. 1, January 2008 25 Internet Connectivity for Mobile Ad Hoc Networks Usin Hybrid Adaptive Mobile Aent Protocol Velmuruan Ayyadurai 1

More information

Solving on-premise email management challenges with on-demand services

Solving on-premise email management challenges with on-demand services Solvin on-premise email manaement challenes with on-demand services Dell IT Manaement Software as a Service 1 Applications Business Process Consultin Infrastructure Support Introduction The rowin reliance

More information

Two-Phase Modular Cooling

Two-Phase Modular Cooling Two-Phase Modular Coolin for the Data Center Ensurin the reliability and efficiency of your data center operations requires a strateic partner that is qualified to minimize enery usae, reduce costs, and

More information

[Refer Slide Time: 05:10]

[Refer Slide Time: 05:10] Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture

More information

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

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

More information

LightSweep. Modular Lighting Control System. imagination at work. Description. Specifications

LightSweep. Modular Lighting Control System. imagination at work. Description. Specifications Lihtin Controls LihtSweep Modular Lihtin Control System GE s modular indoor lihtin control solution is scalable and hihly flexible makin it easier to meet specification without havin to over-enineer the

More information

Theme 5: Banking 5.0

Theme 5: Banking 5.0 Theme 5: Bankin 5.0 Theme: Bankin Unit: What Services Does A Bank Offer? Initial Assessment: (What does the student know, what does she need to know?) 1. Can you tell me the names of three banks in your

More information

A HyFlex Module for the Personnel Scheduling Problem

A HyFlex Module for the Personnel Scheduling Problem A HyFle Module for the Personnel Schedulin Problem Tim Curtois, Gabriela Ochoa, Matthew Hyde, José Antonio Vázquez-Rodríuez Automated Schedulin, Optimisation and Plannin (ASAP) Group, School of Computer

More information

SMART Table software. User s guide

SMART Table software. User s guide SMART Table software and SMART Table Toolkit User s uide Product reistration If you reister your SMART product, we ll notify you of new features and software uprades. Reister online at smarttech.com/reistration.

More information

QuickBooks: Pro and Premier Editions 2006 Fact Sheet

QuickBooks: Pro and Premier Editions 2006 Fact Sheet QuickBooks : Pro Edition 2006 QuickBooks Pro Edition 2006 is the leadin choice of small businesses with 1-20 employees for fast and easy financial manaement. Track money oin in and out of a business more

More information

LEADERSHIP DEVELOPMENT FRAMEWORK. Program Bulletin

LEADERSHIP DEVELOPMENT FRAMEWORK. Program Bulletin LEADERSHIP DEVELOPMENT FRAMEWORK Proram Bulletin Prorams for Leadership Development The NBOGroup Leadership Development prorams provide emerin, middle and senior manaement an opportunity to be the chane

More information

The Eden Alternative Domains of Well-Being. Revolutionizing the Experience of Home by Bringing Well-Being to Life

The Eden Alternative Domains of Well-Being. Revolutionizing the Experience of Home by Bringing Well-Being to Life The Eden Alternative Domains of Well-Bein Revolutionizin the Experience of Home by Brinin Well-Bein to Life THE EDEN ALTERNATIVE DOMAINS OF WELL-BEING Revolutionizin the Experience of Home by Brinin Well-Bein

More information

The C Programming Language course syllabus associate level

The C Programming Language course syllabus associate level TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming

More information

On the Influence of the Prediction Horizon in Dynamic Matrix Control

On the Influence of the Prediction Horizon in Dynamic Matrix Control International Journal of Control Science and Enineerin 203, 3(): 22-30 DOI: 0.5923/j.control.203030.03 On the Influence of the Prediction Horizon in Dynamic Matrix Control Jose Manue l Lope z-gue de,*,

More information

Real-time Scheduling to Minimize Machine Busy Times

Real-time Scheduling to Minimize Machine Busy Times Real-time Schedulin to Minimize Machine Busy Times Rohit Khandekar Baruch Schieber Hadas Shachnai Tami Tamir Abstract Consider the followin schedulin problem. We are iven a set of jobs, each havin a release

More information

On the (un)suitability of Java to be the first programming language

On the (un)suitability of Java to be the first programming language On the (un)suitability of Java to be the first programming language Mirjana Ivanovic Faculty of Science, Department of Mathematics and Informatics Trg Dositeja Obradovica 4, Novi Sad mira @im.ns.ac.yu

More information

Global Payments Card Processing Agreement. Terms Of Service

Global Payments Card Processing Agreement. Terms Of Service Global Payments Card Processin Areement Terms Of Service Contents Clause Pae 1 The Card Processin Areement 1 2 Transaction Types 2 3 Other Terms Explained 3 4 Acceptance Of Cards 4 5 Your Obliations To

More information

Technical Report Documentation Page 2. Government Accession No. 3. Recipient s Catalog No.

Technical Report Documentation Page 2. Government Accession No. 3. Recipient s Catalog No. 1. Report No. Technical Report Documentation Pae 2. Government Accession No. 3. Recipient s Catalo No. FHWA/TX-03/4386-1 4. Title and Subtitle DEVELOPMENT OF A TOOL FOR EXPEDITING HIGHWAY CONSTRUCTION

More information

A better choice for good health

A better choice for good health Enrollment Book Northern Colorado 2015 en A better choice for ood health a wide rane of specialists view most test results online convenient facilities near you I can choose and chane my doctor anytime

More information

PLEASE THINK BEFORE YOU PRINT. SMART Response PE User s Guide

PLEASE THINK BEFORE YOU PRINT. SMART Response PE User s Guide PLEASE THINK BEFORE YOU PRINT SMART Response PE User s Guide Product reistration If you reister your SMART product, we ll notify you of new features and software uprades. Reister online at www.smarttech.com/reistration.

More information

Hoare-Style Monitors for Java

Hoare-Style Monitors for Java Hoare-Style Monitors for Java Theodore S Norvell Electrical and Computer Engineering Memorial University February 17, 2006 1 Hoare-Style Monitors Coordinating the interactions of two or more threads can

More information

Traffic Efficiency Guidelines for Temporary Traffic Management

Traffic Efficiency Guidelines for Temporary Traffic Management Traffic Efficiency Guidelines for Temporary Traffic Manaement Version 3.1 Final July 2013 1 Contents 1 Glossary of Terms... 3 2 Settin the Scene... 4 2.1 COPTTM TMP Principle... 4 3 Traffic Volumes...

More information

ACO and PSO Algorithms Applied to Gateway Placement Optimization in Wireless Mesh Networks

ACO and PSO Algorithms Applied to Gateway Placement Optimization in Wireless Mesh Networks 2012 International Conference on Networks and Information (ICNI 2012) IPCSIT vol. 57 (2012) (2012) IACSIT Press, Sinapore DOI: 10.7763/IPCSIT.2012.V57.02 ACO and PSO Alorithms Applied to Gateway Placement

More information

white paper February 2010

white paper February 2010 white paper February 2010 STRATEGIC FOCUS REPORT SaaS BPM: Silencin the Skeptics Develop a SaaS stratey to stay ahead of the ame Sponsored by: Corporate headquarters 1875 Explorer Street 4 th Floor Reston,

More information

Building. on our strengths. Benefit & Pension Plans. Ontario Ironworkers / Rodmen

Building. on our strengths. Benefit & Pension Plans. Ontario Ironworkers / Rodmen Buildin on our strenths Ontario Ironworkers / Rodmen Benefit & Pension Plans May 2014 www.ontarioironworkers.com C O N T E N T S + + + If you need information.............. 1 Contactin the Administrator.......

More information

ADT Implementation in Java

ADT Implementation in Java Object-Oriented Design Lecture 3 CS 3500 Fall 2009 (Pucella) Friday, Sep 18, 2009 ADT Implementation in Java As I said in my introductory lecture, we will be programming in Java in this course. In part,

More information

BPM for Information Technology Transforming IT through Business Process Management

BPM for Information Technology Transforming IT through Business Process Management white paper BPM for Information Technoloy Transformin IT throuh Business Process Manaement This paper is intended for CIOs, IT Executives and Senior IT Manaers interested in understandin more about the

More information

Web Conferencing, Q2 2006

Web Conferencing, Q2 2006 Vendor card: WebEx Communications Weihtin CURRENT OFFERING 5% 4.36 Architecture What is the product's architecture? these subattributes: Cross-platform support, Browser support, Plu-ins, and Firewall penetration.

More information

A better choice for good health

A better choice for good health Individuals and Families Enrollment Guide Mid-Atlantic States 2015 A better choice for ood health a wide rane of specialists test results online convenient facilities near you I can choose and chane my

More information

American Fidelity Assurance Company s. Long Term Care. Insurance. Life on Your Terms

American Fidelity Assurance Company s. Long Term Care. Insurance. Life on Your Terms American Fidelity Assurance Company s Lon Term Care Insurance Life on Your Terms Life on Your Terms What is Lon Term Care? Lon Term Care insurance helps protect your financial independence should you ever

More information

JFlow: Practical Mostly-Static Information Flow Control

JFlow: Practical Mostly-Static Information Flow Control Proceedins of the 26th ACM Symposium on Principles of Prorammin Lanuaes (POPL 99), San Antonio, Texas, USA, January 1999 JFlow: Practical Mostly-Static Information Flow Control Andrew C. Myers Laboratory

More information

HealthSpan for Individuals and Families Enrollment Guide

HealthSpan for Individuals and Families Enrollment Guide 2014 HealthSpan for Individuals and Families Enrollment Guide A better choice for ood health With care and coverae workin seamlessly toether, HealthSpan is uniquely desined to ive you the information and

More information

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm

More information

Synergy supports your network

Synergy supports your network Synery supports your network Silver Systems Manaement Silver Volume Licensin SYNERGY Global Reach, Local Service. Yours is a successful, midmarket company. You depend upon computers and your network to

More information

Chapter 15 Functional Programming Languages

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,

More information

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program

More information

Delivering Value, Security, and Speed with BPM in the Cloud

Delivering Value, Security, and Speed with BPM in the Cloud Deliverin Value, Security, and Speed with BPM in the Cloud BPM Software in the cloud enables strateic process improvement, reduced technoloy cost, and better alinment of IT with business oals. Strateic

More information

I can choose my doctor

I can choose my doctor This is an advertisement Federal Employees and Annuitants 2015 Rates and Benefits test results online excellent prenatal care I can choose my doctor a wide rane of specialists Not a member yet? Call toll

More information

A better choice for good health

A better choice for good health Individuals and Families Enrollment Guide Oreon 2015 A better choice for ood health a wide rane of specialists test results online convenient facilities near you I can choose and chane my doctor anytime

More information

Keys 2 Work / PA ementoring / PA Career Guides / My Career Journey / Financial Literacy 101

Keys 2 Work / PA ementoring / PA Career Guides / My Career Journey / Financial Literacy 101 www.smartfutures.or online collee and career readiness solutions for pennsylvania educators Keys 2 Work / PA ementorin / PA Career Guides / My Career Journey / Financial Literacy 101 our mission: To assure

More information

public class OutputStream f f... f... In order to simplify references to these methods in the followin pararaphs, we name the rst writebyte and the se

public class OutputStream f f... f... In order to simplify references to these methods in the followin pararaphs, we name the rst writebyte and the se Vanishin Aspects Pascal Costanza University of Bonn, Romerstrae 164 D-53117 Bonn, Germany costanza@cs.uni-bonn.de Auust 4, 2000 1 Jumpin Aspects At the workshop \Aspects and Dimensions of Concerns" at

More information

Computing Concepts with Java Essentials

Computing Concepts with Java Essentials 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann

More information

1.3 Introduction to Functions

1.3 Introduction to Functions . Introduction to Functions. Introduction to Functions One of the core concepts in Collee Alebra is the function. There are man was to describe a function and we bein b definin a function as a special

More information

Introduction. and set F = F ib(f) and G = F ib(g). If the total fiber T of the square is connected, then T >

Introduction. and set F = F ib(f) and G = F ib(g). If the total fiber T of the square is connected, then T > A NEW ELLULAR VERSION OF LAKERS-MASSEY WOJIEH HAHÓLSKI AND JÉRÔME SHERER Abstract. onsider a push-out diaram of spaces A, construct the homotopy pushout, and then the homotopy pull-back of the diaram one

More information

A High Productivity/Low Maintenance Approach to Highperformance Computation for Biomedicine: Four Case Studies

A High Productivity/Low Maintenance Approach to Highperformance Computation for Biomedicine: Four Case Studies 90 CARRIERO ET AL., Facilitatin HPC in Biomedicine Case Report j A Hih Productivity/Low Maintenance Approach to Hihperformance Computation for Biomedicine: Four Case Studies NICHOLASCARRIERO,PHD, MICHAEL

More information

Smallworld Training Course Catalogue

Smallworld Training Course Catalogue Smallworld Trainin Course Cataloue Smallworld Trainin Courses Contents Reional offices...5 Smallworld Product Trainin Paths...6 Trainin Courses for Smallworld Core Spatial Technoloy (CST)...9 CST: Foundation...10

More information

Integrating Formal Models into the Programming Languages Course

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

More information

Technical Publication

Technical Publication Technical Publication Advancin Thermal Mass Gas Flow Meters By Gerardo Varas, Sr. Member Technical Staff Fluid Components International (FCI) Visit FCI online at www.fluidcomponents.com FCI is ISO 9001:2000

More information

Employment, Wage Structure, and the Economic Cycle: Differences between Immigrants and Natives in Germany and the UK

Employment, Wage Structure, and the Economic Cycle: Differences between Immigrants and Natives in Germany and the UK Employment, Wae Structure, and the Economic Cycle: Differences between Immirants and Natives in Germany and the UK Christian Dustmann (UCL, CReAM), Albrecht Glitz (Universitat Pompeu Fabra, CReAM) and

More information

Object-Oriented Desin and Prorammin C++ Container Classes Outline Introduction Container Class Objectives Class Library Architecture Parameterized Types Preprocessor Macros enclass void Pointer Method

More information

TWO-PHASE SAMPLING OF TAX RECORDS FOR BUSINESS SURVEYS

TWO-PHASE SAMPLING OF TAX RECORDS FOR BUSINESS SURVEYS TWO-PHASE SAMPLING OF TAX RECORDS FOR BUSINESS SURVEYS KEY WORDS: optimal allocation, convex prorammin, efficiency 1. Introduction In the last few years, there has been an increase in the use of administrative

More information

ATLaS: A Native Extension of SQL for Data Mining and Stream Computations

ATLaS: A Native Extension of SQL for Data Mining and Stream Computations ATLaS: A Native Extension of SQL for Data Minin and Stream Computations Haixun Wan IBM T. J. Watson Research Center Hawthorne, NY 10532 haixun@us.ibm.com Carlo Zaniolo Computer Science Dept, UCLA Los Aneles,

More information

The E-R èentity-relationshipè data model views the real world as a set of basic objects èentitiesè and

The E-R èentity-relationshipè data model views the real world as a set of basic objects èentitiesè and CMPT-354-Han-95.3 Lecture Notes September 20, 1995 Chapter 2 The Entity-Relationship Model The E-R èentity-relationshipè data model views the real world as a set of basic objects èentitiesè and relationships

More information

Kinematics in 2-D (and 3-D) From Problems and Solutions in Introductory Mechanics (Draft version, August 2014) David Morin, morin@physics.harvard.

Kinematics in 2-D (and 3-D) From Problems and Solutions in Introductory Mechanics (Draft version, August 2014) David Morin, morin@physics.harvard. Chapter 3 Kinematics in 2-D (and 3-D) From Problems and Solutions in Introductory Mechanics (Draft version, Auust 2014) David Morin, morin@physics.harvard.edu 3.1 Introduction In this chapter, as in the

More information

STEM Camp Adventure for Everyone! June 8 th -June11th

STEM Camp Adventure for Everyone! June 8 th -June11th for Everyone! June 8 th -June11th Course Descriptions Course name: Kitchen / Cookin Grades: K-3 Description: Every family has its own personal chemistry lab--and it's usually the most popular room in the

More information

Total Portfolio Performance Attribution Methodology

Total Portfolio Performance Attribution Methodology Total ortfolio erformance Attribution Methodoloy Morninstar Methodoloy aper May 31, 2013 2013 Morninstar, Inc. All rihts reserved. The information in this document is the property of Morninstar, Inc. Reproduction

More information

Water Quality and Environmental Treatment Facilities

Water Quality and Environmental Treatment Facilities Geum Soo Kim, Youn Jae Chan, David S. Kelleher1 Paper presented April 2009 and at the Teachin APPAM-KDI Methods International (Seoul, June Seminar 11-13, on 2009) Environmental Policy direct, two-stae

More information