Rachel is a Lecturer for Computer Science at Tennessee Technological University and currently pursuing a PhD in Engineering with a concentration in Computer Science. Her research interests include DevOps, data visualization, software engineering, and debugging. She is also a member of the Knowledge Discovery Lab and the Data Science and Analytics Collaboratory.
Prior to her employment at Tennessee Tech, she received her M.S. and B.S. in Computer Science at Miami University in Oxford, OH. Her M.S. thesis focused on the visualization of program slices. Her interests outside of Computer Science include gaming, soccer, cooking, tabletop RPGs and taking care of her three cats.
PhD in Engineering, 2022, Expected
Tennessee Tech University
MS in Computer Science, 2017
BS in Computer Science, 2016
This work in progress paper presents a course on DevOps which is a combination of software development skills and software operations skills. This new course is for sophomores and juniors in the computer science program who want to be prepared for professional software engineering careers. “Introduction to DevOps” Is a hands-on laboratory course that brings students through Git for source code management, Capybara for automated testing, AWS, Docker, and Ansible for automated virtual machine provisioning and configuration, and Jenkins for Continuous Integration. Unlike our current course offerings which primarily focus on the single developer context in a localized environment, this course prepares students for highly collaborative, team-based projects that use cloud resources to facilitate management of the software deployment pipeline. We developed this course based on feedback from our external advisory board and under consultation from a number of industrial partners. This is complementary to our current offerings in software engineering which focus on Agile software practices. In this paper we describe the core concepts, the design, learning experiences, technologies, and lessons learned through developing and conducting this course. In future work we hope to present student perceptions of learning and provide data collected through direct assessment of student outcomes.
Several approaches have been suggested for computing program slices based on different perspectives, including forward slicing, backward slicing, static slicing, and dynamic slicing. The applications of slicing are numerous, including testing, effort estimation, and impact analysis. Surprisingly, given the maturity of slicing, few approaches exist for visualizing slices. Here we present our research for visualizing large systems based on program slicing. In particular, we use treemaps to facilitate hierarchical, slicing-based navigation, we use bipartite graphs to facilitate visual impact analysis over a given variable or line of code, parallel coordinates to facilitate visual impact analysis over code blocks or variable groupings, and a text-based code browser to provide detailed context for the relevant visualizations. We believe our tools support various software maintenance tasks, including providing analysts an interactive visualization of the impact of potential changes, thus allowing developers to plan maintenance accordingly. We evaluate the research by assessing usability through a think aloud protocol and a heuristic evaluation. Our results indicate users could effectively complete the evaluation tasks we provided, and the visual idioms utilized in vizSlice were effective at communicating the underlying data to them. However, controls for these visualizations need improvement in both affordance and visibility. Regardless of any difficulties users experienced with vizSlice, users consistently rated the system positively on the measured heuristics. We provide insights on these results, future plans for improving vizSlice, and provide guidance for future research on visualizing program slices.