Browsing by Author "Edwards, Stephen H."
Now showing 1 - 20 of 94
Results Per Page
Sort Options
- Algorithm Visualization: The State of the FieldCooper, Matthew Lenell (Virginia Tech, 2007-04-19)We report on the state of the field of algorithm visualization, both quantitatively and qualitatively. Computer science educators seem to find algorithm and data structure visualizations attractive for their classrooms. Educational research shows that some are effective while many are not. Clearly, then, visualizations are difficult to create and use right. There is little in the way of a supporting community, and many visualizations are downright poor. Topic distribution is heavily skewed towards simple concepts with advanced topics receiving little to no attention. We have cataloged nearly 400 visualizations available on the Internet. We have a wiki-based catalog which includes availability, platform, strengths and weaknesses, responsible personnel and institutions, and other data about each visualization. We have developed extraction and analysis tools to gather statistics about the corpus of visualizations. Based on analysis of this collection, we point out areas where improvements may be realized and suggest techniques for implementing such improvements. We pay particular attention to the free and open source software movement as a model which the visualization community may do well to emulate, from both a software engineering perspective and a community-building standpoint.
- The AlgoViz Project: Building an Algorithm Visualization Web CommunityAlon, Alexander Joel Dacara (Virginia Tech, 2010-07-15)Algorithm visualizations (AVs) have become a popular teaching aid in classes on algorithms and data structures. The AlgoViz Project attempts to provide an online venue for educators, students, developers,researchers, and other AV users. The Project is comprised of two websites. The first, the AlgoViz Portal, provides two major informational resources: an AV catalog that provides both descriptive and evaluative metadata of indexed visualizations, and an annotated bibliography of research literature. Both resources have over 500 entries and are actively updated by the AV community. The Portal also provides field reports, discussion forums, and other community-building mechanisms. The second website, OpenAlgoViz, is a SourceForge site intended to showcase exemplary AVs, as well as provide logistical and hosting support to AV developers.
- Analysis and Evaluation of Methods for Activities in the Expanded Requirements Generation Model (x-RGM)Lobo, Lester Oscar (Virginia Tech, 2004-07-26)In recent years, the requirements engineering community has proposed a number of models for the generation of a well-formulated, complete set of requirements. However, these models are often highly abstract or narrowly focused, providing only pieces of structure and parts of guidance to the requirements generation process. Furthermore, many of the models fail to identify methods that can be employed to achieve the activity objectives. As a consequence of these problems, the requirements engineer lacks the necessary guidance to effectively apply the requirements generation process, and thus, resulting in the production of an inadequate set of requirements. To address these concerns, we propose the expanded Requirements Generation Model (x-RGM), which consists of activities at a more appropriate level of abstraction. This decomposition of the model ensures that the requirements engineer has a clear understanding of the activities involved in the requirements generation process. In addition, the objectives of all the activities defined by the x-RGM are identified and explicitly stated so that no assumptions are made about the goals of the activities involved in the generation of requirements. We also identify sets of methods that can be used during each activity to effectively achieve its objectives. The mapping of methods to activities guides the requirements engineer in selecting the appropriate techniques for a particular activity in the requirements engineering process. Furthermore, we prescribe small subsets of methods for each activity based on commonly used selection criteria such that the chosen criterion is optimized. This list of methods is created with the intention of simplifying the task of choosing methods for the activities defined by the x-RGM that best meet the selection criterion goal
- Applying Curricular Alignment to Improve the Effectiveness of CS EducationElsherbiny, Noha Ibrahim Mohamed (Virginia Tech, 2020-07-13)According to Fossati and Guzdail, many CS instructors rely on their intuition, feedback from students and anecdotal advice from other instructors to make course improvements. Guzdail noted that: "Computing educators' practice would dramatically improve if we drew on evidence, rather than intuition". This means that Computer Science instructors may benefit from processes and tools that help them make informed changes to their curriculum. An evidence-based approach to course improvement is curriculum alignment, which evaluates the degree which the learning objectives, course content, and assessment methods are in agreement with each other. This provides instructors with a detailed view of their course and areas that need improvement. Current alignment processes are impractical for a course instructor to apply, requiring a panel of experts and training on the process. In this research, I developed a computer-assisted alignment process (CAAP) that uses the concept of traceability from software engineering, to define a process that is applicable by a single course instructor limiting the need for a panel of experts. In an initial application CAAP took 75 hours to apply, consequently a prototype alignment tool (AlignET) was designed to automates the new alignment process providing instructors with results they can use to make course improvements. I evaluated the practicality of AlignET by conducting collective case studies with four participants. Observations and interviews were used to collect data. AlignET reduced the time to complete CAAP to less than 11 hours and the participants identified course improvements, gaps in their instructional methods, and learning objectives they emphasized more than others. The findings from the case study presented key improvements to AlignET.
- Automated Assessment of Student-written Tests Based on Defect-detection CapabilityShams, Zalia (Virginia Tech, 2015-05-05)Software testing is important, but judging whether a set of software tests is effective is difficult. This problem also appears in the classroom as educators more frequently include software testing activities in programming assignments. The most common measures used to assess student-written software tests are coverage criteria—tracking how much of the student’s code (in terms of statements, or branches) is exercised by the corresponding tests. However, coverage criteria have limitations and sometimes overestimate the true quality of the tests. This dissertation investigates alternative measures of test quality based on how many defects the tests can detect either from code written by other students—all-pairs execution—or from artificially injected changes—mutation analysis. We also investigate a new potential measure called checked code coverage that calculates coverage from the dynamic backward slices of test oracles, i.e. all statements that contribute to the checked result of any test. Adoption of these alternative approaches in automated classroom grading systems require overcoming a number of technical challenges. This research addresses these challenges and experimentally compares different methods in terms of how well they predict defect-detection capabilities of student-written tests when run against over 36,500 known, authentic, human-written errors. For data collection, we use CS2 assignments and evaluate students’ tests with 10 different measures—all-pairs execution, mutation testing with four different sets of mutation operators, checked code coverage, and four coverage criteria. Experimental results encompassing 1,971,073 test runs show that all-pairs execution is the most accurate predictor of the underlying defect-detection capability of a test suite. The second best predictor is mutation analysis with the statement deletion operator. Further, no strong correlation was found between defect-detection capability and coverage measures.
- Automated Conversion of Structured Fortran 77 Ccode Into Object-Oriented C++ CodeKothapalli, Malini (Virginia Tech, 2003-05-08)The maintenance of legacy software systems that were developed using a procedural design approach is becoming increasingly expensive. The procedural approach is often ill suited for complex systems that need to integrate with other codes. Furthermore, these legacy systems are usually written in FORTRAN, for which there is increasingly less personnel available compared to, say, C++. While it would be desirable to convert these legacy systems into object-oriented codes described in C++, such a conversion process is nontrivial. Currently, the structural design must be manually examined, interpreted, and converted into an object-oriented design described in an object-oriented language. Therefore, the conversion process is likely to introduce numerous new inconsistencies and errors, which degrades the software's quality and increases its costs. The preferred solution would be to automate this conversion process. Automation would promote consistency by eliminating the manual variations in interpretation and implementation. It would therefore maximize the likelihood that the converted code does not introduce new errors relative to the original code. The work presented here automates the conversion process from procedural design described in the FORTRAN77 language into object-oriented design described in the C++ language. It demonstrates the extraction of object-oriented elements using FORTRAN common block structures and FORTRAN subroutine and function-calling hierarchies. The result is a consistent, first-cut converted design, which enhances cohesion within classes and reduces coupling between classes. This result is described in the contemporary, broadly used computer language C++, which integrates with adjacent modules that might still remain procedural and described in FORTRAN.
- Automated Identification and Application of Code Refactoring in Scratch to Promote the Culture Quality from the Ground upTechapalokul, Peeratham (Virginia Tech, 2020-06-04)Much of software engineering research and practice is concerned with improving software quality. While enormous prior efforts have focused on improving the quality of programs, this dissertation instead provides the means to educate the next generation of programmers who care deeply about software quality. If they embrace the culture of quality, these programmers would be positioned to drastically improve the quality of the software ecosystem. This dissertation describes novel methodologies, techniques, and tools for introducing novice programmers to software quality and its systematic improvement. This research builds on the success of Scratch, a popular novice-oriented block-based programming language, to support the learning of code quality and its improvement. This dissertation improves the understanding of quality problems of novice programmers, creates analysis and quality improvement technologies, and develops instructional approaches for teaching quality improvement. The contributions of this dissertation are as follows. (1) We identify twelve code smells endemic to Scratch, show their prevalence in a large representative codebase, and demonstrate how they hinder project reuse and communal learning. (2) We introduce four new refactorings for Scratch, develop an infrastructure to support them in the Scratch programming environment, and evaluate their effectiveness for the target audience. (3) We study the impact of introducing code quality concepts alongside the fundamentals of programming with and without automated refactoring support. Our findings confirm that it is not only feasible but also advantageous to promote the culture of quality from the ground up. The contributions of this dissertation can benefit both novice programmers and introductory computing educators.
- Automatically Generating Tests from Natural Language Descriptions of Software BehaviorSunil Kamalakar, FNU (Virginia Tech, 2013-10-18)Behavior-Driven Development (BDD) is an emerging agile development approach where all stakeholders (including developers and customers) work together to write user stories in structured natural language to capture a software application's functionality in terms of re- quired "behaviors". Developers then manually write "glue" code so that these scenarios can be executed as software tests. This glue code represents individual steps within unit and acceptance test cases, and tools exist that automate the mapping from scenario descriptions to manually written code steps (typically using regular expressions). Instead of requiring programmers to write manual glue code, this thesis investigates a practical approach to con- vert natural language scenario descriptions into executable software tests fully automatically. To show feasibility, we developed a tool called Kirby that uses natural language processing techniques, code information extraction and probabilistic matching to automatically gener- ate executable software tests from structured English scenario descriptions. Kirby relieves the developer from the laborious work of writing code for the individual steps described in scenarios, so that both developers and customers can both focus on the scenarios as pure behavior descriptions (understandable to all, not just programmers). Results from assessing the performance and accuracy of this technique are presented.
- Belbin's Company Worker, The Self-Perception Inventory, and Their Application to Software Engineering TeamsSchoenhoff, Peter Klaus (Virginia Tech, 2001-12-11)Software engineering often requires a team arrangement because of the size and scope of modern projects. Several team structures have been defined and used, but these structures generally define only the tasks and jobs required for the team. Various process and product metrics seek to improve quality, even though it is generally agreed that the greatest potential benefit lies in people issues. This study uses a team-based personality profiling tool, the Belbin Self-Perception Inventory, to explore the characteristics offered by the Company Worker, one of the team roles defined by Belbin.
- Bringing Fault Tolerance to Hardware Managers in PESNetLee, Yoon-Soo (Virginia Tech, 2006-07-26)The goal of this research is to improve the communications protocol for Dual Ring Power Electronics Systems called PESNet. The thesis will focus on making the protocol operate in a more reliable manner by tolerating Hardware Manager failures and allowing failover among duplicate Hardware Managers within PEBB-based systems. In order to make this possible, two new features must be added to PESNet: utilization of the secondary ring for fault-tolerant communication, and dynamic reconfiguration of the network. Many ideas for supporting fault tolerance have been discussed in previous work and the hardware for PEBB-based systems was designed so support fault tolerance. However, in spite of the capabilities of the hardware, fault tolerance is not supported yet by existing firmware or software. Improving the PESNet protocol to tolerate Hardware Manager failures will increase the reliability of power electronics systems. Moreover, the additional features that are needed to perform failover also allow recovery from link failures and make hot-swap or plug-and-play of PEBBs possible. Since power electronics systems are real-time systems, it is critical that packets be delivered as soon as possible to their destination. The network latency will limit the granularity of time that the control application can operate on. As a result, methods to implement the required features to meet real-time system requirements are discussed and changes to the protocol are proposed. Changing PESNet will provide reliability gains, depending on the reliability of the components that are used to construct the system.
- Building and Evaluating a Learning Environment for Data Structures and Algorithms CoursesFouh Mbindi, Eric Noel (Virginia Tech, 2015-04-29)Learning technologies in computer science education have been most closely associated with teaching of programming, including automatic assessment of programming exercises. However, when it comes to teaching computer science content and concepts, learning technologies have not been heavily used. Perhaps the best known application today is Algorithm Visualization (AV), of which there are hundreds of examples. AVs tend to focus on presenting the procedural aspects of how a given algorithm works, rather than more conceptual content. There are also new electronic textbooks (eTextbooks) that incorporate the ability to edit and execute program examples. For many traditional courses, a longstanding problem is lack of sufficient practice exercises with feedback to the student. Automated assessment provides a way to increase the number of exercises on which students can receive feedback. Interactive eTextbooks have the potential to make it easy for instructors to introduce both visualizations and practice exercises into their courses. OpenDSA is an interactive eTextbook for data structures and algorithms (DSA) courses. It integrates tutorial content with AVs and automatically assessed interactive exercises. Since Spring 2013, OpenDSA has been regularly used to teach a fundamental data structures and algorithms course (CS2), and also a more advanced data structures, algorithms, and analysis course (CS3) at various institutions of higher education. In this thesis, I report on findings from early adoption of the OpenDSA system. I describe how OpenDSA's design addresses obstacles in the use of AV systems. I identify a wide variety of use for OpenDSA in the classroom. I found that instructors used OpenDSA exercises as graded assignments in all the courses where it was used. Some instructors assigned an OpenDSA assignment before lectures and started spending more time teaching higher-level concepts. OpenDSA also supported implementing a ``flipped classroom'' by some instructors. I found that students are enthusiastic about OpenDSA and voluntarily used the AVs embedded within OpenDSA. Students found OpenDSA beneficial and expressed a preference for a class format that included using OpenDSA as part of the assigned graded work. The relationship between OpenDSA and students' performance was inconclusive, but I found that students with higher grades tend to complete more exercises.
- The CloudBrowser Web Application FrameworkMcDaniel, Brian Newsom (Virginia Tech, 2012-05-02)While more and more applications are moving from the desktop to the web, users still expect their applications to behave like they did on the desktop. Specifically, users expect that user interface state is preserved across visits, and that the state of the interface truly reflects the state of the underlying data. Unfortunately, achieving this ideal is difficult for web application developers due to the distributed nature of the web. Modern AJAX applications rely on asynchronous network programming to synchronize the client-side user interface with server-side data. Furthermore, since the HTTP protocol is stateless, preserving interface state across visits requires a significant amount of manual work on behalf of the developer. CloudBrowser is a web application framework that supports the development of rich Internet applications whose entire user interface and application logic resides on the server, while all client/server communication is provided by the framework. CloudBrowser is ideal for single- page web applications, which is the current trend in web development. CloudBrowser thus hides the distributed nature of these applications from the developer, creating an environment similar to that provided by a desktop user interface library. CloudBrowser preserves the user interface state in a server-side virtual browser that is maintained across visits. Further- more, multiple clients can connect to a single server-side interface instance, providing built-in co-browsing support. Unlike other server-centric frameworks, CloudBrowser's exclusive use of the HTML document model and associated JavaScript execution environment allows it to exploit existing client-side user interface libraries and toolkits while transparently providing access to other application tiers. We have implemented a prototype of CloudBrowser as well as several example applications to demonstrate the benefits of its server-centric design.
- CloudSpace: A Web Development Environment for CS1 CoursesWoods, Michael John (Virginia Tech, 2011-05-03)Since a massive decline of computer science graduates in 2002, computer science departments have been unable to reach previous graduation rates. In wake of this dramatic loss of graduates, researchers have been searching for the reasons students are avoiding computer science and choosing other majors. To combat this decrease in computer science graduates, the CloudSpace environment pro- vides additional context to entry level computer science courses. This shift in context re- moves boring assignments from the early computer science curriculum and replaces them with more engaging web centric assignments. The CloudSpace environment presents a model that maintains student's focus on core computer science competencies while providing a highly simplified web development toolkit to develop feature rich AJAX web applications. This the- sis includes the rational and implementation of a cloud based hosting service and a highly abstracted web tool kit that enables students to replicate modern web applications.
- Code Reading Dojo: Designing an Educationally-oriented Mobile Application Aimed at Promoting Code Reading SkillsGhaed, Zahra (Virginia Tech, 2017-06-07)In recent years, much attention has been directed to the use of educational games for learning computer science concepts. The motivation of game-based learning with positive experience has been deeply studied in the literature, but game design for improving code reading skills have much room for improvement. Being good at the reading code is important to a professional developer. To address this issue, we defined a new educationally-oriented mobile game application, aimed at promoting the development of code reading skills in a new and fun way. The strategy of this game is to find errors in pieces of codes. At each level, students should find all syntactic and semantic errors in the code in a certain time in order to advance to the next level. Of the numerous programming languages, we chose Java because it is one of the most popular programming languages. In many colleges, Java plays a major role in introductory courses. Our vision is to allow instructors to employ the game in their introduction to programming in Java course. In addition, we hope it could be adapted for use in introductory courses using different programming languages. Data collected during the project helps us evaluate the impact of game-based learning on code reading in programming languages. We asked undergraduate students at the department of computer science at Virginia Tech to play with the game during Spring 2017 semester. The collected data analyzed, and students believe that Code Reading Dojo improves their code reading skills in Java and overall programming ability, in additions to help them find errors in their own program.
- CodeWorkout: Design and Implementation of an Online Drill-and-Practice System for Introductory ProgrammingPanamalai Murali, Krishnan (Virginia Tech, 2016-06-14)The massive rise in Computer Science enrollments in both traditional classroom courses and in Massively Open Online Courses (MOOCs) shows the enormous opportunities in engaging students to learn programming. While the number of students in CS courses continues to increase, there has been no concomitant increase in the number of instructors for such courses. This leads to a completely lopsided learning environment where the already-stretched instructor is pressed to spend more time on ancillary tasks like grading and course bookkeeping. CodeWorkout is an online drill-and-practice system with course management features that aims to address these issues. CodeWorkout hosts an online repository of programming questions that instructors can incorporate into their courses. It also provides instructors with a facility to create their own programming questions so that exercises can be tailored according to the needs of the class. CodeWorkout has an open gradual engagement model that allows students who are not enrolled in a course to use it. CodeWorkout also creates an open environment for instructors to collaborate by sharing exercises that they create. CodeWorkout has been used in four courses at Virginia Tech. It has been shown to significantly improve the student's skills in introductory programming through providing a number of online practice questions.
- Collecting Student Data for Accreditation AssessmentRingenbach, Michael (Virginia Tech, 2011-01-28)This paper seeks to identify one of the key problems faced by academic institutions seeking accreditation. The accreditation process requires academic institutions to conduct a self-study analyzing how well a given program is meeting the learning outcomes the accreditation board uses in its assessment. This self-study by schools often contains qualitative or subjective data and does not directly correlate the learning outcomes being measured to student performance. The lack of quantitative measurements at a granular level means that it is difficult for the academic institution to prove that it was effective in meeting a particular outcome. I propose in this paper a tool that is both efficient and effective in capturing quantitative data at the student level. The tool maps specific coursework to learning outcomes and shows how students performed towards that outcome over the duration of a particular course or program. Additionally, the data collected by the tool can be used to assess course and program design.
- A Context-Aware Dynamic Spectrum Access System for Spectrum Research and DevelopmentKumar, Saurav (Virginia Tech, 2024-01-03)Our hunger for data has grown tremendously over the years which has led to a demand for the increase in the available radio spectrum for communications. The Federal Communications Commission in the United States allowed for the sharing of the CBRS band (3550-3700 MHz) a few years ago. Since then, research has been done by both industry and academia to identify similar opportunities in other radio bands as well. This research is, however, being hampered due to a lack of experimental frameworks where the various aspects of spectrum sharing can be studied. To this end, we propose to develop an open-source spectrum access system that incorporates context awareness and multi-band operational support and serves as an RandD tool for the research community. We have developed a novel Prioritization Framework that takes the current operational context of each user into account to determine their relative priority, within or outside their user class/group, for transmission in the network. We also introduce a Policy Engine for the configuration and management of dynamic policies (or rules) for defining the relationships between the various forms of context information and their relative impact on a user's overall priority. We have performed several experiments to show how context awareness impacts the spectrum sharing efficiency and quality of service. Due to its modular and extensible nature, we expect that this tool will be used by researchers and policy-makers to implement their own policies and algorithms and test their efficacy in a simulated radio environment.
- Contextinator: Recreating the context lost amid information fragmentation on the webAhuja, Ankit (Virginia Tech, 2013-06-01)The web browser has emerged as a central workspace for information workers, where they make use of cloud-based applications to access their information. While this solution nicely supports access to their data from multiple devices, it presents a nightmare for organizing and coordinating data between tools for a single project. Information is typically scattered between various online tools, where storage and organization structures are replicated. Information workers are interrupted and have to switch between projects frequently. Once interrupted, resuming work on a project can be hard. To address this information fragmentation and the impact of work interruptions, I created Contextinator, a personal information manager for the web browser that lets information workers organize their work activity and information into projects. Contextinator assists in coordinating information for projects, thereby ameliorating information fragmentation for projects that live on the cloud. It assists information workers in context switching and resuming work after interruptions. In my the- sis, I describe the problem of information fragmentation in the cloud. I discuss the different areas of related work of Personal Information Management, the design of Contextinator and how it is grounded in previous research. I briefly discuss how Contextinator is implemented. I then present the results from my field-evaluation of Contextinator. Finally, I conclude by discussing future work in this research.
- Continuously Collecting Software Development Event Data As Students ProgramLuke, Joseph Abraham (Virginia Tech, 2015-06-19)Teaching good software development practices is difficult, both in theory and in practice. Time management and project organization are skills often left by the wayside by students too focused on the coding itself. Educational research has been invested in developing strategies to combat these bad habits. In order to provide better support for interventions discouraging bad development habits, more data about student development is needed. The purpose of this research is to design and implement software to collect data continuously as students work on programming projects and provide it in useful forms to instructors and researchers so that they may make headway in designing new curricula, assignments, and interventions that better help students to succeed. The DevEventTracker is a software system that interfaces with existing Web-CAT services to track student development data continuously, without any student effort. Development and compilation events are tracked within the Eclipse IDE through a plugin and sent to a Web-CAT server. Code snapshots corresponding to each event are also committed to a server-side repository. The system provides a dashboard as a set of instructor-visible web pages that display useful data in generated charts and tables. Data are presented in both class overview and individual student summaries. The system presented will enable future research in education and specifically in intervention development. Particularly, the system can be used to allow instructors to identify students who have a tendency to procrastinate and design more effective interventions.
- Design and Evaluation of a Web-Based Programming Tool to Improve the Introductory Computer Science ExperienceTilden, Daniel Steven (Virginia Tech, 2013-06-05)Introductory computer science courses can be notoriously difficult for students, especially those outside of the major. There are many reasons for this, but the programming software itself may play a significant role. To address this issue, we have developed Pythy, a web-based programming environment that allows students to write, execute, and test programming assignments from within the familiar interface of a web browser. In this work, we discuss various aspects of Pythy in detail, including the rationale behind its design, the system architecture on which it is built, and the various functions offered by the software. Next, we discuss an evaluation of Pythy\'s effectiveness during a programming course for non CS-majors offered at Virginia Tech, comparing it to a different software solution used in another programming course. Results suggest that Pythy was successful in several target areas, including making it easier to get started with programming and providing feedback about program behavior. Access log data from Pythy itself reveals details about how students used the system. Finally, we conclude with a summary of key contributions and suggest some potential future directions for the system.