Chapter III AN END TO END EXAMPLE

Size: px
Start display at page:

Download "Chapter III AN END TO END EXAMPLE"

Transcription

1 44 Chapter III AN END TO END EXAMPLE Chapter Summary All of the stages of using the Ultraman tool and run-time to create a new view from an existing view are explained in this chapter by working through a single example. A summary of these steps is: 1. Preparation: One must identify the portions of the input interface to be transformed, where the results should be placed, and what type of computation should be use to do the transformation. 2. Using the tool: The new view s designer must express to the Ultraman tool the pattern(s) to match, what user-written transformation actions to call with matches that are found, and what parameters (derived from the found matches) are to be passed to the user s transformation actions. 3. Writing the transformation actions: A user action must transform the parameters passed (see step 2) into output interactors, structured as a tree of nodes. These resulting nodes are attached to shadow objects, which perform Ultraman s state preservation functions. The shadow object s must be initialized by user code, generally this is done at the time the object that the shadow object represents is initialized. 4. Updating the system: In the current implementation, Ultraman s run-time must be informed each time an event is handled by the user s application. Each time Ultraman is notified, it recalculates the derived

2 45 interface(s) from the source interface (preserving or reclaiming as much of the previously derived interface as possible). Introduction Through the course of this chapter we will explore how to use the Ultraman tool & run-time to create a new view in a fictional organizational chart application. In this scenario, we will assume that we have already constructed an organizational chart editor and the organization chart can be modified using a traditional browsing view. This standard view shows a collection of nodes organized into a tree; this shows who reports to whom in an organization. This view is what is normally referred to when one mentions an organizational chart. This standard view can be directly manipulated: Nodes and thus people and their subordinates can be dragged in the view to change its structure. Dropping a node on another node indicates that the dropped node should be considered a direct subordinate of the node dropped on. A mock up of a screen shot of our example application is seen in Figure 3-1. FIGURE 3-1 Mock Up Of The Organizational Chart Application By using Ultraman, we seek to build a new view which creates a departmental listing. For the purposes of this discussion, a departmental listing contains the names of a group of people who are contained in a large-granularity organization within a company. Example departments might be engineering, operations, or marketing. In the example, our departmental listings are a list of names of people which are

3 46 sorted on the primary key of the department they work in, the secondary key of their last name, and the tertiary key of their first name. An example departmental listing might look something like this: FIGURE 3-2 Example Departmental Listing Preparation Before starting out to use the Ultraman tool and run-time, we must make three important decisions about our new view. The decisions are, in summary: 1. Determine the important structural features of the original view in our example for this chapter, the original view is the standard organizational chart view 2. Decide the structure of the top of the generated interface for this example, this is the departmental listing view 3. Decide whether the computation which converts the original view to the generated view is of a local or global nature

4 47 Visual Presentation FIGURE 3-3 Structure Of UI Tree In Organizational Chart Application The first of these decisions is important in that it will dictate what the patterns are that Ultraman searches for at run-time. The second of the decisions is primarily an optimization, but is used often because the user interface tree of an program almost always has several nodes at or near the top of its tree which are unchanging. The third decision is primarily one of programming convenience: local computations allow the programmer to work with a simpler API but have less computing power. Determining The Important Structural Features For this example, we will assume that the tree of interactors that form the original, standard view are organized as in Figure 3-3, Structure Of UI Tree In Organizational Chart Application, on page 47. For our purposes the only important structural feature of this tree is at the bottom of right hand side of the tree, a repeated pattern. Each use of this pattern indicates that an entry in the organizational chart is visible to the user. We are assuming that the OrgEdge node is an interactor which displays an (incoming) edge on the screen so that a superior node in the chart is connected to its subordinate. We further assume that OrgEdge might contain semantic pieces of data about the type of connection between this superior subordinate pair.

5 48 FIGURE 3-4 Pattern Structure So our new departmental view will be computed from the structure shown in Figure 3-4, Pattern Structure which has three constituent nodes. The reader may wonder Why not just use the one node that has the data of interest the TextBox? The RoundRect and the OrgEdge are probably only for display purposes. The reason to use the entire structure is to insure we only select TextBoxes which are the ones of interest. We could achieve the same end by having a pattern which contained only a TextBox and placing predicates on the TextBox in the pattern, but it seems more clear to proceed with the slightly larger pattern and no predicate. Deciding The Structure Of The Top Of The Generated Interface For the purpose of simplicity, we will assume that the top of the generated interface has only three nodes as seen in Figure 3-5. These three nodes are there to allow the user to see the interface on the screen (the Frame object), have a scrolling view onto the potentially large number of interactors (the Scroller object), and display the objects neatly in a column (the Column object).

6 49 FIGURE 3-5 Structure At The Top Of The Generated Interface Deciding If The Computations Are Of A Local Or Global Nature Note to committee: Due to some suggestions on previous drafts, this section may be removed later in favor of a new code generation approach which unifies aggregators and transformation functions. This decision of whether or not the transformation from the original interface to the new, generated interface is a local or global one is primarily one that can be made on the basis of programming convenience. Ultraman provides two different, but related mechanisms for doing computations. These two mechanisms are transformation actions, which correspond to local computations, and aggregators, which correspond to global computations. As one would expect, aggregators being a global computation can always subsume transformation actions, a local computation; as we will see later, this is also true formally. The reason both mechanisms are provided is that aggregators require the end-programmer to conform to a slightly more complex API. The reader should keep in mind that at this point only the decision needs to be made about the type of computation, we will make Ultraman aware of our decision later. A transformation action is piece of code written by the user for perform the conversion of patterns into output. Generally speaking, the code is a user-defined, static Java method. When a pattern of interest is found by Ultraman, the transformation action, if any, for that pattern is called and the transformation accomplished. For any call made into the user s transformation action, the Ultraman run-time expects a function signature of this form: static void myfunc(object obj); The void return type indicates that transformation functions are usually called for effect, or, in other words, to put user interface object into the output tree. (A design alternative that was considered was for the transformation action to return the parts of the output tree and have the programmer specify where Ultraman should place these returned values. This seemed to have a substantial limiting effect on the flexibility of the

7 50 end-programmer to choose where to put the nodes in the generated output. For example, many types of conditional placements become much more complex to express.) The parameter to the user s transformation action is of type Object. The origin of this value is explained more thoroughly in the section The Tool Proper on page 52. In summary, this value can be thought of as the distilled version of the contents of the pattern at run-time; the object passed represents the actual values matched. The type of Object was chosen to allow any type of object to be passed as a parameter. An aggregator requires that the end-programmer follow a slightly more complex API. For the purposes of exposition, we are going to assume that we are interested in an aggregator called count which counts up the total number of instances of some pattern that are found. This highlights the difference between transformation actions and aggregators: a transformation action would be appropriate if you needed to perform a computation on each pattern, an aggregator counts up the total number of patterns. For an aggregator referred to as count Ultraman will assume the existence of three static, Java functions. They have the following signatures: static void countinit(); static void count(object obj); static void countfinish(); The second of these functions will be called in a way that is exactly the same as our above description of a transformation action so it is now clear that aggregators are a proper superset of transformation actions. The first and last of these functions are called by Ultraman s run-time at the beginning and end of the overall transformation respectively. These functions are not called on each match of a pattern, but before and after any patterns are found. The calls to the init function and the finish function give the user code an opportunity to prepare and complete its global computation respectively. In an example like counting, the init function would contain code to initialize a counter to zero and the finish function would actually add nodes to the output tree based on the count actually found during the transformation sequence. For simplicity in this example problem, we will choose to use a transformation action, and we will name this transformation action xform. As explained above, this function gets called every time a pattern of interest such as the one in Figure 3-4 is found, and its job is to convert patterns into interactors for the generated interface. The full text of the function xform appears below in the section Transformation Actions And Shadow Objects on page 56.

