Example-Centric Programming: Integrating Web Search into the Development Environment
|
|
|
- Maud Bennett
- 10 years ago
- Views:
Transcription
1 Example-Centric Programming: Integrating Web Search into the Development Environment Joel Brandt 1,2, Mira Dontcheva 2, Marcos Weskamp 2, Scott R. Klemmer 1 Stanford University HCI Group Advanced Technology Labs Computer Science Department Adobe Systems Stanford, CA San Francisco, CA {jbrandt, srk}@cs.stanford.edu {mirad, mweskamp}@adobe.com ABSTRACT The ready availability of online source code examples has changed the cost structure of programming by example modification. However, current search tools are wholly separate from editing tools. What benefits might be realized by integrating them? This paper describes the design, implementation, and evaluation of Blueprint, a tool that integrates Web search into the Adobe Flex Builder development environment. Blueprint automatically augments queries with code context, presents an example-centric view of search results, and retains a link between copied code and its source. This paper introduces a technique for retrieving relevant example code, descriptions, and running examples for a user s query. A between-subjects study found that Blueprint enables participants to search for and select example code significantly faster than with a standard Web browser. ACM Classification: H5.2 [Information interfaces and presentation]: User Interfaces prototyping. D.2.2 [Software engineering]: Design Tools and Techniques user interfaces. General terms: Design, Human Factors Keywords: Example-centric development, opportunistic programming, Web search, prototyping INTRODUCTION Programmers routinely face the build or borrow question [1]: should they implement a piece of functionality from scratch, or locate and adapt relevant existing code? Web search is fundamentally changing the cost structure of this question [2]. It is now possible to quickly locate example code that implements nearly any piece of routine functionality [3]. This enables programmers to opportunistically build applications by searching for, modifying, and combining short blocks of example code taken from the Web [4-6]. In 1993, Nardi suggested that programming by example modification holds significant latent value. An open question at the time was how users will find appropriate example code; for any practical application of example modification, many libraries of example code will have to be available and the information access problems will be significant. [7]. Sixteen years later, finding appropriate code has become easier: there are many Web sites dedicated to example sharing (e.g. the Flex Examples Blog [8]), online opensource code repositories (e.g. Google Code [9]), and search interfaces for programmers [10, 11]. However, these search tools are still wholly separate from editing tools. Current Figure 1. The Blueprint plug-in for the Adobe Flex Builder development environment helps programmers engage in example-centric development. A hotkey places a search box (A) at the programmerʼs cursor position. Search results are example-centric; each result contains a brief textual description (B), the example code (C), and often a running example (D). Blueprint also provides additional search suggestions (E). development environments provide little support for example-centric development. Instead, they tacitly assume that programming begins tabula rasa and that code is either written by the programmer or imported as a library module. Several difficulties arise from separate tools for editing and search. First, the important link between borrowed code and its source is lost. The programmer may not realize the code was borrowed from an online source; this can be valuable when debugging or modifying code. If they do know it was borrowed, but not the URL, they may have difficulty re-finding it if they would like to verify attributes or view additional code and commentary. Second, if the source example is later updated (e.g. to fix a bug), the programmer will never know. Finally, to obtain relevant search results, programmers must manually specify contextual constraints in their query, such as languages and frameworks used. We hypothesize that there is significant value in integrating Web search with a code editor. More specifically, this paper proposes that automatically augmenting queries with code context and presenting an example-centric view of search results increases the speed, quality, and ease of programming by example modification. We introduce Blue- 1
2 print, an extension to the Adobe Flex Builder development environment that manifests these ideas (see Figure 1). This paper makes two contributions. First, it introduces a user interface that integrates searching for example code into a development environment. This search interface presents blocks of example code, augmented with running examples and written descriptions when available (see Figure 1). In a between-subjects comparison with 20 participants, we found that Blueprint enables participants to search for and select example code significantly faster than with a standard Web browser. Second, this paper introduces a technique for retrieving relevant example code from the Web for a user s query. To maximize speed, breadth, and ranking quality, the Blueprint server leverages a general-purpose search engine. Example code, descriptions, and running examples are then automatically extracted using a series of heuristic classifiers. By caching the results of this extraction, we are able to respond to user s queries at interactive rates. Brandt and colleagues found that programmers used the Web with a range of intentions [3]. On one end of the spectrum, programmers used the web for just-in-time learning of skills, such as a new language or programming paradigm. On the other end of the intention spectrum, programmers used the Web for highly directed reminders. In these cases, programmers knew exactly what code needed to be written but chose to search for and copy examples to avoid typing. In between these two extremes, Brandt et al. observed programmers using the web to clarify existing knowledge. For example, Web search served as a translator when programmers didn t know the name of a function. Other times, programmers knew that there were multiple approaches to a task, and used Web search to quickly enumerate possibilities. Blueprint is primarily designed to support reminder and clarification tasks. In these tasks, the source code is both the most useful representation when evaluating possible results and the information that the user desires. The remainder of this paper proceeds as follows. First, to motivate Blueprint s interface choices, we offer background information on how programmers use the Web to inform our design. We then present a scenario enabled by Blueprint, and describe its implementation and evaluation. Next, we offer a discussion of the design space of tools to support programmer Web use, and position Blueprint within this space to better understand its strengths and limitations. We close with a survey of related work and thoughts on future research directions. SCENARIO: DEVELOPING WITH BLUEPRINT Jenny is a web programmer at a power utility that is about to launch a campaign encouraging individuals to lower their power consumption. She is prototyping a web application for customers to compare their daily power consumption to average levels. Her functional prototype should: load user data from a server into the client application; display feedback while the data is being retrieved; and visualize the data. First, Jenny s program needs to retrieve customer-specific and average power-usage data. The company already has a Web service that returns XML-formatted power usage data for a given customer. Jenny has written code to fetch data from the Web before, and is capable of constructing the necessary code. However, she thinks it will be faster to find and copy an example than to rewrite the code from scratch. She Figure 2. Example-centric programming with Blueprint. To initiate blueprint, the user press a hotkey to initiate a search; a search box appears at the cursor location (1). Searches are performed interactively as the user types; example code and running examples (when present) are shown immediately (2). The user browses examples with the keyboard or mouse, and presses Enter to paste an example into his project (3). Blueprint automatically adds a comment containing metadata that links the example to its source (4). 2
3 presses a hotkey to invoke the Blueprint search dialog; a search box appears next to her cursor (see Figure 2, step 1). This interface extends auto-completion techniques [12] to presents entire blocks of example code as results instead of variable and method names. She types URLLoader, the name of the main class associated with this task. Blueprint knows the language and framework version she is using, and returns appropriate examples (step 2) These results are presented below the search box. She flips through the first few examples (step 3) and sees one that creates an XML object out of the data that is returned. She presses Enter, and the code is pasted in her project (step 4). Along with the code, Blueprint adds a special machine- and human-readable comment that records the URL of the source and the date of copy. Every time Jenny opens this source file in the future, Blueprint will check this URL to see if the original example has changed (e.g., if a bug is fixed), and will notify her when it does. She runs her code in Flex s debugger to confirm the XML has loaded and to inspect its format. Next, she wants to change the user s mouse cursor to a busy cursor while the data is being loaded. She does not know the exact name of the relevant classes or methods involved, so autocomplete is no help. She places her cursor inside the function that initiates the data request and invokes Blueprint. This time, she searches for busy cursor. She looks over the code in the first example returned, and sees the line CursorManager.setBusyCursor(). She selects this line and presses Enter to paste it into her project. Now, knowing that CursorManager is the relevant class, she s able to use the standard autocomplete tool to write the line of code necessary to restore the cursor at the end of the data transfer. Finally, Jenny wants to explore different charting components to display the data. She invokes Blueprint a third time and searches for charting. Jenny docks the Blueprint result window as a panel in her development environment so she can browse the results in a large, persistent view. When source pages provide a running example, Blueprint presents this example next to the source code. After browsing and refining her search, she settles on a line chart. She copies the example code from the Blueprint panel into her project and modifies it to bind the chart to the XML data. Her prototype is now complete. IMPLEMENTATION Blueprint s implementation comprises two parts: the clientside plug-in, which provides the user interface for searching and browsing results, and the Blueprint server, which executes the searches for example code. Client-Side Plug-In The Blueprint client is a plug-in for Adobe Flex Builder [13]. Flex Builder, in turn, is a plug-in for the Eclipse Development Environment [14]. The Blueprint client provides three main pieces of functionality. First, it provides a user interface for initiating searches and displaying results. Second, it augments users queries with contextual information (e.g. programming language and framework version) before forwarding them to the Blueprint server. Third, it notifies the user when the Web origin of examples they adapted has updated (e.g., when a bug is fixed). User Interface Much of Blueprint s interface is implemented using HTML that is rendered by SWT Browser widgets. Communication with the Blueprint server occurs over HTTP using the JSON data format [15]. Creating the interface with HTML facilitated rapid iteration; JSON s broad cross-language support facilitates implementing different components in different languages. To facilitate learning, Blueprint employs the same syntax highlighting and navigational mechanisms as the development environment and existing autocomplete tools. Users can navigate through examples using the Tab key and copy/paste the selected example by pressing enter. Augmenting Queries The Blueprint client augments user queries with contextual information to increase the results relevancy. The current prototype augments the query with the programming language name and version (here, Flex 3 ). In future work, it would be interesting to explore the benefits of adding additional contextual information (e.g. the types of local variables currently in scope.) Holmes and colleagues have explored this idea in the context of retrieving example code from a fixed repository [16]; it is not immediately clear how this would generalize to Web search. When a user pastes example code into their project, Blueprint inserts a comment at its beginning much like a Javadoc comment [17]. This comment tags the example code with the URL it was taken from, the date and time it was inserted, and a unique numerical identifier. This metadata is both human and machine-readable, so users can for example return to the URL. Also, embedding the metadata in the source file simplifies file management. Blueprint searches for these example comments each time a file is opened. For each comment, it queries the Blueprint server to find out if the original example has been modified since it was copied. Blueprint Server The Blueprint server responds to queries for example code. To maximize speed, breadth, and ranking quality, the server leverages a general-purpose search engine. Blueprint uses the Adobe Community Help search APIs, a Google search appliance. This appliance indexes Flex-specific content from across the Web. When Blueprint receives a query, it hands the query off to this search engine, which returns a set of URLs. The challenge of this approach is that standard search engines return URLs of pages, yet Blueprint s goal is to return examples. For each URL, Blueprint retrieves the corresponding page, parses it, and extracts source-code examples. In order for the Blueprint server to be responsive, processing and transforming the results from the underlying search engine cannot incur significant latency. To improve response time, the server caches page contents and parsing results. 3
4 The final step of a query is for the server to return a set of examples to the requesting client. Each example comprises unformatted and syntax-highlighted versions of the code, a description of the code, the URL that the code comes from, and, when possible, the URL of a running example of the code. Blueprint produces the syntax-highlighted version using Pygments [18], which outputs model-based markup. The client transforms this markup into styled code using CSS. Extracting example code, descriptions, and running examples To facilitate locating and extracting source code from Web pages, Blueprint first segments the page. Then, Blueprint classifies each segment as being source code or not. This offline processing takes the current Blueprint prototype about 10 seconds per page. Since HTML documents often contain errors (e.g., missing tags or extraneous quotes), Blueprint first transforms them into proper XHTML documents so that we can leverage their structure in the segmentation process. We preprocess the HTML file with the BeautifulSoup library [19], which generates valid XHTML output for any input. Next, Blueprint divides the resulting hierarchical XHTML document into independent segments by examining blocklevel elements. Blueprint uses 31 tags to define blocks; the most common are: P, H1, DIV, and PRE. We also extract SCRIPT and OBJECT blocks as block-level elements, because running examples are usually contained within these tags. To find block-level elements, Blueprint traverses the document depth-first. When we reach a leaf element, we backtrack to the nearest containing block-level element and create a segment. If the root of the tree is reached before finding a block-level element, the element immediately before the root is extracted as a segment. This algorithm keeps segments ordered exactly as they were in the original document. Third, Blueprint strips each segment of the majority of its formatting so that we can reliably determine whether or not it contains example code. Although formatting, such as SPAN elements for syntax highlighting, helps with the segmentation process, it complicates source-code recognition. For readability, Blueprint preserves the original line breaks. To strip formatting while retaining line breaks, we render each segment to plain text using w3m, a text-based web browser [20]. Blueprint stores the HTML and plain text versions of all segments in a database. On average, a Web page in our dataset contains 161 segments. However, 69% of these are less than 50 characters long (these are primarily created by navigational elements). This possible oversegmenting is not a problem as long as blocks of example code are being correctly parsed into single segments. We now have clean, separate segments that are ready for classification. There are two main approaches for classifying a segment as code or not. The first is to parse each segment with the languages of interest. Segments that parse correctly are considered code. For Blueprint, this would be ActionScript and MXML, the two languages used by Adobe Flex. In practice, this approach yields many false negatives. For example, code with line numbers or a single typo will cause parsing to fail. The alternate approach is heuristic-based classifiers that look for a high occurrence of features unique to code, such as curly braces, frequent use of language keywords, and lines that end with semi-colons [11]. This approach has many fewer false negatives, but includes more false positives, such as text that discusses code. Blueprint uses a heuristic-based approach because, in this domain, false positives (spurious results) are strongly preferable to false negatives (missing results). The next step is to extract descriptions and, where possible, running examples for each code segment. Informal inspection of pages containing example code revealed two patterns: the text immediately preceding an example almost always described the example, and running examples almost always occurred after the example code. To build descriptions, Blueprint iteratively joins the segments immediately preceding the code until any of three conditions is met: 1.) we encounter another code segment, 2.) we encounter a segment indicative of a break in content (those generated by DIV, HR, or heading tags), or 3.) we reach a length threshold (currently 250 words). To find running examples, Blueprint analyzes the k segments following a code example. Because we are concerned with Flex, all examples occur as Flash SWF files. We search for references to SWF files in OBJECT and SCRIPT tags. In practice, we have found k=3 works best; larger values resulted in erroneous content, such as Flashbased advertisements. Caching and pre-populating the example database Blueprint caches the extraction results so that examples can be returned immediately. Without caching, search response time would be bounded by the amount of time required to retrieve the resulting Web pages. URLs returned by the underlying search engine that are not in our cache are ignored for that query. They are then added to the cache by a background process so they can be used in future queries. A future version of Blueprint could return these to users asynchronously. To make Blueprint usable initially, we pre-populated the cache with approximately 50,000 URLs obtained from search engine query logs. To keep the cache current, Blueprint crawls the URLs in the cache as a background process. Since pages containing examples are relatively static, the Blueprint prototype re-crawls them weekly. Keeping track of changes to examples Each time a page is crawled, Blueprint checks for updates to the examples (e.g., bug fixes). It compares old and new examples using the diff tool. Because pages typically contain fewer than ten examples, Blueprint compares all pairs of examples on the new page and examples on the old page. If the examples match exactly, they are deemed the same. If a new example has more than two-thirds of its lines in common with an old example, it is recorded as changed. Otherwise, the new example is deemed new. The database stores each example with a timestamp, and keeps all previous ver- 4
5 sions. Storing examples with timestamps facilitates Blueprint s ability to track changes and to return all versions of an example so that a user can see what has changed. EVALUATION We conducted a laboratory study to better understand how Blueprint affects the example-centric development process. This study evaluated three hypotheses: H1: Programmers using Blueprint will complete directed tasks more quickly than those who do not because they will find example code faster and bring it into their project sooner. H2: Code produced by programmers using Blueprint will have the same quality as code written by example modification using traditional means. H3: Programmers who use Blueprint produce better designs on an exploratory design task than those using a web browser for code search. participants best best Directed Task Completion Time Directed Task Code Quality Exploratory Task Chart Quality blueprint control time (seconds) DNF DNF DNF worst worst Figure 3. Results from the study. The top graph shows each participantʼs completion time on the directed task. Time of first paste is shown as a tick mark; participants who used Blueprint are shown in black. The two bottom graphs show ranking of participantʼs code quality (directed task) and chart quality (exploratory task), respectively. Again, participants who used Blueprint are shown in black. Method Twenty professional programmers (16 men, 4 women) participated in this study. We recruited them through an internal company mailing list and compensated them with a $15 gift card in exchange. Participants had an average of 11.3 years of professional experience. Fourteen reported at least one year of programming experience with Flex; twelve reported spending at least 25 hours a week programming in Flex. Participants were given an off-the-shelf installation of Flex Builder, pre-loaded with three project files. Participants in the control condition were provided with the Firefox Web browser; they were asked to use the Adobe Community Help Search engine to look for example code. Participants in the treatment condition were provided with Blueprint to search for code samples; they were not allowed to use a web browser. Participants were asked to complete a tutorial, a directed task, and an exploratory task. Participants were told that they would be timed and that they should approach all tasks as though they are prototyping and not writing productionlevel code. Participants began each task with a project file that included a running application, and they were asked to add additional functionality. For the tutorial task, the sample application contained an HTML browsing component and three buttons that navigate the browser to three different Web sites. Participants received a written tutorial that guided them through adding fade effects to the buttons and adding a busy cursor. In the control condition, the participants were asked to use the web browser to find sample code for both modifications. The tutorial described which search result would be best to follow and which lines of code to add to the sample application. In the treatment condition, the participants were asked to use Blueprint to find code samples. For the directed programming task, the participants were instructed to use the URLLoader class to retrieve text from a URL and place it in a text box. They were told that they should complete the task as quickly as possible. In addition, the participants were told that the person to complete the task fastest would receive an additional gift card as a prize. Participants were given 10 minutes to complete this task. For the exploratory programming task, participants were instructed to use Flex Charting Components to visualize an array of provided data. The participants were instructed to make the possible best visualization. They were told that the results would be judged by an external designer and the best visualization would win an extra gift card. Participants were given 15 minutes to complete this task. To conclude the study, we asked the participants a few questions about their experience with the browsing and searching interface. Results Directed Task Nine out of ten Blueprint participants and eight out of ten control participants completed the directed task. Because 5
6 not all participants completed the task and completion time may not be normally distributed, we report all significance tests using rank-based non-parametric statistical methods (Wilcoxon-Mann-Whitney test for rank sum difference and Spearman rank correlation). We ranked the participants by the time until they pasted the first example. See Figure 3. Participants using Blueprint pasted code for the first time after an average of 57 seconds, versus 121 seconds for the control group. The rank-order difference in time to first paste was significant (p < 0.01). Among finishers, those using Blueprint finished after an average of 346 seconds, compared to 479 seconds for the control. The rank-order difference for all participants in task completion time was not significant (p=0.14). Participants first paste time correlates strongly with task completion time (r s =0.52, p=0.01). This suggests that lowering the time required to search for, selecting and copying examples will speed development. A professional software engineer external to the project rank-ordered the participants code. He judged quality by whether the code met the specifications, whether it included error handling, whether it contained extraneous statements, and overall style. Participants using Blueprint produced significantly higher-rated code (p=0.02). We hypothesize this is because the example-centric result view in Blueprint makes it more likely that users will choose a good example to start from. When searching for URLLoader using the Adobe Community Help search engine, the first result contains the best code. However, this result s snippet had poor scent. For this reason, we speculate that some control participants overlooked it in favor of a result with better scent. Exploratory Task A professional designer rank-ordered the participants charts. To judge chart quality, he considered the appropriateness of chart type, whether or not all data was visualized, and aesthetics of the chart. The sum of ranks was smaller for participants using Blueprint (94 vs. 116), but this result was not significant (p=0.21). While a larger study may have found significance with the current implementation of Blueprint, we believe improvements to Blueprint s interface (described below) would make Blueprint much more useful in exploratory tasks. Suggestions for Improvement When asked How likely would you be to install and use Blueprint in its current form? participants responses averaged 5.1 on a 7-point Likert scale (1 = not at all likely, 7 = extremely likely ). Participants also provided several suggestions for improvement. The most common requests were for greater control over result ranking. Two users suggested that they should be able to rate (and thus affect the ranking of) examples. Three users expressed interest in being able to filter results on certain properties such as whether result has a running example, the type of page that the result was taken from (blog, tutorial, API documentation, etc.), and the presence of comments in the example. Three participants requested greater integration between Blueprint and other sources of data. For example, one participant suggested that all class names appearing in examples be linked to their API page. Finally, three participants requested maintaining a search history; one also suggested a browseable and searchable history of examples used. Discussion In addition to the participants explicit suggestions, we identified a number of shortcomings as we observed participants working. It is currently difficult to compare multiple examples using Blueprint. Typically, only one example fits on the screen at a time. To show more examples simultaneously, one could use code-collapsing techniques to reduce each example s length. Additionally, Blueprint could show all running examples from a result set in parallel. Finally, visual differencing tools might help users compare two examples. We assumed that users would only invoke Blueprint once per task. Thus, each time Blueprint is invoked, the search box and result area would be empty. Instead, we observed that users invoked Blueprint multiple times for a single task (e.g. when a task required several blocks of code to be copied to disparate locations). Results should be persistent, but it should be easier to clear the search box: when reinvoking Blueprint, the terms should be pre-selected so that typing replaces them. Finally, we noticed that some participants had difficulty locating specific lines they were looking for within examples. Two interface changes could improve this process: First, search terms should be highlighted within the results. Second, users should be able to search within the result set. DESIGN SPACE This section discusses the important decisions made in Blueprint s design, and positions them in a space of alternative designs (see Figure 4). Positioning Blueprint within this space helps structure a discussion of Blueprint s limitations and suggests fruitful areas for future work. Task: Blueprint is expressly designed to facilitate implementing new functionality. Programming involves many tasks: planning and design, implementation, and testing and debugging. For many other tasks e.g. deciphering a cryptic error message during debugging it might make more sense to initiate searches from the program s output. In such situations, a code-centric view of results might hide important information. Knowledge: Blueprint presents a code-centric view of results, so programmers must be knowledgeable about the tools (i.e. languages and frameworks used in the example) to interpret the results. For any given task, programmers have a certain amount of knowledge about both the tools 6
7 Task Knowledge Scope Approach Separability Planning & design Novice with task & tools Implementation Testing & debugging Knowledable about tools, Knowledgable about novice with task task & tools minutes hours days directed mostly independent exploratory lots of interaction Figure 4. Design space of tools to aid programmersʼ Web use. Blueprint is designed to address the portion of the space shown with a shaded background. they are using (e.g. languages and libraries), and the task itself (e.g. implementing a piece of functionality). Scope: We designed Blueprint to make small tasks faster. Blueprint s primary interaction behaves similarly to autocompletion [12] to make inserting small blocks of code more efficient. The transient nature of this interface makes it impractical for larger tasks. Blueprint does support docking of results as a persistent panel. However, this panel lacks the rich navigational features present in modern Web browsers, (e.g. tabs, history, bookmarking, and finding text within a page). This may be useful in completing larger tasks. Approach: Currently, Blueprint works best for directed tasks. There are two reasons for this: First, Blueprint requires users to search, rather than browse. Users must have a concrete notion of what they want to do in order to construct a query. Second, Blueprint currently contains little support for comparing results, a crucial part of exploratory tasks. At times, programmers know exactly what they want to do. At others, they are interested in exploring a wide range of possibilities. Providing better support for comparison and evaluation is an important direction for future work. Separability: Because Blueprint inserts example code directly into the user s project, it provides the most benefit when example code requires little modification. As such, it is most useful for tasks that are largely independent from other pieces of the project. When a piece of code is deeply intertwined with the larger context it is embedded in, it may be easier to create the new instance while referring to the example rather than copying it. The approach Blueprint introduces leads to broader questions about example-centric development. Is enough example code available online? It seems to depend on both language and task. The most popular web programming languages have rich online resources. This is likely due to the background of the community using these languages: it is natural for them to put code on the web. Languages that provide a comprehensive standard library (e.g., Python and Java) seem to have more code online than those that do not (e.g., C). This is perhaps because it is easier to write small blocks of code that implement non-trivial functionality without requiring external libraries. The high cost of installing and linking external libraries may often outweigh the benefits associated with co-opting examples that use them. Finally, common functionality is more likely to be available online than rare functionality. Is the context of an example important? Blueprint extracts example code from Web pages and presents it to the user outside of its original context. There are trade-offs associated with this decision. On the one hand, presenting all results using a consistent interface may speed up understanding [21]. On the other hand, programmers sometimes use a page s high-level visual features (e.g. whether a page contains advertisements) to make initial judgments about the quality of example code [3]. Programmers most commonly use surface features about the code s context when they have difficulty evaluating the code quality itself [3], e.g. when selecting a tutorial to learn about a new language or programming paradigm. This is consistent with general novice/expert distinctions [22]. Blueprint is designed primarily for situations where the programmer has enough knowledge about the tools he is using to evaluate the code itself. RELATED WORK This research is inspired by prior work on tailoring Web search interfaces, and providing support for examplecentric development. Tailoring Web Search for Specific Tasks Prior work has explored how programmers search the Web [3, 11] and tailoring Web search to their needs [9-11, 23, 24]. When building Assieme, a search engine for Java programmers, Hoffmann and colleagues recognized the important role that sample code plays in helping a developer select between APIs [11]. Assieme s search result view allows the user to view example code for any API by hovering his mouse over individual results. Blueprint carries this idea further by making example code the primary feature of the result set. Blueprint also builds on Assieme s method of extracting example code from Web pages by using heuristic-based classifiers. Blueprint s approach of leveraging an existing commercial search engine to produce a candidate result set has a number of advantages over building a complete search engine from scratch (e.g. [3, 11]). First, it is substantially more resource-efficient to implement. Keeping a document collection up to date is expensive, and this is handled automatically in our approach. Second, it is an understatement to say that generating high-quality search results from natural-language queries is a hard problem. It may be unreasonable to assume that, even with a restricted search domain, we can do a better job than commercial search engines. 7
8 Finally, using a general-purpose search engine to provide data has the direct consequence that most examples are taken from tutorials, blogs, and API pages. We believe this my be beneficial because these examples are more likely to be written in a way that is easy to understand than examples extracted from large source code repositories. More broadly, there has been recent interest in providing alternative representations for Web search results [21, 25-29]. Dontcheva and colleagues work on search templates introduced the idea of creating customized views of Web pages called cards [21]. By defining a set of relations between Web page elements and elements on the card, users can then view a diverse collection of Web search results using a consistent interface. Blueprint works similarly: common elements (code examples) from diverse Web pages are automatically extracted and presented in a consistent interface for faster browsing and selection. Example-Centric Development Prior work has created tools to assist with example-centric development [30]. This work has addressed the availability of example code problem by mining code repositories [31] or synthesizing example code from API specifications [32]. Blueprint is unique in that it uses regular Web pages (e.g. forums, blogs, and tutorials) as sources for example code. Using tutorials and blogs as sources for example code has two major benefits: First, it may provide better examples. Code written for a tutorial is likely to contain better comments and be more general purpose than code extracted from an open source repository. Second, because these pages also contain text, programmers can use natural language to find the code they are looking for. In the majority of prior work, the programmer must already have some language- or API-specific handle to the code he wants to retrieve. An exception is the d.mix system; it enables users to sample a Web page s UI elements to yield the API calls necessary to create them. Future work could explore extending Blueprint so that searches for example code could be initiated by direct manipulation of another program s interface or output. Little and Miller s research introduced techniques for programmers to write keyword code that is transformed into syntactically correct statements through a search process [33]. Future work could combine ideas from Blueprint and keyword programming. CONCLUSION AND FUTURE WORK We have presented a user interface for accessing online example code from within the development environment. This interface displays search results in an example-centric manner to support programming by example modification. This paper described the implementation of Blueprint, a lightweight method for using a general-purpose search engine to create code-specific search results that include written descriptions and running examples. Empirical results suggest that Blueprint s approach of integrating web search into the development environment helps programmers acquire and adapt online resources more efficiently. An important avenue for future work is to improve the modification of example code. Copied code can introduce bugs when programmers assume that sample code works and forget to adapt portions of the example. Blueprint users would benefit from rich refactoring support for pasted code. This would help users change variable names consistently and reduce the number of errors. It might be valuable to rethink the character-at-a-time editing paradigm entirely. Would it be more efficient to navigate pasted code a token at a time? Perhaps arrow keys should move the user s cursor between tokens, and typing over top of an existing token should automatically replace all occurrences of that token within the pasted region. While example-centric development is common, there is little aggregated knowledge about how users adapt examples. If Blueprint could show users how code has been changed in the past, perhaps they ll make fewer errors. For example, if all ten previous users changed a literal, it is highly likely that the eleventh user should change this literal as well. The wisdom of the crowds may enable significant advances in online programming tools. REFERENCES 1. Brooks, F.P., The Mythical Man-Month: Essays on Software Engineering. 1995: Addison-Wesley. 2. Pirolli, P.L.T., Information Foraging Theory. 2007, Oxford, England: Oxford University Press. 3. Brandt, J., et al. Two Studies of Opportunistic Programming: Interleaving Web Foraging, Learning, and Writing Code. In Proceedings of CHI: ACM Conference on Human Factors in Computing Systems, Boston, Massachusetts, Brandt, J., et al. Opportunistic Programming: How Rapid Ideation and Prototyping Occur in Practice. In Proceedings of WEUSE: International Workshop on End-User Software Engineering, p. 1-5, Leipzig, Germany, Hartmann, B., S. Doorley, and S.R. Klemmer. Hacking, Mashing, Gluing: Understanding Opportunistic Design Clarke, S. What is an End-User Software Engineer? In End-User Software Engineering Dagstuhl Seminar, Dagstuhl, Germany, Nardi, B.A., A Small Matter of Programming: Perspectives on End User Computing. 1993: The MIT Press. 8. dehaan, P. Flex Examples Google Code Search Stylos, J. and B.A. Myers. Mica: A Web-Search Tool for Finding API Components and Examples. In Proceedings of VL/HCC 2006: IEEE Symposium on Visual Languages and Human-Centric Computing, p ,
9 11. Hoffmann, R., J. Fogarty, and D.S. Weld. Assieme: Finding and Leveraging Implicit References in a Web Search Interface for Programmers. In Proceedings of UIST: ACM Symposium on User Interface Software and Technology, p , Newport, Rhode Island, Microsoft IntelliSense Adobe Flex Eclipse JSON Data-Interchange Format Holmes, R. and G.C. Murphy. Using Structural Context to Recommend Source Code Examples. In Proceedings of ICSE: International Conference on Software Engineering, p , Javadoc Pygments Richardson, L. Beautiful Soup w3m Dontcheva, M., et al. Relations, Cards, and Search Templates: User-Guided Web Data Integration and Layout. In Proceedings of UIST: ACM Symposium on User Interface Software and Technology, p , Newport, Rhode Island, Chi, M.T.H., P.J. Feltovich, and R. Glaser, Categorization and Representation of Physics Problems by Experts and Novices. Cognitive Science, (2): p Bajracharya, S., et al. Sourcerer: A Search Engine for Open Source Code Supporting Structure-Based Search. In Companion to OOPSLA: ACM SIGPLAN Symposium on Object-Oriented Programming Systems, Languages, and Applications, p , Portland, Oregon, USA, Krugle Woodruff, A., et al. Using Thumbnails to Search the Web. In Proceeding of CHI: ACM Conference on Human Factors in Computing Systems, p , Seattle, Washington, Dontcheva, M., et al. Summarizing Personal Web Browsing Sessions. In Proceedings of UIST: ACM Symposium on User Interface Software and Technology, p , Montreux, Switzerland, Medynskiy, Y., M. Dontcheva, and S.M. Drucker. Exploring Websites through Contextual Facets. In Proceeding of CHI: ACM Conference on Human Factors in Computing Systems, Boston, Massachusetts, Teevan, J., et al. Visual Snippets: Summarizing Web Pages for Search and Revisitation. In Proceeding of CHI: ACM Conference on Human Factors in Computing Systems, Boston, Massachusetts, Adar, E., et al. Zoetrope: interacting with the ephemeral web. In Proceedings of UIST: ACM Symposium on User Interface Software and Technology, p , Monterey, California, Hartmann, B., et al. Programming by a Sample: Rapidly Creating Web Applications with d.mix. In Proceedings of UIST: ACM Symposium on User Interface Software and Technology, p , Newport, Rhode Island, Sahavechaphan, N. and K. Claypool. XSnippet: Mining for Sample Code. In Proceedings of OOPSLA: ACM SIGPLAN Symposium on Object-Oriented Programming Systems, Languages, and Applications, p , Mandelin, D., et al. Jungloid Mining: Helping to Navigate the API Jungle. In Proceedings of PLDI: ACM SIGPLAN Conference on Programming Language Design and Implementation, p , Chicago, IL, USA, Little, G. and R.C. Miller. Translating Keyword Commands into Executable Code. In Proceedings of UIST: ACM Symposium on User Interface Software and Technology, p , Montreux, Switzerland,
Crowdsourcing suggestions to programming problems for dynamic web development languages
Crowdsourcing suggestions to programming problems for dynamic web development languages Dhawal Mujumdar School of Information University of California, Berkeley 102 South Hall Berkeley, CA 94720 [email protected]
How Programmers Use Internet Resources to Aid Programming
How Programmers Use Internet Resources to Aid Programming Jeffrey Stylos Brad A. Myers Computer Science Department and Human-Computer Interaction Institute Carnegie Mellon University 5000 Forbes Ave Pittsburgh,
So today we shall continue our discussion on the search engines and web crawlers. (Refer Slide Time: 01:02)
Internet Technology Prof. Indranil Sengupta Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No #39 Search Engines and Web Crawler :: Part 2 So today we
WHAT'S NEW IN SHAREPOINT 2013 WEB CONTENT MANAGEMENT
CHAPTER 1 WHAT'S NEW IN SHAREPOINT 2013 WEB CONTENT MANAGEMENT SharePoint 2013 introduces new and improved features for web content management that simplify how we design Internet sites and enhance the
Front-End Performance Testing and Optimization
Front-End Performance Testing and Optimization Abstract Today, web user turnaround starts from more than 3 seconds of response time. This demands performance optimization on all application levels. Client
Pattern Insight Clone Detection
Pattern Insight Clone Detection TM The fastest, most effective way to discover all similar code segments What is Clone Detection? Pattern Insight Clone Detection is a powerful pattern discovery technology
AUTOMATED CONFERENCE CD-ROM BUILDER AN OPEN SOURCE APPROACH Stefan Karastanev
International Journal "Information Technologies & Knowledge" Vol.5 / 2011 319 AUTOMATED CONFERENCE CD-ROM BUILDER AN OPEN SOURCE APPROACH Stefan Karastanev Abstract: This paper presents a new approach
Administrator s Guide
SEO Toolkit 1.3.0 for Sitecore CMS 6.5 Administrator s Guide Rev: 2011-06-07 SEO Toolkit 1.3.0 for Sitecore CMS 6.5 Administrator s Guide How to use the Search Engine Optimization Toolkit to optimize your
Structured Content: the Key to Agile. Web Experience Management. Introduction
Structured Content: the Key to Agile CONTENTS Introduction....................... 1 Structured Content Defined...2 Structured Content is Intelligent...2 Structured Content and Customer Experience...3 Structured
A Monitored Student Testing Application Using Cloud Computing
A Monitored Student Testing Application Using Cloud Computing R. Mullapudi and G. Hsieh Department of Computer Science, Norfolk State University, Norfolk, Virginia, USA [email protected], [email protected]
Advantage of Jquery: T his file is downloaded from
What is JQuery JQuery is lightweight, client side JavaScript library file that supports all browsers. JQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling,
Performance Testing for Ajax Applications
Radview Software How to Performance Testing for Ajax Applications Rich internet applications are growing rapidly and AJAX technologies serve as the building blocks for such applications. These new technologies
Email UAE Bulk Email System. User Guide
Email UAE Bulk Email System User Guide 1 Table of content Features -----------------------------------------------------------------------------------------------------03 Login ---------------------------------------------------------------------------------------------------------08
Why HTML5 Tests the Limits of Automated Testing Solutions
Why HTML5 Tests the Limits of Automated Testing Solutions Why HTML5 Tests the Limits of Automated Testing Solutions Contents Chapter 1 Chapter 2 Chapter 3 Chapter 4 As Testing Complexity Increases, So
OpenText Information Hub (ihub) 3.1 and 3.1.1
OpenText Information Hub (ihub) 3.1 and 3.1.1 OpenText Information Hub (ihub) 3.1.1 meets the growing demand for analytics-powered applications that deliver data and empower employees and customers to
Qlik REST Connector Installation and User Guide
Qlik REST Connector Installation and User Guide Qlik REST Connector Version 1.0 Newton, Massachusetts, November 2015 Authored by QlikTech International AB Copyright QlikTech International AB 2015, All
YouTrack MPS case study
YouTrack MPS case study A case study of JetBrains YouTrack use of MPS Valeria Adrianova, Maxim Mazin, Václav Pech What is YouTrack YouTrack is an innovative, web-based, keyboard-centric issue and project
BreezingForms Guide. 18 Forms: BreezingForms
BreezingForms 8/3/2009 1 BreezingForms Guide GOOGLE TRANSLATE FROM: http://openbook.galileocomputing.de/joomla15/jooml a_18_formulare_neu_001.htm#t2t32 18.1 BreezingForms 18.1.1 Installation and configuration
Industrial Adoption of Automatically Extracted GUI Models for Testing
Industrial Adoption of Automatically Extracted GUI Models for Testing Pekka Aho 1,2 [email protected], Matias Suarez 3 [email protected], Teemu Kanstrén 1,4 [email protected], and Atif M. Memon
Developing Microsoft SharePoint Server 2013 Advanced Solutions MOC 20489
Developing Microsoft SharePoint Server 2013 Advanced Solutions MOC 20489 Course Outline Module 1: Creating Robust and Efficient Apps for SharePoint In this module, you will review key aspects of the apps
Treemap Visualisations
Treemap Visualisations This exercise aims to be a getting started guide for building interactive Treemap visualisations using the D3 JavaScript library. While data visualisation has existed for many years
SOFTWARE TESTING TRAINING COURSES CONTENTS
SOFTWARE TESTING TRAINING COURSES CONTENTS 1 Unit I Description Objectves Duration Contents Software Testing Fundamentals and Best Practices This training course will give basic understanding on software
An introduction to creating JSF applications in Rational Application Developer Version 8.0
An introduction to creating JSF applications in Rational Application Developer Version 8.0 September 2010 Copyright IBM Corporation 2010. 1 Overview Although you can use several Web technologies to create
JRefleX: Towards Supporting Small Student Software Teams
JRefleX: Towards Supporting Small Student Software Teams Kenny Wong, Warren Blanchet, Ying Liu, Curtis Schofield, Eleni Stroulia, Zhenchang Xing Department of Computing Science University of Alberta {kenw,blanchet,yingl,schofiel,stroulia,xing}@cs.ualberta.ca
An introduction to creating Web 2.0 applications in Rational Application Developer Version 8.0
An introduction to creating Web 2.0 applications in Rational Application Developer Version 8.0 September 2010 Copyright IBM Corporation 2010. 1 Overview Rational Application Developer, Version 8.0, contains
COURSE SYLLABUS COURSE TITLE:
1 COURSE SYLLABUS COURSE TITLE: FORMAT: CERTIFICATION EXAMS: 55043AC Microsoft End to End Business Intelligence Boot Camp Instructor-led None This course syllabus should be used to determine whether the
Chapter 22: Integrating Flex applications with portal servers
279 Chapter 22: Integrating Flex applications with portal servers Using Adobe LiveCycle Data Services ES, you can configure Adobe Flex client applications as local portlets hosted on JBoss Portal, BEA
Web Design Specialist
UKWDA Training: CIW Web Design Series Web Design Specialist Course Description CIW Web Design Specialist is for those who want to develop the skills to specialise in website design and builds upon existing
How To Use Query Console
Query Console User Guide 1 MarkLogic 8 February, 2015 Last Revised: 8.0-1, February, 2015 Copyright 2015 MarkLogic Corporation. All rights reserved. Table of Contents Table of Contents Query Console User
Switching from PC SAS to SAS Enterprise Guide Zhengxin (Cindy) Yang, inventiv Health Clinical, Princeton, NJ
PharmaSUG 2014 PO10 Switching from PC SAS to SAS Enterprise Guide Zhengxin (Cindy) Yang, inventiv Health Clinical, Princeton, NJ ABSTRACT As more and more organizations adapt to the SAS Enterprise Guide,
Software Requirements Specification For Real Estate Web Site
Software Requirements Specification For Real Estate Web Site Brent Cross 7 February 2011 Page 1 Table of Contents 1. Introduction...3 1.1. Purpose...3 1.2. Scope...3 1.3. Definitions, Acronyms, and Abbreviations...3
Team Members: Christopher Copper Philip Eittreim Jeremiah Jekich Andrew Reisdorph. Client: Brian Krzys
Team Members: Christopher Copper Philip Eittreim Jeremiah Jekich Andrew Reisdorph Client: Brian Krzys June 17, 2014 Introduction Newmont Mining is a resource extraction company with a research and development
Rich-Internet Anwendungen auf Basis von ColdFusion und Ajax
Rich-Internet Anwendungen auf Basis von ColdFusion und Ajax Sven Ramuschkat [email protected] München & Zürich, März 2009 A bit of AJAX history XMLHttpRequest introduced in IE5 used in
Accessing Data with ADOBE FLEX 4.6
Accessing Data with ADOBE FLEX 4.6 Legal notices Legal notices For legal notices, see http://help.adobe.com/en_us/legalnotices/index.html. iii Contents Chapter 1: Accessing data services overview Data
Deposit Identification Utility and Visualization Tool
Deposit Identification Utility and Visualization Tool Colorado School of Mines Field Session Summer 2014 David Alexander Jeremy Kerr Luke McPherson Introduction Newmont Mining Corporation was founded in
Cache Configuration Reference
Sitecore CMS 6.2 Cache Configuration Reference Rev: 2009-11-20 Sitecore CMS 6.2 Cache Configuration Reference Tips and Techniques for Administrators and Developers Table of Contents Chapter 1 Introduction...
Archetypal Internet-Scale Source Code Searching
Archetypal Internet-Scale Source Code Searching Medha Umarji 1, Susan Elliott Sim 2, and Crista Lopes 2 1 University of Maryland Baltimore County, Department of Information Systems Baltimore, Maryland,
Business Insight Report Authoring Getting Started Guide
Business Insight Report Authoring Getting Started Guide Version: 6.6 Written by: Product Documentation, R&D Date: February 2011 ImageNow and CaptureNow are registered trademarks of Perceptive Software,
Adobe Test&Target. Integrating Test&Target with Your Online Properties. Overview. The Test&Target Architecture
Adobe Test&Target White Paper Overview 1: Test&Target Architecture 2: Protecting the User Experience 3: Effect on Search Engine Optimization (SEO) 4: Best Practices 5: Proof Points 6: Test&Target Support
Tutorial: Building a Dojo Application using IBM Rational Application Developer Loan Payment Calculator
Tutorial: Building a Dojo Application using IBM Rational Application Developer Loan Payment Calculator Written by: Chris Jaun ([email protected]) Sudha Piddaparti ([email protected]) Objective In this
Evaluating a new programming language
In G. Kadoda (Ed). Proc. PPIG 13 Pages 275-289 Evaluating a new programming language Steven Clarke Microsoft Corporation 1 Microsoft Way Redmond, WA 98052 USA +1 425 705 5978 [email protected] Keywords:
WEB& WEBSITE DESIGN TRAINING
WEB& WEBSITE DESIGN TRAINING Introduction to Websites Course Content: Introduction to Web Technologies Protocols and Port Numbers Domain Names, DNS and Domaining Client and Server Software. Static, Dynamic
Zoomer: An Automated Web Application Change Localization Tool
Journal of Communication and Computer 9 (2012) 913-919 D DAVID PUBLISHING Zoomer: An Automated Web Application Change Localization Tool Wenhua Wang 1 and Yu Lei 2 1. Marin Software Company, San Francisco,
Chapter 12: Advanced topic Web 2.0
Chapter 12: Advanced topic Web 2.0 Contents Web 2.0 DOM AJAX RIA Web 2.0 "Web 2.0" refers to the second generation of web development and web design that facilities information sharing, interoperability,
Experimenting in the domain of RIA's and Web 2.0
Experimenting in the domain of RIA's and Web 2.0 Seenivasan Gunabalan IMIT IV Edition, Scuola Suoperiore Sant'Anna,Pisa, Italy E-mail: [email protected] ABSTRACT This paper provides an overview
Abstract. Description
Project title: Bloodhound: Dynamic client-side autocompletion features for the Apache Bloodhound ticket system Name: Sifa Sensay Student e-mail: [email protected] Student Major: Software Engineering
Administrator's Guide
Search Engine Optimization Module Administrator's Guide Installation and configuration advice for administrators and developers Sitecore Corporation Table of Contents Chapter 1 Installation 3 Chapter 2
MadCap Software. Import Guide. Flare 11
MadCap Software Import Guide Flare 11 Copyright 2015 MadCap Software. All rights reserved. Information in this document is subject to change without notice. The software described in this document is furnished
Your Blueprint websites Content Management System (CMS).
Your Blueprint websites Content Management System (CMS). Your Blueprint website comes with its own content management system (CMS) so that you can make your site your own. It is simple to use and allows
Apple Applications > Safari 2008-10-15
Safari User Guide for Web Developers Apple Applications > Safari 2008-10-15 Apple Inc. 2008 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system,
How to Design and Create Your Own Custom Ext Rep
Combinatorial Block Designs 2009-04-15 Outline Project Intro External Representation Design Database System Deployment System Overview Conclusions 1. Since the project is a specific application in Combinatorial
JOOMLA 2.5 MANUAL WEBSITEDESIGN.CO.ZA
JOOMLA 2.5 MANUAL WEBSITEDESIGN.CO.ZA All information presented in the document has been acquired from http://docs.joomla.org to assist you with your website 1 JOOMLA 2.5 MANUAL WEBSITEDESIGN.CO.ZA BACK
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR
VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR Andrey V.Lyamin, State University of IT, Mechanics and Optics St. Petersburg, Russia Oleg E.Vashenkov, State University of IT, Mechanics and Optics, St.Petersburg,
Tips and Tricks SAGE ACCPAC INTELLIGENCE
Tips and Tricks SAGE ACCPAC INTELLIGENCE 1 Table of Contents Auto e-mailing reports... 4 Automatically Running Macros... 7 Creating new Macros from Excel... 8 Compact Metadata Functionality... 9 Copying,
How To Test Your Web Site On Wapt On A Pc Or Mac Or Mac (Or Mac) On A Mac Or Ipad Or Ipa (Or Ipa) On Pc Or Ipam (Or Pc Or Pc) On An Ip
Load testing with WAPT: Quick Start Guide This document describes step by step how to create a simple typical test for a web application, execute it and interpret the results. A brief insight is provided
Credits: Some of the slides are based on material adapted from www.telerik.com/documents/telerik_and_ajax.pdf
1 The Web, revisited WEB 2.0 [email protected] Credits: Some of the slides are based on material adapted from www.telerik.com/documents/telerik_and_ajax.pdf 2 The old web: 1994 HTML pages (hyperlinks)
Adding Panoramas to Google Maps Using Ajax
Adding Panoramas to Google Maps Using Ajax Derek Bradley Department of Computer Science University of British Columbia Abstract This project is an implementation of an Ajax web application. AJAX is a new
Web Development. Owen Sacco. ICS2205/ICS2230 Web Intelligence
Web Development Owen Sacco ICS2205/ICS2230 Web Intelligence Introduction Client-Side scripting involves using programming technologies to build web pages and applications that are run on the client (i.e.
A Tool for Evaluation and Optimization of Web Application Performance
A Tool for Evaluation and Optimization of Web Application Performance Tomáš Černý 1 [email protected] Michael J. Donahoo 2 [email protected] Abstract: One of the main goals of web application
Fig (1) (a) Server-side scripting with PHP. (b) Client-side scripting with JavaScript.
Client-Side Dynamic Web Page Generation CGI, PHP, JSP, and ASP scripts solve the problem of handling forms and interactions with databases on the server. They can all accept incoming information from forms,
Debugging JavaScript and CSS Using Firebug. Harman Goei CSCI 571 1/27/13
Debugging JavaScript and CSS Using Firebug Harman Goei CSCI 571 1/27/13 Notice for Copying JavaScript Code from these Slides When copying any JavaScript code from these slides, the console might return
XML Processing and Web Services. Chapter 17
XML Processing and Web Services Chapter 17 Textbook to be published by Pearson Ed 2015 in early Pearson 2014 Fundamentals of http://www.funwebdev.com Web Development Objectives 1 XML Overview 2 XML Processing
Bitrix Site Manager 4.1. User Guide
Bitrix Site Manager 4.1 User Guide 2 Contents REGISTRATION AND AUTHORISATION...3 SITE SECTIONS...5 Creating a section...6 Changing the section properties...8 SITE PAGES...9 Creating a page...10 Editing
BusinessObjects Enterprise InfoView User's Guide
BusinessObjects Enterprise InfoView User's Guide BusinessObjects Enterprise XI 3.1 Copyright 2009 SAP BusinessObjects. All rights reserved. SAP BusinessObjects and its logos, BusinessObjects, Crystal Reports,
A Platform for Large-Scale Machine Learning on Web Design
A Platform for Large-Scale Machine Learning on Web Design Arvind Satyanarayan SAP Stanford Graduate Fellow Dept. of Computer Science Stanford University 353 Serra Mall Stanford, CA 94305 USA [email protected]
Outline. CIW Web Design Specialist. Course Content
CIW Web Design Specialist Description The Web Design Specialist course (formerly titled Design Methodology and Technology) teaches you how to design and publish Web sites. General topics include Web Site
How To Build A Connector On A Website (For A Nonprogrammer)
Index Data's MasterKey Connect Product Description MasterKey Connect is an innovative technology that makes it easy to automate access to services on the web. It allows nonprogrammers to create 'connectors'
Understanding Web personalization with Web Usage Mining and its Application: Recommender System
Understanding Web personalization with Web Usage Mining and its Application: Recommender System Manoj Swami 1, Prof. Manasi Kulkarni 2 1 M.Tech (Computer-NIMS), VJTI, Mumbai. 2 Department of Computer Technology,
Course Information Course Number: IWT 1229 Course Name: Web Development and Design Foundation
Course Information Course Number: IWT 1229 Course Name: Web Development and Design Foundation Credit-By-Assessment (CBA) Competency List Written Assessment Competency List Introduction to the Internet
VisCG: Creating an Eclipse Call Graph Visualization Plug-in. Kenta Hasui, Undergraduate Student at Vassar College Class of 2015
VisCG: Creating an Eclipse Call Graph Visualization Plug-in Kenta Hasui, Undergraduate Student at Vassar College Class of 2015 Abstract Call graphs are a useful tool for understanding software; however,
Course 20489B: Developing Microsoft SharePoint Server 2013 Advanced Solutions OVERVIEW
Course 20489B: Developing Microsoft SharePoint Server 2013 Advanced Solutions OVERVIEW About this Course This course provides SharePoint developers the information needed to implement SharePoint solutions
Microsoft Expression Web Quickstart Guide
Microsoft Expression Web Quickstart Guide Expression Web Quickstart Guide (20-Minute Training) Welcome to Expression Web. When you first launch the program, you ll find a number of task panes, toolbars,
Adobe Flash Catalyst CS5.5
Adobe Flash Catalyst CS5.5 Create expressive interfaces and interactive content without writing code Use a new efficient workflow to collaborate intelligently and roundtrip files with developers who use
World-wide online monitoring interface of the ATLAS experiment
World-wide online monitoring interface of the ATLAS experiment S. Kolos, E. Alexandrov, R. Hauser, M. Mineev and A. Salnikov Abstract The ATLAS[1] collaboration accounts for more than 3000 members located
Digital media glossary
A Ad banner A graphic message or other media used as an advertisement. Ad impression An ad which is served to a user s browser. Ad impression ratio Click-throughs divided by ad impressions. B Banner A
Tutorial 5: Developing Java applications
Tutorial 5: Developing Java applications p. 1 Tutorial 5: Developing Java applications Georgios Gousios [email protected] Department of Management Science and Technology Athens University of Economics and
WIRIS quizzes web services Getting started with PHP and Java
WIRIS quizzes web services Getting started with PHP and Java Document Release: 1.3 2011 march, Maths for More www.wiris.com Summary This document provides client examples for PHP and Java. Contents WIRIS
Microsoft Visual Studio Integration Guide
Microsoft Visual Studio Integration Guide MKS provides a number of integrations for Integrated Development Environments (IDEs). IDE integrations allow you to access MKS Integrity s workflow and configuration
SEO Overview. Introduction
Introduction This guide addresses a number of separate issues which are involved in Search Engine Optimisation (SEO) - the art of ensuring that your pages rank well in the "organic listings" [Wikipedia]
SilkTest Workbench. Getting Started with.net Scripts
SilkTest Workbench Getting Started with.net Scripts Borland Software Corporation 4 Hutton Centre Dr., Suite 900 Santa Ana, CA 92707 Copyright 2010 Micro Focus (IP) Limited. All Rights Reserved. SilkTest
Load testing with. WAPT Cloud. Quick Start Guide
Load testing with WAPT Cloud Quick Start Guide This document describes step by step how to create a simple typical test for a web application, execute it and interpret the results. 2007-2015 SoftLogica
International Journal of Advanced Engineering Research and Science (IJAERS) Vol-2, Issue-11, Nov- 2015] ISSN: 2349-6495
International Journal of Advanced Engineering Research and Science (IJAERS) Vol-2, Issue-11, Nov- 2015] Survey on Automation Testing Tools for Mobile Applications Dr.S.Gunasekaran 1, V. Bargavi 2 1 Department
SQL Server 2005 Reporting Services (SSRS)
SQL Server 2005 Reporting Services (SSRS) Author: Alex Payne and Brian Welcker Published: May 2005 Summary: SQL Server 2005 Reporting Services is a key component of SQL Server 2005. Reporting Services
Search Engine Optimization for Silverlight Applications
Search Engine Optimization for Silverlight Applications Ashish Shetty Microsoft Corporation October 2008 Applies to: Microsoft Silverlight Summary: This document describes some best practices for search
DataPA OpenAnalytics End User Training
DataPA OpenAnalytics End User Training DataPA End User Training Lesson 1 Course Overview DataPA Chapter 1 Course Overview Introduction This course covers the skills required to use DataPA OpenAnalytics
MASTERTAG DEVELOPER GUIDE
MASTERTAG DEVELOPER GUIDE TABLE OF CONTENTS 1 Introduction... 4 1.1 What is the zanox MasterTag?... 4 1.2 What is the zanox page type?... 4 2 Create a MasterTag application in the zanox Application Store...
Mining a Change-Based Software Repository
Mining a Change-Based Software Repository Romain Robbes Faculty of Informatics University of Lugano, Switzerland 1 Introduction The nature of information found in software repositories determines what
DEPLOYMENT GUIDE Version 2.1. Deploying F5 with Microsoft SharePoint 2010
DEPLOYMENT GUIDE Version 2.1 Deploying F5 with Microsoft SharePoint 2010 Table of Contents Table of Contents Introducing the F5 Deployment Guide for Microsoft SharePoint 2010 Prerequisites and configuration
Introduction to the course, Eclipse and Python
As you arrive: 1. Start up your computer and plug it in. 2. Log into Angel and go to CSSE 120. Do the Attendance Widget the PIN is on the board. 3. Go to the Course Schedule web page. Open the Slides for
Web Dashboard User Guide
Web Dashboard User Guide Version 10.2 The software supplied with this document is the property of RadView Software and is furnished under a licensing agreement. Neither the software nor this document may
