|
|
- Theresa Dalton
- 8 years ago
- Views:
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
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 informationHardware 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 informationSolving 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 informationMoving 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 informationSMART 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 informationA 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 informationS 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 informationA 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 informationPrinciples 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 informationSMART 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 informationA 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 informationAppian 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 informationBPO. 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 informationHewlett-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 informationThe 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 informationHow 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 informationHow 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 information1 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 informationToday. 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 informationEfficient 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 informationCurriculum 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 informationSPSS 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 informationSave 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 informationChapter. 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 informationTHE 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 informationDecimal 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.
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 informationHow 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 informationStrategies 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 informationBusiness 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 informationSIMPLIFICATION 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 informationTSM 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 informationFor 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 informationThe 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 informationAdaptive 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 informationAn 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 informationUNIQUE 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 informationHPC 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 informationA 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 informationThe 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 informationUNIQUE 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 informationGoverned 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 informationIt 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 informationInternet 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 informationSolving 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 informationTwo-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]
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 informationOverview. 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 informationLightSweep. 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 informationTheme 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 informationA 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 informationSMART 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 informationQuickBooks: 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 informationLEADERSHIP 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 informationThe 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 informationThe 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 informationOn 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 informationReal-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 informationOn 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 informationGlobal 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 informationTechnical 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 informationA 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 informationPLEASE 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 informationHoare-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 informationTraffic 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 informationACO 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 informationwhite 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 informationBuilding. 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 informationADT 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 informationBPM 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 informationWeb 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 informationA 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 informationAmerican 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 informationJFlow: 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 informationHealthSpan 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 informationThomas 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 informationSynergy 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 informationChapter 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 informationlanguage 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 informationDelivering 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 informationI 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 informationA 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 informationKeys 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 informationpublic 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 informationComputing 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 information1.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 informationIntroduction. 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 informationA 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 informationSmallworld 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 informationIntegrating 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 informationTechnical 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 informationEmployment, 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 informationObject-Oriented Desin and Prorammin C++ Container Classes Outline Introduction Container Class Objectives Class Library Architecture Parameterized Types Preprocessor Macros enclass void Pointer Method
More informationTWO-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 informationATLaS: 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 informationThe 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 informationKinematics 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 informationSTEM 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 informationTotal 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 informationWater 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