8 51 Using The Ultraman Tool Now that our preliminary decisions have been made, we can actually use the Ultraman tool to hook up the pattern matching engine to our code. This is done using three distinct steps: 1. Inform Ultraman about the parts of our code of interest 2. Use the tool to create pattern(s) 3. Use the tool to create parameters for our code to work with Declaring Transformation Action As we explained above, we are using a transformation action named xform which performs the work of converting our found patterns into items for the departmental list. At this point, we need to make Ultraman s tool aware of the name of our function so that code generated by Ultraman can correctly call our code. We do this by creating a Java class which has in its source code the name of our transformation action. This requires just cutting and pasting from an existing piece of code in our case. Ultraman provides a base class which encapsulates almost all the information needed by the tool about a transformation action; the only thing the user supplies is the name of the method in their code to call, i.e. xform, as a Java String. (To be more exact, the user supplies both a String which is the name of their transformation action s function and a String which is the text to be displayed in the tool s user interface. However, these are almost always the same, so this distinction is of little importance.) The code containing this information is compiled and placed in a well-known directory so Ultraman will find it at the time the tool starts up. When the code is found by the tool, the name of the user s function is known by the system and the transformation action can then be used with the tool.

9 52 FIGURE 3-6 Screen Dump Of The Ultraman Tool The Tool Proper When we start the tool, we will note that our newly declared transformation action, xform, is visible in the list of transformation actions in the upper right portion of the GUI, shown in Figure 3-6. By selecting the radio button labelled with our code s name, we have told Ultraman to connect this pattern to this user specified code. This screen shot also shows the structure from Figure 3-4 in the top, central portion of the window. By putting the structure from Figure 3-4 in this portion of the interface, we have expressed to the tool and run-time that this is the pattern we are interested in matching. Editing this structure can be accomplished by activating a pop-up menu that is found on each node on the structure; nodes can be

10 53 renamed by double-clicking on them and editing their text. (We have used unqualified typenames as the types of each node in the structure above for clarity. Most uses of Ultraman would require the fully qualified Java-style nomenclature.) The center, horizontal strip of the interface is the region for putting aggregators. Aggregators are functions which compute a value of the entire input interface tree, not of each pattern matched. We have not selected any aggregators, so Ultraman will not attempt to do any aggregation for this particular pattern. In the current implementation, the user can have a transformation action, an aggregator, both, or neither as the connection to a particular pattern. As explained before, aggregator differs from a transformation action in that an aggregator can compute a function such as How many people have Bob as their immediate superior? instead of Transform each of Bob s subordinates into a node in the new view. The latter is more typical of a transformation action. More information about aggregators and their relationship to transformation actions can be found in Deciding If The Computations Are Of A Local Or Global Nature on page 49. The final piece of our puzzle is the program code at the bottom of Figure 3-6. This code is allowed to be any legal Java program segment. It will be copied into the resulting run-time as the body of a Java method and thus many contain any legal Java statements or declarations. Before we go too far, let us return for a moment to the structure pictured at the top of the interface in the screen dump. Each node as an uppercase letter associated with it the letter before the colon in each node shown in Figure 3-6. This letter is the label for each node. When a pattern is found at run-time by Ultraman, each matched node is bound to a variable which has the same name as the corresponding label shown in the screen dump above. This process of binding matched values to names allows the end-programmer to effectively address the values of nodes found in the input. The purpose of this program fragment at the bottom of the screen dump is to supply the parameter that is needed by a transformation action or the normal part of an aggregator (See Deciding If The Computations Are Of A Local Or Global Nature on page 49). As explained previously, a transformation action takes one parameter of type Object. We are going to overload that one parameter with three parameters by using the Java type Vector an object which holds any number of other objects inside it. We will pass three parameters inside the Vector which will be unpacked in the body of our transformation action, xform. In order, the contents of the Vector will be a String with the department name, a String with the employee s last name, and a String with the employee s first name. In general this program fragment will compute something that approximates the return value of this pattern. This return value is passed to transformation actions and aggregators as the distilled version of the pattern that was found.

11 54 To return the program fragment in the bottom section of Figure 3-6, we can see that the first substantive action this code does is to extract the found interactors from the source tree and cast them to the proper type. These nodes are inside objects which are the actual tokens the lexer operates on. (The design choice to allow programmers to see tokens, which themselves contain useful information to some users, is a trade-off against the inconvenience of having to retrieve the interactors from inside tokens when they are needed. More details about the lexer subsystem of Ultramaan can be found in subsequent chapters.) The found interactors are interrogated for useful information which is then stuffed into a newly created Vector, in the middle section of the code, and this Vector is returned. This Vector will become the return value of this pattern. Although any computation could be done in this section, most commonly this code is used to distill the pattern down to the important essence of the data in the pattern. It is this essence that is going to be needed to compute the transformation action. The value returned (v in our example code) is then passed to the designated transformation action (xform) for the actual transformation. The passing of v to xform is done automatically by the Ultraman infrastructure. Slightly more precisely speaking, the Ultraman infrastructure takes whatever value is returned by the program fragment and passes to any selected transformation action. The separation of concerns makes it easier to connect different types of patterns to the same transformation action as well as greatly simplifying the transformation action s code since it need not be concerned with what patterns are, how Ultraman works, nodes or token types, etc. A summary of the sequence of events involved in a transformation action and the pieces of code used can be seen below: 1. Ultraman discovers a pattern of interest in the original interface, such as the pattern shown in Figure 3-4, Pattern Structure, on page 48, 2. Code snippet called to convert pattern into parameter, as seen in at the bottom of Figure 3-6, Screen Dump Of The Ultraman Tool, on page Return result of the code snippet passed to transformation action, such as xform whose code can be seen on page 57

