Pub Date : 2014-07-01DOI: 10.1109/VLHCC.2014.6883061
Rainer Lutz, Daniel Rausch, Fabian Beck, S. Diehl
Nowadays file browsers represent a common means to organize hierarchically structured data provided by a file system. However, when it comes to comparing and merging different directory structures, file browsers often do not explicitly support users to accomplish such a task. In this paper, we present a special-purpose approach focusing on the manipulation of directory structures in the context of comparison. To this end, two directory structures including subdirectories and files are displayed side by side while links between them indicate similar files. Drag-and-drop operations allow the users for interactively manipulating or merging both directory structures.
{"title":"A directory comparison and manipulation tool","authors":"Rainer Lutz, Daniel Rausch, Fabian Beck, S. Diehl","doi":"10.1109/VLHCC.2014.6883061","DOIUrl":"https://doi.org/10.1109/VLHCC.2014.6883061","url":null,"abstract":"Nowadays file browsers represent a common means to organize hierarchically structured data provided by a file system. However, when it comes to comparing and merging different directory structures, file browsers often do not explicitly support users to accomplish such a task. In this paper, we present a special-purpose approach focusing on the manipulation of directory structures in the context of comparison. To this end, two directory structures including subdirectories and files are displayed side by side while links between them indicate similar files. Drag-and-drop operations allow the users for interactively manipulating or merging both directory structures.","PeriodicalId":165006,"journal":{"name":"2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122709007","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-07-01DOI: 10.1109/VLHCC.2014.6883049
Michelle Ichinco
I propose a crowdsourced large-scale feedback system for novice programmers powered by experienced programmers, or code reviewers (who I will refer to as “reviewers”). Reviewers have two jobs: making suggestions to improve novice programs and authoring rules that generalize when a program should receive their suggestion. A rule is a heuristic program that can be run on a novice program to determine whether the system should present the suggestion to the novice programmer. For example, imagine a novice program that contains a certain method call repeated three times in a row. A reviewer might suggest to improve the program by replacing the three identical method calls with a loop. The reviewer would then author a rule that checks whether code in other novice programs also contains repeated lines of code. If the rule determines that a novice program does have repeated code, the system would present the suggestion to the novice programmer to use a loop by showing an example of correct loop usage.
{"title":"Towards crowdsourced large-scale feedback for novice programmers","authors":"Michelle Ichinco","doi":"10.1109/VLHCC.2014.6883049","DOIUrl":"https://doi.org/10.1109/VLHCC.2014.6883049","url":null,"abstract":"I propose a crowdsourced large-scale feedback system for novice programmers powered by experienced programmers, or code reviewers (who I will refer to as “reviewers”). Reviewers have two jobs: making suggestions to improve novice programs and authoring rules that generalize when a program should receive their suggestion. A rule is a heuristic program that can be run on a novice program to determine whether the system should present the suggestion to the novice programmer. For example, imagine a novice program that contains a certain method call repeated three times in a row. A reviewer might suggest to improve the program by replacing the three identical method calls with a loop. The reviewer would then author a rule that checks whether code in other novice programs also contains repeated lines of code. If the rule determines that a novice program does have repeated code, the system would present the suggestion to the novice programmer to use a loop by showing an example of correct loop usage.","PeriodicalId":165006,"journal":{"name":"2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131599649","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-07-01DOI: 10.1109/VLHCC.2014.6883048
Austin Z. Henley
Programmers spend a considerable amount of time navigating among many code fragments that may be spread across hundreds or even thousands of files. For example, one study found that programmers spent 35% of their time navigating. Another study showed that 50% of programmers' time was spent foraging for information. The author's work aims to increase programmer productivity through the design of new code editors and tools to speed up source code navigation. It proposes a new tool concept known as Patchworks. In particular, Patchworks aims to allow programmers to conveniently juxtapose code, to efficiently navigate recently visited code fragments, to significantly reduce scrolling, and to reduce the time spent arranging code.
{"title":"Improving source code navigation with patchworks","authors":"Austin Z. Henley","doi":"10.1109/VLHCC.2014.6883048","DOIUrl":"https://doi.org/10.1109/VLHCC.2014.6883048","url":null,"abstract":"Programmers spend a considerable amount of time navigating among many code fragments that may be spread across hundreds or even thousands of files. For example, one study found that programmers spent 35% of their time navigating. Another study showed that 50% of programmers' time was spent foraging for information. The author's work aims to increase programmer productivity through the design of new code editors and tools to speed up source code navigation. It proposes a new tool concept known as Patchworks. In particular, Patchworks aims to allow programmers to conveniently juxtapose code, to efficiently navigate recently visited code fragments, to significantly reduce scrolling, and to reduce the time spent arranging code.","PeriodicalId":165006,"journal":{"name":"2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)","volume":"56 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126950453","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-07-01DOI: 10.1109/VLHCC.2014.6883031
O. Zinenko, Stéphane Huot, C. Bastoul
Parallel systems are now omnipresent and their effective use requires significant effort and expertise from software developers. Multitude of languages and libraries offer convenient ways to express parallelism, but fall short at helping programmers to find parallelism in existing programs. To address this issue, we introduce Clint, a direct manipulation tool aimed to ease both the extraction and the expression of parallelism. Clint builds on polyhedral representation of programs to convey dynamic behavior, to perform automatic data dependence analysis and to ensure code correctness. It can be used to rework and improve automatically generated optimizations and to make manual program transformation faster, safer and more efficient.
{"title":"Clint: A direct manipulation tool for parallelizing compute-intensive program parts","authors":"O. Zinenko, Stéphane Huot, C. Bastoul","doi":"10.1109/VLHCC.2014.6883031","DOIUrl":"https://doi.org/10.1109/VLHCC.2014.6883031","url":null,"abstract":"Parallel systems are now omnipresent and their effective use requires significant effort and expertise from software developers. Multitude of languages and libraries offer convenient ways to express parallelism, but fall short at helping programmers to find parallelism in existing programs. To address this issue, we introduce Clint, a direct manipulation tool aimed to ease both the extraction and the expression of parallelism. Clint builds on polyhedral representation of programs to convey dynamic behavior, to perform automatic data dependence analysis and to ensure code correctness. It can be used to rework and improve automatically generated optimizations and to make manual program transformation faster, safer and more efficient.","PeriodicalId":165006,"journal":{"name":"2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)","volume":"49 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132553303","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-07-01DOI: 10.1109/VLHCC.2014.6883017
Rainer Lutz, Daniel Rausch, Fabian Beck, S. Diehl
Visual comparison of hierarchies such as directory structures is often considered a passive analysis task. Thus, insights gained from the visualization need to be recorded and applied afterwards. In contrast in this paper, we propose and explore an active visual analytics approach focusing on the manipulation of directory structures in the context of comparison. Two directories including subdirectories and files are presented side by side while links between the two representations connect matching files. Embedded into an elaborate interaction concept, drag-and-drop operations allow the users for interactively modifying the directories. We explored different application scenarios of the approach in a qualitative user study.
{"title":"Get your directories right: From hierarchy visualization to hierarchy manipulation","authors":"Rainer Lutz, Daniel Rausch, Fabian Beck, S. Diehl","doi":"10.1109/VLHCC.2014.6883017","DOIUrl":"https://doi.org/10.1109/VLHCC.2014.6883017","url":null,"abstract":"Visual comparison of hierarchies such as directory structures is often considered a passive analysis task. Thus, insights gained from the visualization need to be recorded and applied afterwards. In contrast in this paper, we propose and explore an active visual analytics approach focusing on the manipulation of directory structures in the context of comparison. Two directories including subdirectories and files are presented side by side while links between the two representations connect matching files. Embedded into an elaborate interaction concept, drag-and-drop operations allow the users for interactively modifying the directories. We explored different application scenarios of the approach in a qualitative user study.","PeriodicalId":165006,"journal":{"name":"2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127633512","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-07-01DOI: 10.1109/VLHCC.2014.6883030
Youngseok Yoon, B. Myers
Programming often involves reverting source code to an earlier state, which we call backtracking. We performed a longitudinal study of programmers' backtracking, analyzing 1,460 hours of fine-grained code editing logs collected from 21 people. Our analysis method keeps track of the change history of each abstract syntax tree node and looks for backtracking instances within each node. Using this method, we detected a total of 15,095 backtracking instances, which gives an average backtracking rate of 10.3/hour. The size of backtracking varied con-siderably, ranging from a single character to thousands of char-acters. 34% of the backtracking was performed by manually deleting or typing the desired code, and 9.5% of all backtracking was selective, meaning that it could not have been performed using the conventional undo command present in the IDE. The study results show that programmers need better backtracking tools, and also provide design implications for such tools.
{"title":"A longitudinal study of programmers' backtracking","authors":"Youngseok Yoon, B. Myers","doi":"10.1109/VLHCC.2014.6883030","DOIUrl":"https://doi.org/10.1109/VLHCC.2014.6883030","url":null,"abstract":"Programming often involves reverting source code to an earlier state, which we call backtracking. We performed a longitudinal study of programmers' backtracking, analyzing 1,460 hours of fine-grained code editing logs collected from 21 people. Our analysis method keeps track of the change history of each abstract syntax tree node and looks for backtracking instances within each node. Using this method, we detected a total of 15,095 backtracking instances, which gives an average backtracking rate of 10.3/hour. The size of backtracking varied con-siderably, ranging from a single character to thousands of char-acters. 34% of the backtracking was performed by manually deleting or typing the desired code, and 9.5% of all backtracking was selective, meaning that it could not have been performed using the conventional undo command present in the IDE. The study results show that programmers need better backtracking tools, and also provide design implications for such tools.","PeriodicalId":165006,"journal":{"name":"2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115102783","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-07-01DOI: 10.1109/VLHCC.2014.6883056
Jácome Cunha, J. Fernandes, J. Mendes, Rui Pereira, J. Saraiva
This paper presents ES-SQL, an embedded tool for visually constructing queries over spreadsheets. This tool provides an expressive query environment which has knowledge on the business logic of spreadsheets, and by this knowledge it assists the user in defining the intended queries.
{"title":"ES-SQL: Visually querying spreadsheets","authors":"Jácome Cunha, J. Fernandes, J. Mendes, Rui Pereira, J. Saraiva","doi":"10.1109/VLHCC.2014.6883056","DOIUrl":"https://doi.org/10.1109/VLHCC.2014.6883056","url":null,"abstract":"This paper presents ES-SQL, an embedded tool for visually constructing queries over spreadsheets. This tool provides an expressive query environment which has knowledge on the business logic of spreadsheets, and by this knowledge it assists the user in defining the intended queries.","PeriodicalId":165006,"journal":{"name":"2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127171974","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-07-01DOI: 10.1109/VLHCC.2014.6883057
Martin Erwig, Karl Smeltzer, Keying Xu
We present a visual notation to support the understanding and reasoning about program edits. The graph-based representation directly supports a number of editing operations beyond those offered by a typical, linear program-edit model and makes obvious otherwise hidden states the code can reach through selectively undoing or redoing changes.
{"title":"A notation for non-linear program edits","authors":"Martin Erwig, Karl Smeltzer, Keying Xu","doi":"10.1109/VLHCC.2014.6883057","DOIUrl":"https://doi.org/10.1109/VLHCC.2014.6883057","url":null,"abstract":"We present a visual notation to support the understanding and reasoning about program edits. The graph-based representation directly supports a number of editing operations beyond those offered by a typical, linear program-edit model and makes obvious otherwise hidden states the code can reach through selectively undoing or redoing changes.","PeriodicalId":165006,"journal":{"name":"2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134224361","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-07-01DOI: 10.1109/VLHCC.2014.6883042
K. Chang, B. Myers
Web services offer a more reliable and efficient way to access online data than scraping web pages. However, web service data are often in complex hierarchical structures that make it difficult for people to extract the desired parts or to perform any further data manipulation without writing a significant amount of surprisingly intricate code. In this paper, we present Gneiss, a tool that extends the familiar spreadsheet metaphor to support working with data returned from web services. Gneiss allows users to extract the desired fields in web service data using drag-and-drop, and refine the results through spreadsheet formulas, along with sorting and filtering the data. Hierarchical data are stored as nested tables in the spreadsheet and can be flattened for future operations. Data flow is two-way between the spreadsheet and the web services, enabling people to easily make a new request by modifying spreadsheet cells. In addition, using the dependency between spreadsheet cells, our tool is able to create parallel-running data extractions based on the user's sequential demonstration. We use a set of examples to demonstrate our tool's ability to create fast and reusable data extraction and manipulation programs that work with complex web service data.
{"title":"A spreadsheet model for using web service data","authors":"K. Chang, B. Myers","doi":"10.1109/VLHCC.2014.6883042","DOIUrl":"https://doi.org/10.1109/VLHCC.2014.6883042","url":null,"abstract":"Web services offer a more reliable and efficient way to access online data than scraping web pages. However, web service data are often in complex hierarchical structures that make it difficult for people to extract the desired parts or to perform any further data manipulation without writing a significant amount of surprisingly intricate code. In this paper, we present Gneiss, a tool that extends the familiar spreadsheet metaphor to support working with data returned from web services. Gneiss allows users to extract the desired fields in web service data using drag-and-drop, and refine the results through spreadsheet formulas, along with sorting and filtering the data. Hierarchical data are stored as nested tables in the spreadsheet and can be flattened for future operations. Data flow is two-way between the spreadsheet and the web services, enabling people to easily make a new request by modifying spreadsheet cells. In addition, using the dependency between spreadsheet cells, our tool is able to create parallel-running data extractions based on the user's sequential demonstration. We use a set of examples to demonstrate our tool's ability to create fast and reusable data extraction and manipulation programs that work with complex web service data.","PeriodicalId":165006,"journal":{"name":"2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122354469","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2014-07-01DOI: 10.1109/VLHCC.2014.6883020
J. Scott, Philip J. Guo, Randall Davis
Instructors typically explain algorithms in computer science by tracing their behavior, often on blackboards, sometimes with algorithm visualizations. Using blackboards can be tedious because they do not facilitate manipulation of the drawing, while visualizations often operate at the wrong level of abstraction or must be laboriously hand-coded for each algorithm. In response, we present a direct manipulation (DM) language for explaining algorithms by manipulating visualized data structures. The language maps DM gestures onto primitive program behaviors that occur in commonly taught algorithms. We performed an initial evaluation of the DM language on teaching assistants of an undergraduate algorithms class, who found the language easier to use and more helpful for explaining algorithms than a standard drawing application (GIMP).
{"title":"A direct manipulation language for explaining algorithms","authors":"J. Scott, Philip J. Guo, Randall Davis","doi":"10.1109/VLHCC.2014.6883020","DOIUrl":"https://doi.org/10.1109/VLHCC.2014.6883020","url":null,"abstract":"Instructors typically explain algorithms in computer science by tracing their behavior, often on blackboards, sometimes with algorithm visualizations. Using blackboards can be tedious because they do not facilitate manipulation of the drawing, while visualizations often operate at the wrong level of abstraction or must be laboriously hand-coded for each algorithm. In response, we present a direct manipulation (DM) language for explaining algorithms by manipulating visualized data structures. The language maps DM gestures onto primitive program behaviors that occur in commonly taught algorithms. We performed an initial evaluation of the DM language on teaching assistants of an undergraduate algorithms class, who found the language easier to use and more helpful for explaining algorithms than a standard drawing application (GIMP).","PeriodicalId":165006,"journal":{"name":"2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)","volume":"103 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127144340","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}