12 55 FIGURE 3-7 Screen Dump Of The Ultraman Code Generation Dialog Generating Code Once the patterns and the connection to application code is completed, the tool can be told to generate code. At code generation-time, there are several options that can control how the generated code ends up fitting into the final application. All of these options can be see in Figure 3-7. Probably the most important of these options is the Code Gen Prefix which is the string that is prepended onto the names of the generated parser and lexer. (This name is analogous to the use of yy in the lex and yacc tools on unix systems.) The Package Prefix field and the Directory field allows the user to declare the Java package and directory of that package that the user would like the generated parser and lexer emitted into, respectively. The final two fields are the Pre-Parse Hook and the Post-Parse Hook which are called before and after the parse respectively. The value of these fields above is empty, so no user defined code is called either before or after the entire parse; if there were values in these fields, they would be the name of user-written functions. By using these fields the user can perform global initialization and shutdown. The sanity checking checkbox is primarily of interest to persons doing development of Ultraman itself; most users simply leave this box checked since the default insures that Ultraman performs self-checking as it runs. The bottom section of this dialog box is another free form area of Java code. This section is normally used to insert import statements so that, at a later point, the Java compiler used to compile the Ultraman-generated code will not generate errors due to unknown types. The code generated by Ultraman is not Java code itself, but an input file to the LL(k) parser and lexer generator ANTLR [ref here]. Before the code can be compiled and linked together with user code, ANTLR has to be run over the input file, whose name is pre.g for a code gen prefix of pre. Several files are generated by ANTLR, but the only ones of importance here are again for a code generation prefix of pre

13 56 prelexer.java and preparser.java. These files, along with parts of the Ultraman run-time, contain all the code for matching the patterns in an input user interface tree and dispatching the matched patterns to user code. Writing A Transformation Action When one begins to write a transformation action, the primary things to keep in mind are, What transformation am I trying to accomplish? and Where do the resulting, output nodes belong in the transformed tree? In our example, the answer to the first question is that we need to convert a Vector of three strings into a line of text (Ala Figure 3-2) in the correct ordinal position in a Column so as to keep the table sorted. We are not going to consider how to line up the employee names and the department names into columns, as shown in Figure 3-2, but as we will see later this could be easily accomplished. The answer to the second question is a little more complex, and will be addressed in what follows. Initialization-Time As will be explained more fully in future chapters, one of the primary technologies brought forward by Ultraman is the ability to preserve state in transformed interfaces. To exploit this ability, the transformation action writer must add a small amount of code to the initialization sequence of his or her program. This line of code declares a shadow object which is a global variable we will call shadobj and attaches it to a point in the output tree immediately above where we are going to be placing the transformed labels. Recall that earlier ( Preparation on page 46) we decided on the structure of the top of the output tree; we are now attaching a shadow object at the leaf of that tree. For our example, the only a single line of code would be added to the initialization of the program and the line of code would look like this: shadobj = new ShadowObject(theColumn); Throughout this discussion we will describe all of the generated nodes of the transformation as being placed into or made children of shadobj. In every case, we mean that we are placing the object inside the shadow object so that it can act as a proxy for the column object. Since the API of the shadow object is the same as the column, it is a simple matter for the end-programmer to simply use the shadow object instead of the column. Thus, the answer to our second question posed above, Where are the result nodes added? is simply, They are added to the shadow object. Transformation Actions And Shadow Objects Returning to our discussion of the writing of our transformation action, our job as the writer of the transformation action is clear: Take the Vector of values passed to us by Ultraman s infrastructure (the same

14 57 one we computed previously, See The Tool Proper on page 52) and convert it interactive objects suitable for display in the departmental listing. The objects should be attached to the shadow object, shadobj, so they can be affected by Ultraman s state preservation infrastructure. Label left, right; Row final; Component comp; // unpack arguments String dpt=(string)v.elementat(0); String lname=(string)v.elementat(1); String fname=(string)v.elementat(2); // create a label with the person s name left=new Label(lName +, + fname); // label with the department right=new Label(dpt); // make a row with the name and the department // (using a row allows us more flexibility later if we need // to line up the columns as in Figure 3-2) final=new Row(); final.add(left); final.add(right); // find predecessor of this node for use in insertion sort comp=findpredecessor(dpt, lname, fname); // insert our row after predecessor shadobj.add(comp,final); The comments in the above code segment explain how the code works, but a couple of important, higher level issues should be noted. First, the feel of this code is very straightforward: Take the arguments provided, do a small computation, and attach the result to the output tree (more precisely, attach the results the shadow object representing relevant piece of the output tree). This code is quite isolated from both the pattern matching system of Ultraman and the state preservation system; neither of these Ultraman-related issues are really important to this code. Second, this code is quite specific to the particular semantics of this application. Even ignoring the extraction of the parameters from the Vector, determining where to insert this node into the list of people in a department does not seem like a function Ultraman could or should be providing. As we have phrased our example here, the departmental listing created by this code would be noninteractive or output only. We could easily change the code above to output an interactor, like a button, which has some type of input behavior. None of the code generated by the Ultraman tool or any of the input needed by the tool would need to be changed. The only necessary additions would be the user code to perform the input behavior of the button. Further, as our example stands now with its column of rows each row will have its state preserved by the shadow object. This might become much more significant if we changed our transformation action to output a column of radio buttons which have a notion of a currently

15 58 selected item, or some other interactive object which allows its text to be selected for the purposes of copying to the clipboard (even our labels might allow this). Putting It All Together Note to the committee: At Scott s suggestion, I m planning to make a small code generation change which will simplify this section somewhat by avoiding the need for the exception handler below. The only remaining question to be answered by how our example should work is how to inform Ultraman when to do its job. In a perfect world, we would like Ultraman to run after each and every user event is dispatched and to do its work without end-programmer intervention. By running after each event, Ultraman could be sure that interfaces which are being generated by its transformation process are always in synch with their source. However, at the current time our implementation does not have any way to become aware of when each event is handled by the application. Thus, our application must provide some help to Ultraman to inform of it of when to perform its work. (JavaSoft has announced and published specs on an API which would allow monitoring of each event that the system processes, but this API is not yet available. Such an API would avoid the need for the help that Ultraman currently receives from the running application.) Under these circumstances, our application must tell Ultraman when to run and our application should do this at each time that an event is handled. More precisely, the application should notify Ultraman each time an event is handled which could affect the state of the generated interface. It stretches credulity to think that an application programmer could make this calculation, so informing Ultraman after each event is processed is the way we expect to proceed. The code necessary to tell Ultraman assuming you use a prefix of Org at code generation-time (See Generating Code on page 55) to run is as follows: try { // mainframe below is your source interface (the input to Ultraman) OrgParser parser=new OrgParser(new OrgLexer(mainFrame)); parser.top(); } catch (antlr.parserexception e) { System.out.println( PARSER PROBLEM: + e.getmessage()); System.exit(1); }

16 59 In simple terms, all that is necessary to do is to instantiate the parser/lexer pair which was generated by Ultraman and cause it to start parsing at the top (start) symbol. All of the machinery of the Ultraman pattern matcher, user code dispatcher, and state preservation system is handled by this routine. The reader may be wondering about the exception handler for antlr.parserexception. If Ultraman is functioning properly, this should never occur. This exception handler is not of interest, and should never be executed, during a normal execution of an Ultraman program. If this were to execute, it would be due to a bug in the code generation phase of Ultraman. The only other time that an exception might be thrown in the body of the code above is when user defined code throws an exception. Obviously, the end-programmer is responsible for catching exceptions he or she defines and throws. The primary utility of an end-programmer throwing an exception is to indicate that a point in the transformation process was reached where application semantics mandated that the transformation be stopped completely or stopped and restarted at a different location in the input. To resume processing at a different point in the input, the code above would be repeated but with a different interactor substituted for mainframe. The Parts Of An Application At this point, we will attempt to summarize where the various parts of an Ultraman application reside, who generates them, and what their various interactions are. This can be very useful in understanding the overall structure of an application which uses Ultraman. Figure 3-8 shows the major parts of our example (and representative) Ultraman application, after the Ultraman tool has been run and all the Java code generated, including the code generated by ANTLR. Two bodies of code have been written by the user, the original application (including a small amount of extra initialization code) and the Ultraman transformation actions which implement the transformations. One body of code, the lexer/parser pair has been generated by Ultraman, although by way of ANTLR. This code performs the pattern matching and other internal Ultraman-related tasks as well as making calls into the user code for transformation actions. The final part of the system is Ultraman run-time code which provides all the support classes for the parser and lexer as well as providing Shadow Objects for the convenience of the user level code.

17 60 The arrows in the diagram indicate calls that are made from one part of the code to another. These arrows in the diagram are not meant to be all inclusive, but rather give the reader the general impression of how the pieces of code work together. The arrows are arranged chronologically from top to bottom (in terms of their point of origin), although the initialization arrow obviously is executed only once. The latter three arrows form the main loop of Ultraman execution: User code notifies Ultraman of a change in the application, Ultraman matches patterns and calls back into user code to perform transformations, and the transformations utilize the Ultraman library s shadow object for doing the actual screen updating. Of critical importance here is to understand that all of these pieces of code are encoded as Java classes and are all linked together in the final application. From the standpoint of the end- programmer, the only part of the generated code that he or she needs to be aware of is the entry point to inform Ultraman of a change to the application s state, or, more correctly, a change to a source tree that an Ultraman-derived interface depends on. The remainder of the lexer/parser pair is opaque to the end-programmer and should probably not be modified or manipulated. (One of the primary reasons not to modify the lexer or parser is that substantial amounts of machinery are encoded there for assisting with the state preservation part of the Ultraman library. In particular, the value numbering scheme used by the state preservation system is tightly integrated into the parser in ways that could be quite surprising to the end-programmer.) As a general rule, the only Ultraman run-time APIs that concern an application programmer are those involving Shadow Objects. The application programmer needs to use these APIs at initialization-time and at the time objects are put into the result tree of a transformation.

18 61 User Code System GeneratedCode Initialization Parser And Lexer Pair Original OrgChart View Code Event Notification Callbacks Ultraman Run-time Ultraman Run-time Transformation Code Use of Shadow Objects FIGURE 3-8 Overview Of The Code In An Ultraman Application

Chapter IV. Introduction

Chapter IV. Introduction 54 Chapter IV ULTRAMAN ARCHITECTURE Introduction In previous chapters, we have introduced and motivated the ideas of a transformational approach to generating user interfaces. Throughout this dissertation

More information

6.001 Notes: Section 8.1

6.001 Notes: Section 8.1 6.001 Notes: Section 8.1 Slide 8.1.1 In this lecture we are going to introduce a new data type, specifically to deal with symbols. This may sound a bit odd, but if you step back, you may realize that everything

More information

Language Basics. /* The NUMBER GAME - User tries to guess a number between 1 and 10 */ /* Generate a random number between 1 and 10 */

Language Basics. /* The NUMBER GAME - User tries to guess a number between 1 and 10 */ /* Generate a random number between 1 and 10 */ Overview Language Basics This chapter describes the basic elements of Rexx. It discusses the simple components that make up the language. These include script structure, elements of the language, operators,

More information

ICOM 4015 Advanced Programming Laboratory. Chapter 1 Introduction to Eclipse, Java and JUnit

ICOM 4015 Advanced Programming Laboratory. Chapter 1 Introduction to Eclipse, Java and JUnit ICOM 4015 Advanced Programming Laboratory Chapter 1 Introduction to Eclipse, Java and JUnit University of Puerto Rico Electrical and Computer Engineering Department by Juan E. Surís 1 Introduction This

More information

The Dynamic Typing Interlude

The Dynamic Typing Interlude CHAPTER 6 The Dynamic Typing Interlude In the prior chapter, we began exploring Python s core object types in depth with a look at Python numbers. We ll resume our object type tour in the next chapter,

More information

6.001 Notes: Section 6.1

6.001 Notes: Section 6.1 6.001 Notes: Section 6.1 Slide 6.1.1 When we first starting talking about Scheme expressions, you may recall we said that (almost) every Scheme expression had three components, a syntax (legal ways of

More information

Unit 1: Working With Tables

Unit 1: Working With Tables Unit 1: Working With Tables Unit Overview This unit covers the basics of working with Tables and the Table wizard. It does not include working with fields, which is covered in Units 3 and 4. It is divided

More information

AADL Graphical Editor Design

AADL Graphical Editor Design AADL Graphical Editor Design Peter Feiler Software Engineering Institute phf@sei.cmu.edu Introduction An AADL specification is a set of component type and implementation declarations. They are organized

More information

6.001 Notes: Section 15.1

6.001 Notes: Section 15.1 6.001 Notes: Section 15.1 Slide 15.1.1 Our goal over the next few lectures is to build an interpreter, which in a very basic sense is the ultimate in programming, since doing so will allow us to define

More information

Compiler Theory. (Semantic Analysis and Run-Time Environments)

Compiler Theory. (Semantic Analysis and Run-Time Environments) Compiler Theory (Semantic Analysis and Run-Time Environments) 005 Semantic Actions A compiler must do more than recognise whether a sentence belongs to the language of a grammar it must do something useful

More information

Karlen Communications Track Changes and Comments in Word. Karen McCall, M.Ed.

Karlen Communications Track Changes and Comments in Word. Karen McCall, M.Ed. Karlen Communications Track Changes and Comments in Word Karen McCall, M.Ed. Table of Contents Introduction... 3 Track Changes... 3 Track Changes Options... 4 The Revisions Pane... 10 Accepting and Rejecting

More information

EDMS. Architecture and Concepts

EDMS. Architecture and Concepts EDMS Engineering Data Management System Architecture and Concepts Hannu Peltonen Helsinki University of Technology Department of Computer Science Laboratory of Information Processing Science Abstract

More information

The Extensible Markup Language (XML) and Java technology are natural partners in helping developers exchange data and programs across the Internet.

The Extensible Markup Language (XML) and Java technology are natural partners in helping developers exchange data and programs across the Internet. 1 2 3 The Extensible Markup Language (XML) and Java technology are natural partners in helping developers exchange data and programs across the Internet. That's because XML has emerged as the standard

More information

Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi

Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi Lecture - 8 Consistency and Redundancy in Project networks In today s lecture

More information

Compartment and Access

Compartment and Access Compartment and Access Page 1 Preface Using This Guide What's New? Getting Started Entering the Workbench Set Correct Working Units and Grid Saving Documents User Tasks Creating/Modifying Wall Systems

More information

Lecture Notes on Memory Layout

Lecture Notes on Memory Layout Lecture Notes on Memory Layout 15-122: Principles of Imperative Computation Frank Pfenning André Platzer Lecture 11 1 Introduction In order to understand how programs work, we can consider the functions,

More information

CS664 Compiler Theory and Design LIU 1 of 16 ANTLR. Christopher League* 17 February Figure 1: ANTLR plugin installer

CS664 Compiler Theory and Design LIU 1 of 16 ANTLR. Christopher League* 17 February Figure 1: ANTLR plugin installer CS664 Compiler Theory and Design LIU 1 of 16 ANTLR Christopher League* 17 February 2016 ANTLR is a parser generator. There are other similar tools, such as yacc, flex, bison, etc. We ll be using ANTLR

More information

the NXT-G programming environment

the NXT-G programming environment 2 the NXT-G programming environment This chapter takes a close look at the NXT-G programming environment and presents a few simple programs. The NXT-G programming environment is fairly complex, with lots

More information

Excel Tutorial 5: Working with Excel Tables, PivotTables, and PivotCharts. 6. You can use a table s sizing handle to add columns or rows to a table.

Excel Tutorial 5: Working with Excel Tables, PivotTables, and PivotCharts. 6. You can use a table s sizing handle to add columns or rows to a table. Excel Tutorial 5: Working with Excel Tables, PivotTables, and PivotCharts TRUE/FALSE 1. The header row must be row 1. ANS: F PTS: 1 REF: EX 234 2. If you freeze the top row in a worksheet and press Ctrl+Home,

More information

Principles of Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore

Principles of Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore (Refer Slide Time: 00:20) Principles of Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Lecture - 4 Lexical Analysis-Part-3 Welcome

More information

Chapter 4 Defining Classes I

Chapter 4 Defining Classes I Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the

More information

Creating a Probabilistic Model in Informatica Data Quality

Creating a Probabilistic Model in Informatica Data Quality Creating a Probabilistic Model in Informatica Data Quality 2013 Informatica Corporation. No part of this document may be reproduced or transmitted in any form, by any means (electronic, photocopying, recording

More information

Personal Health Assistant: Final Report Prepared by K. Morillo, J. Redway, and I. Smyrnow Version Date April 29, 2010 Personal Health Assistant

Personal Health Assistant: Final Report Prepared by K. Morillo, J. Redway, and I. Smyrnow Version Date April 29, 2010 Personal Health Assistant Personal Health Assistant Ishmael Smyrnow Kevin Morillo James Redway CSE 293 Final Report Table of Contents 0... 3 1...General Overview... 3 1.1 Introduction... 3 1.2 Goal...3 1.3 Overview... 3 2... Server

More information

Become strong in Excel (2.0) - 5 Tips To Rock A Spreadsheet!

Become strong in Excel (2.0) - 5 Tips To Rock A Spreadsheet! Become strong in Excel (2.0) - 5 Tips To Rock A Spreadsheet! Hi folks! Before beginning the article, I just wanted to thank Brian Allan for starting an interesting discussion on what Strong at Excel means

More information

Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only

Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only Chapter 16 Pattern-Based Design Slide Set to accompany Software Engineering: A Practitioner s Approach, 8/e by Roger S. Pressman and Bruce R. Maxim Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger

More information

************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE

************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE Program 10: 40 points: Due Tuesday, May 12, 2015 : 11:59 p.m. ************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE *************

More information

CS112 Lecture: Defining Classes. 1. To describe the process of defining an instantiable class

CS112 Lecture: Defining Classes. 1. To describe the process of defining an instantiable class CS112 Lecture: Defining Classes Last revised 2/3/06 Objectives: 1. To describe the process of defining an instantiable class Materials: 1. BlueJ SavingsAccount example project 2. Handout of code for SavingsAccount

More information

CHAPTER 1 COPYRIGHTED MATERIAL. Finding Your Way in the Inventor Interface

CHAPTER 1 COPYRIGHTED MATERIAL. Finding Your Way in the Inventor Interface CHAPTER 1 Finding Your Way in the Inventor Interface COPYRIGHTED MATERIAL Understanding Inventor s interface behavior Opening existing files Creating new files Modifying the look and feel of Inventor Managing

More information

CS02b Project 2 String compression with Huffman trees

CS02b Project 2 String compression with Huffman trees PROJECT OVERVIEW CS02b Project 2 String compression with Huffman trees We've discussed how characters can be encoded into bits for storage in a computer. ASCII (7 8 bits per character) and Unicode (16+

More information

printf( Please enter another number: ); scanf( %d, &num2);

printf( Please enter another number: ); scanf( %d, &num2); CIT 593 Intro to Computer Systems Lecture #13 (11/1/12) Now that we've looked at how an assembly language program runs on a computer, we're ready to move up a level and start working with more powerful

More information

Creating Reports using Report Designer Part 1. Training Guide

Creating Reports using Report Designer Part 1. Training Guide Creating Reports using Report Designer Part 1 Training Guide 2 Dayforce HCM Creating Reports using Report Designer Part 1 Contributors We would like to thank the following individual who contributed to

More information

Creating accessible forms

Creating accessible forms Creating accessible forms Introduction Creating an accessible form can seem tricky. Some of the questions people commonly ask include: Can I use protected forms? How do I lay out my prompts and questions?

More information

Formulas, LookUp Tables and PivotTables Prepared for Aero Controlex

Formulas, LookUp Tables and PivotTables Prepared for Aero Controlex Basic Topics: Formulas, LookUp Tables and PivotTables Prepared for Aero Controlex Review ribbon terminology such as tabs, groups and commands Navigate a worksheet, workbook, and multiple workbooks Prepare

More information

CPS221 Lecture: Operating System Functions

CPS221 Lecture: Operating System Functions CPS221 Lecture: Operating System Functions Objectives last revised 6/23/10 1. To overview key hardware concepts 2. To iintroduce the process concept 3. To discuss the various kinds of functionality of

More information

Rationale for TR Extension to the programming language C. Decimal Floating-Point Arithmetic

Rationale for TR Extension to the programming language C. Decimal Floating-Point Arithmetic WG14 N1161 Rationale for TR 24732 Extension to the programming language C Decimal Floating-Point Arithmetic Contents 1 Introduction... 1 1.1 Background... 1 1.2 The Arithmetic Model... 3 1.3 The Encodings...

More information

Chapter 2: Operating-System Structures

Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System

More information

(Refer Slide Time: 01:25)

(Refer Slide Time: 01:25) Computer Architecture Prof. Anshul Kumar Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture - 32 Memory Hierarchy: Virtual Memory (contd.) We have discussed virtual

More information

Programming Assignment IV

Programming Assignment IV Programming Assignment IV 1 Introduction In this assignment, you will implement the static semantics of Cool. You will use the abstract syntax trees (AST) built by the parser to check that a program conforms

More information

Mastertracks Pro 4 Review

Mastertracks Pro 4 Review Mastertracks Pro 4 Review Introduction The Macintosh sequencer wars are really starting to hot up with the release of Mastertracks Pro 4 from Passport Designs Inc. First this year there was OpCode s Vision,

More information

Artificial Intelligence Prof. Deepak Khemani Department of Computer Science and Engineering Indian Institute of Technology, Madras

Artificial Intelligence Prof. Deepak Khemani Department of Computer Science and Engineering Indian Institute of Technology, Madras Artificial Intelligence Prof. Deepak Khemani Department of Computer Science and Engineering Indian Institute of Technology, Madras (Refer Slide Time: 00:17) Lecture No - 10 Hill Climbing So, we were looking

More information

SharePoint User Manual

SharePoint User Manual SharePoint User Manual Developed By The CCAP SharePoint Team Revision: 10/2009 TABLE OF CONTENTS SECTION 1... 5 ABOUT SHAREPOINT... 5 1. WHAT IS MICROSOFT OFFICE SHAREPOINT SERVER (MOSS OR SHAREPOINT)?...

More information

15 212: Principles of Programming. Some Notes on Continuations

15 212: Principles of Programming. Some Notes on Continuations 15 212: Principles of Programming Some Notes on Continuations Michael Erdmann Spring 2011 These notes provide a brief introduction to continuations as a programming technique. Continuations have a rich

More information

Defining Classes and Methods

Defining Classes and Methods Defining Classes and Methods Chapter 4 Chapter 4 1 Basic Terminology Objects can represent almost anything. A class defines a kind of object. It specifies the kinds of data an object of the class can have.

More information

Prototyping a Swing Interface with the Netbeans IDE GUI Editor

Prototyping a Swing Interface with the Netbeans IDE GUI Editor Prototyping a Swing Interface with the Netbeans IDE GUI Editor Netbeans provides an environment for creating Java applications including a module for GUI design. Here we assume that we have some existing

More information

NMRA 2013 Peachtree Express Control Panel Editor - A

NMRA 2013 Peachtree Express Control Panel Editor - A NMRA 2013 Peachtree Express Control Panel Editor - A Dick Bronson RR-CirKits, Inc. JMRI Control Panel Editor for Modern Style Dispatching Panels Types of JMRI PanelPro Editors Layout Editor Panel Editor

More information

SharePoint AD Administration Tutorial for SharePoint 2007

SharePoint AD Administration Tutorial for SharePoint 2007 SharePoint AD Administration Tutorial for SharePoint 2007 1. General Note Please note that AD Administration has to be activated before it can be used. For further reference, please see our Product Installation

More information

Principles of Algorithm Design

Principles of Algorithm Design Principles of Algorithm Design When you are trying to design an algorithm or a data structure, it s often hard to see how to accomplish the task. The following techniques can often be useful: 1. Experiment

More information

Introduction to Personal Computing

Introduction to Personal Computing Introduction to Personal Computing Academic Computing Services www.ku.edu/acs Abstract: This document explains the basics of the Microsoft Windows operating system. It is intended for users who are either

More information

CS211 Lecture: Modeling Dynamic Behaviors of Systems; Interaction Diagrams and Statecharts Diagrams in UML

CS211 Lecture: Modeling Dynamic Behaviors of Systems; Interaction Diagrams and Statecharts Diagrams in UML CS211 Lecture: Modeling Dynamic Behaviors of Systems; Interaction Diagrams and Statecharts Diagrams in UML Objectives: 1. To introduce the notion of dynamic analysis 2. To show how to create and read Sequence

More information

GiftWorks Import Guide Page 2

GiftWorks Import Guide Page 2 Import Guide Introduction... 2 GiftWorks Import Services... 3 Import Sources... 4 Preparing for Import... 9 Importing and Matching to Existing Donors... 11 Handling Receipting of Imported Donations...

More information

Instructions for Using the Databases

Instructions for Using the Databases Appendix D Instructions for Using the Databases Two sets of databases have been created for you if you choose to use the Documenting Our Work forms. One set is in Access and one set is in Excel. They are

More information

Objective 1: Familiarize yourself with basic database terms and definitions. Objective 2: Familiarize yourself with the Access environment.

Objective 1: Familiarize yourself with basic database terms and definitions. Objective 2: Familiarize yourself with the Access environment. Beginning Access 2007 Objective 1: Familiarize yourself with basic database terms and definitions. What is a Database? A Database is simply defined as a collection of related groups of information. Things

More information

(Refer Slide Time: 00:23)

(Refer Slide Time: 00:23) In this session, we will learn about one more fundamental data type in C. So, far we have seen ints and floats. Ints are supposed to represent integers and floats are supposed to represent real numbers.

More information

Unit 2 : Computer and Operating System Structure

Unit 2 : Computer and Operating System Structure Unit 2 : Computer and Operating System Structure Lesson 1 : Interrupts and I/O Structure 1.1. Learning Objectives On completion of this lesson you will know : what interrupt is the causes of occurring

More information

Productivity! Feature Matrix

Productivity! Feature Matrix Features Code Generation Tools JBuilderX and Productivity! Std Pro JBuilderX Delegate.Insight - provides an easy way to generate methods, which implementations are delegated to another object (delegate).

More information

CS 6353 Compiler Construction Project Assignments

CS 6353 Compiler Construction Project Assignments CS 6353 Compiler Construction Project Assignments In this project, you need to implement a compiler for a language defined in this handout. The programming language you need to use is C or C++ (and the

More information

Contents. Protus Messaging Services User Guide Web Fax Merge

Contents. Protus Messaging Services User Guide Web Fax Merge Contents Protus Messaging Services User Guide Getting Started... 1 Setting up an account... 1 Requirements... 1 Logging In... 1 Sending a New... 2 Who are you sending your fax to?... 2 Sample Merge List...

More information

Compartment and Access

Compartment and Access Compartment and Access Preface Using This Guide What's New? Getting Started Entering the Workbench Set Correct Working Units and Grid Saving Documents User Tasks Creating/Modifying Wall Systems Building

More information

/chapter/1 In the beginning there was request?

/chapter/1 In the beginning there was request? /chapter/1 In the beginning there was request? response? An HTTP server is responsible for accepting an HTTP request and returning an HTTP response, with some computation in between. That much you probably

More information

Semantic Analysis. Lecture 9. February 7, 2018

Semantic Analysis. Lecture 9. February 7, 2018 Semantic Analysis Lecture 9 February 7, 2018 Midterm 1 Compiler Stages 12 / 14 COOL Programming 10 / 12 Regular Languages 26 / 30 Context-free Languages 17 / 21 Parsing 20 / 23 Extra Credit 4 / 6 Average

More information

FILE ORGANIZATION. GETTING STARTED PAGE 02 Prerequisites What You Will Learn

FILE ORGANIZATION. GETTING STARTED PAGE 02 Prerequisites What You Will Learn FILE ORGANIZATION GETTING STARTED PAGE 02 Prerequisites What You Will Learn PRINCIPLES OF FILE ORGANIZATION PAGE 03 Organization Trees Creating Categories FILES AND FOLDERS PAGE 05 Creating Folders Saving

More information

Casting -Allows a narrowing assignment by asking the Java compiler to "trust us"

Casting -Allows a narrowing assignment by asking the Java compiler to trust us Primitives Integral types: int, short, long, char, byte Floating point types: double, float Boolean types: boolean -passed by value (copied when returned or passed as actual parameters) Arithmetic Operators:

More information

A PROGRAM IS A SEQUENCE of instructions that a computer can execute to

A PROGRAM IS A SEQUENCE of instructions that a computer can execute to A PROGRAM IS A SEQUENCE of instructions that a computer can execute to perform some task. A simple enough idea, but for the computer to make any use of the instructions, they must be written in a form

More information

High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore

High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore Module No # 09 Lecture No # 40 This is lecture forty of the course on

More information

Outlook Web Access. In the next step, enter your address and password to gain access to your Outlook Web Access account.

Outlook Web Access. In the next step, enter your  address and password to gain access to your Outlook Web Access account. Outlook Web Access To access your mail, open Internet Explorer and type in the address http://www.scs.sk.ca/exchange as seen below. (Other browsers will work but there is some loss of functionality) In

More information

User Interfaces Assignment 3: Heuristic Re-Design of Craigslist (English) Completed by Group 5 November 10, 2015 Phase 1: Analysis of Usability Issues Homepage Error 1: Overall the page is overwhelming

More information

CS112 Lecture: Defining Instantiable Classes

CS112 Lecture: Defining Instantiable Classes CS112 Lecture: Defining Instantiable Classes Last revised 2/3/05 Objectives: 1. To describe the process of defining an instantiable class 2. To discuss public and private visibility modifiers. Materials:

More information

Addresses in the source program are generally symbolic. A compiler will typically bind these symbolic addresses to re-locatable addresses.

Addresses in the source program are generally symbolic. A compiler will typically bind these symbolic addresses to re-locatable addresses. 1 Memory Management Address Binding The normal procedures is to select one of the processes in the input queue and to load that process into memory. As the process executed, it accesses instructions and

More information

Lecture 3: Recursion; Structural Induction

Lecture 3: Recursion; Structural Induction 15-150 Lecture 3: Recursion; Structural Induction Lecture by Dan Licata January 24, 2012 Today, we are going to talk about one of the most important ideas in functional programming, structural recursion

More information

Compilers and computer architecture From strings to ASTs (2): context free grammars

Compilers and computer architecture From strings to ASTs (2): context free grammars 1 / 1 Compilers and computer architecture From strings to ASTs (2): context free grammars Martin Berger October 2018 Recall the function of compilers 2 / 1 3 / 1 Recall we are discussing parsing Source

More information

Let s Make a Front Panel using FrontCAD

Let s Make a Front Panel using FrontCAD Let s Make a Front Panel using FrontCAD By Jim Patchell FrontCad is meant to be a simple, easy to use CAD program for creating front panel designs and artwork. It is a free, open source program, with the

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 31 Static Members Welcome to Module 16 of Programming in C++.

More information

UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division

UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division Fall, 2005 Prof. R. Fateman CS 164 Assignment 3 and 4: Parsing for MiniJava Due: Tuesday, Oct.

More information

System Design. Design Issues. System Design. System Design. Design: HOW to implement a system. Strategic vs. Local Design Decisions.

System Design. Design Issues. System Design. System Design. Design: HOW to implement a system. Strategic vs. Local Design Decisions. Design: HOW to implement a system System Design Goals: Satisfy the requirements Satisfy the customer Reduce development costs Provide reliability Support maintainability Plan for future modifications 1

More information

Basic Concepts. Launching MultiAd Creator. To Create an Alias. file://c:\documents and Settings\Gary Horrie\Local Settings\Temp\~hh81F9.

Basic Concepts. Launching MultiAd Creator. To Create an Alias. file://c:\documents and Settings\Gary Horrie\Local Settings\Temp\~hh81F9. Page 1 of 71 This section describes several common tasks that you'll need to know in order to use Creator successfully. Examples include launching Creator and opening, saving and closing Creator documents.

More information

Graphical User Interface Canvas Frame Event structure Platform-free GUI operations Operator << Operator >> Operator = Operator ~ Operator + Operator

Graphical User Interface Canvas Frame Event structure Platform-free GUI operations Operator << Operator >> Operator = Operator ~ Operator + Operator Graphical User Interface Canvas Frame Event structure Platform-free GUI operations Operator > Operator = Operator ~ Operator + Operator - Operator [] Operator size Operator $ Operator? Operator!

More information

Relationship of class to object

Relationship of class to object Relationship of class to object Writing and programming Writing a program is similar to many other kinds of writing. The purpose of any kind of writing is to take your thoughts and let other people see

More information

CSCE-608 Database Systems. COURSE PROJECT #2 (Due December 5, 2018)

CSCE-608 Database Systems. COURSE PROJECT #2 (Due December 5, 2018) CSCE-608 Database Systems Fall 2018 Instructor: Dr. Jianer Chen Office: HRBB 315C Phone: 845-4259 Email: chen@cse.tamu.edu Office Hours: MWF 10:00am-11:00am Grader: Sambartika Guha Email: sambartika.guha@tamu.edu

More information

Design: HOW to implement a system

Design: HOW to implement a system System Design Goals: Design: HOW to implement a system Satisfy the requirements Satisfy the customer Reduce development costs Provide reliability Support maintainability Plan for future modifications 1

More information

Tips and Techniques for Designing the Perfect Layout with SAS Visual Analytics

Tips and Techniques for Designing the Perfect Layout with SAS Visual Analytics SAS2166-2018 Tips and Techniques for Designing the Perfect Layout with SAS Visual Analytics Ryan Norris and Brian Young, SAS Institute Inc., Cary, NC ABSTRACT Do you want to create better reports but find

More information

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

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

More information

Java CAPS 6/JBI and OpenESB Using JBI, Note 3

Java CAPS 6/JBI and OpenESB Using JBI, Note 3 Java CAPS 6/JBI and OpenESB Using JBI, Note 3 Basic File to File, Decode CSV to XML Project Michael Czapski, June 2008 1 Introduction This document briefly explores the Encoder aspect of Java CAPS 6/JBI

More information

System Design. Design: HOW to implement a system

System Design. Design: HOW to implement a system System Design Design: HOW to implement a system Goals: Satisfy the requirements Satisfy the customer Reduce development costs Provide reliability Support maintainability Plan for future modifications 1

More information

The first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below.

The first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below. Graphing in Excel featuring Excel 2007 1 A spreadsheet can be a powerful tool for analyzing and graphing data, but it works completely differently from the graphing calculator that you re used to. If you

More information

Make sure you have the latest Hive trunk by running svn up in your Hive directory. More detailed instructions on downloading and setting up

Make sure you have the latest Hive trunk by running svn up in your Hive directory. More detailed instructions on downloading and setting up GenericUDAFCaseStudy Writing GenericUDAFs: A Tutorial User-Defined Aggregation Functions (UDAFs) are an excellent way to integrate advanced data-processing into Hive. Hive allows two varieties of UDAFs:

More information

SILVACO. An Intuitive Front-End to Effective and Efficient Schematic Capture Design INSIDE. Introduction. Concepts of Scholar Schematic Capture

SILVACO. An Intuitive Front-End to Effective and Efficient Schematic Capture Design INSIDE. Introduction. Concepts of Scholar Schematic Capture TCAD Driven CAD A Journal for CAD/CAE Engineers Introduction In our previous publication ("Scholar: An Enhanced Multi-Platform Schematic Capture", Simulation Standard, Vol.10, Number 9, September 1999)

More information

Project Compiler. CS031 TA Help Session November 28, 2011

Project Compiler. CS031 TA Help Session November 28, 2011 Project Compiler CS031 TA Help Session November 28, 2011 Motivation Generally, it s easier to program in higher-level languages than in assembly. Our goal is to automate the conversion from a higher-level

More information

Vensim PLE Quick Reference and Tutorial

Vensim PLE Quick Reference and Tutorial Vensim PLE Quick Reference and Tutorial Main Toolbar Sketch Tools Menu Title Bar Analysis Tools Build (Sketch)Window Status Bar General Points 1. File operations and cutting/pasting work in the standard

More information

HIRING MANAGER S USER S GUIDE

HIRING MANAGER S USER S GUIDE HIRING MANAGER S USER S GUIDE Winston-Salem State University Hiring System PeopleAdmin, Inc. 1717 W. 6 th Street Austin, TX 78703 512-997-2500 TABLE OF CONTENTS INTRODUCTION... 3 GETTING STARTED... 4 POSITION

More information

M i c r o s o f t E x c e l A d v a n c e d P a r t 3-4. Microsoft Excel Advanced 3-4

M i c r o s o f t E x c e l A d v a n c e d P a r t 3-4. Microsoft Excel Advanced 3-4 Microsoft Excel 2010 Advanced 3-4 0 Absolute references There may be times when you do not want a cell reference to change when copying or filling cells. You can use an absolute reference to keep a row

More information

Cindy Fan, Rick Huang, Maggie Liu, Ethan Zhang November 6, c: Usability Testing Check-In

Cindy Fan, Rick Huang, Maggie Liu, Ethan Zhang November 6, c: Usability Testing Check-In Cindy Fan, Rick Huang, Maggie Liu, Ethan Zhang November 6, 2014 3c: Usability Testing Check-In HEURISTIC EVALUATION Our group did two heuristic evaluations. For each issue discovered during evaluation,

More information

Lecture 34 SDLC Phases and UML Diagrams

Lecture 34 SDLC Phases and UML Diagrams That Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur Lecture 34 SDLC Phases and UML Diagrams Welcome

More information

ASSIGNMENT 5 Data Structures, Files, Exceptions, and To-Do Lists

ASSIGNMENT 5 Data Structures, Files, Exceptions, and To-Do Lists ASSIGNMENT 5 Data Structures, Files, Exceptions, and To-Do Lists COMP-202B, Winter 2009, All Sections Due: Tuesday, April 14, 2009 (23:55) You MUST do this assignment individually and, unless otherwise

More information

Project #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently.

Project #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently. Project #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently. User Request: Create a simple magazine data system. Milestones:

More information

CHAPTER 4: MICROSOFT OFFICE: EXCEL 2010

CHAPTER 4: MICROSOFT OFFICE: EXCEL 2010 CHAPTER 4: MICROSOFT OFFICE: EXCEL 2010 Quick Summary A workbook an Excel document that stores data contains one or more pages called a worksheet. A worksheet or spreadsheet is stored in a workbook, and

More information

Lab: Supplying Inputs to Programs

Lab: Supplying Inputs to Programs Steven Zeil May 25, 2013 Contents 1 Running the Program 2 2 Supplying Standard Input 4 3 Command Line Parameters 4 1 In this lab, we will look at some of the different ways that basic I/O information can

More information

Programming Languages Third Edition. Chapter 7 Basic Semantics

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

More information

CPS122 Lecture: Detailed Design and Implementation

CPS122 Lecture: Detailed Design and Implementation CPS122 Lecture: Detailed Design and Implementation Objectives: Last revised March 3, 2017 1. To introduce the use of a complete UML class box to document the name, attributes, and methods of a class 2.

More information

GuruFocus User Manual: The FilingWiz

GuruFocus User Manual: The FilingWiz GuruFocus User Manual: The FilingWiz Contents 0. Introduction to FilingWiz a. Brief overview b. Access 1. The Search Query Toolbox 2. The Search Results Column 3. The Highlights Column a. Highlights tab

More information

AGENT-BASED MODELING BOOTCAMP FOR HEALTH RESEARCHERS AUGUST 2012 A SIMPLE NETWORK-BASED INFECTION SPREAD AGENT-BASED MODEL

AGENT-BASED MODELING BOOTCAMP FOR HEALTH RESEARCHERS AUGUST 2012 A SIMPLE NETWORK-BASED INFECTION SPREAD AGENT-BASED MODEL Rating: Basic Prerequisites: Building a Minimalist Network-Based Model Framework Estimated Time Required: 1 hour This exercise rehearses basic steps that can be used to create a model of infection spread..

More information