I recently hosted an episode of Software Engineering Radio called "Eran Yahav on the Tabnine AI Coding Assistant"!

  • Home
  • Teaching
    • Overview
    • Data Abstraction
    • Operating Systems
  • Research
    • Overview
    • Papers
    • Presentations
  • Outreach
    • Software
    • Service
    • Blog
  • About
    • Biography
    • Schedule
    • Contact
    • Blog
    • Service
    • Papers
    • Presentations

Contents

  • Research
    • Software
    • Resources
    • Papers
    • Presentations
    • Replication
  • Teaching
    • Software
    • Platforms
    • Courses
  • Open-Source
    • Configurations
    • Defects and Discussions
    • Prior Work

Software

Code
from rich.console import Console
console = Console()
count = count_software()
console.print(
      f":rocket: Here are {count} software projects to which I have contributed!"
)
🚀 Here are 129 software projects to which I have contributed!

Research

Software

  • afluent: Pytest plugin to support automated fault localization
  • avmf: Extensible framework for the search-based alternating variable method
  • cannier-framework: Flaky test detection with re-running and machine learning
  • expose: Doubling experiments to infer actual-worst-case time complexity
  • kanonizo: Effective automated regression test suite prioritization for JUnit
  • major: Easy and scalable mutation testing for the Java programming language
  • mrstudyr: Retrospectively study effectiveness of mutation testing techniques
  • pseudosweep: Find pseudo-tested statements and methods in Java programs
  • pytest-cannier: Pytest plugin to characterize Pytest test suites
  • redecheck: Automated checking of responsively designed web pages
  • schemaanalyst: Data generation and mutation analysis for database schemas
  • testinspect: Pytest plugin to characterize Pytest test suites
  • showflakes: Pytest plugin for automatically finding flaky tests
  • tada: Automated order-of-growth analysis for Python functions
  • viser: Automated visual verification of responsive layout failure reports
Research Connection

Many, but not all, of these software tools are connected to the research papers and research presentations published by me and my research collaborators. For instance, the papers (Kinneer et al. 2015a) and (Kinneer et al. 2015b) both describe experiments with the expose tool. As additional examples, the testinspect and showflakes tools both supported research that resulted in the publication of (Parry et al. 2022a) and the schemaanalyst tool enabled the publication of papers like (Alsharif, Kapfhammer, and McMinn 2020) . It is also important to note that, while I played an active role in the conception, documentation, use, and experimental evaluation of each of these research prototypes, I normally was not the lead developer of the tool. See the contributor list in each project’s GitHub repository for contributor details!

Resources

  • avm-bibliography: References on search-based methods
  • curriculum-vitae: A curriculum vitae using moderncv and moderntimeline
  • flaky-tests-bibliography: References on flaky test cases
  • new-paper: Template for writing a research paper in LaTeX
  • python-talk-abstracts: Details about my Python-related presentations
  • research-bibliography: References for all of my research deliverables
  • schemaanalyst-bibliography: References on testing database applications
Research Connection

Interested in conducting research that builds or cites on the research papers and research presentations published by me and my research collaborators? You can check out these resources for abstracts of conference talks, BiBTeX references to papers, and templates for writing a research paper or a curriculum vitae. For instance, the avm-bibliography documents the research articles cited in the (McMinn and Kapfhammer 2016) paper that describes the avmf tool.

Papers

  • avmframework-paper: Source code for a research paper at SSBSE 2016
  • ast2016-paper: Source code for a research paper at AST 2016
  • icsme2016-mrstudyrtool-paper: Source code for a tool paper at ICSME 2016
  • icsme2016-satool-paper: Source code for a tool paper at ICSME 2016
  • sbst2016-paper: Source code for a research paper at SBST 2016
  • seke2015-paper: Source code for a research paper at SEKE 2015
  • seke2015-tool-paper: Source code for a tool paper at SEKE 2015
  • per2012-paper: Source code for a research paper in the PER journal
Research Connection

While I don’t release the LaTeX source code of most of the research papers that my research collaborators and I publish, I’ve made the GitHub repository of select papers publicly available. For instance, the source code that results in the paper (McMinn, Kapfhammer, and Wright 2016) is in the gkapfham/ast2016-paper GitHub repository. Check it out to see how we structure papers!

Presentations

  • pyohio2021-presentation: Presentation slides the PyOhio 2021 talk
  • pycon2019-functionfiasco-poster: Presentation slides for a PyCon 2019 talk
  • pycon2019-gatorgrouper-poster: Poster for PyCon 2019 session
  • pyohio2019-presentation: Presentation slides for a PyOhio 2019 talk
  • pygotham2018-presentation: Presentation slides for a PyGotham 2018 talk
  • pyohio2018-presentation: Presentation slides for a PyOhio 2018 talk
  • icsme2016-presentation: Presentation slides for an ICSME 2016 talk
  • icsme2016-tool-presentation: Presentation slides for an ICSME 2016 talk
  • ssbse2016-presentation: Presentation slides an SSBSE 2016 talk
  • sbst2016-presentation: Presentation slides an SBST 2016 talk
  • allegheny2015-presentation: Presentation slides an Allegheny College talk
  • seke2015-panel-presentation: Presentation slides a SEKE 2015 panel talk
  • seke2015-presentation: Presentation slides a SEKE 2015 talk
  • qsic2014-presentation: Presentation slides a QSIC 2014 talk
Research Connection

Did you know that I use LaTeX, JavaScript, Markdown, and other programming languages to create many of research presentations? By studying the source code for presentations like (Kapfhammer 2021a) and (Kapfhammer 2021b) you can see how we create and layout the graphical content! My colleagues and I have also release the source code for the presentations that accompany select research papers, like (McCurdy, McMinn, and Kapfhammer 2016) .

Replication

  • cannier-experiment: Data and analysis code for an ESE 2023 paper
  • domino-replicate: Data and analysis code for an ICST 2018 paper
  • flake16-framework: Data, analysis, and tooling for an ICST 2022 paper
  • flaky-test-survey-replication-package: Code for an ICSE-SEIP 2022 paper
  • imdetect-replicate: Data and analysis code for a TSE 2019 paper
  • jstvr-webpages: Experimental subjects for a JSTVR 2020 paper
  • showflakes-framework: Data and analysis code for an AST 2022 paper
  • sticcer-replicate: Data and analysis code for an ICST 2020 paper
  • vmutation-replicate: Data and analysis code for an AST 2016 paper
Research Connection

Whenever possible, my collaborators and I publish replication packages to support our research papers and research presentations. For instance, you can review all of the survey data from (Parry et al. 2022b) and try out the tooling used to run the experiments that we report on in (Alsharif, Kapfhammer, and McMinn 2020) . Check the above GitHub repositories for more details!

Teaching

Software

  • cellveyor: Easily convey reports from Google Sheets to GitHub
  • chasten: Configurable linting tool that uses XPath expressions
  • dockagator: Docker container and infrastructure for GatorGrader
  • execexam: Run executable examinations to assess programming skills
  • gatorgrade: Python front-end for the GatorGrader assessment tool
  • gatorgrader: Automated assessment for source code and writing
  • gatorgradle: Gradle plugin for efficient use of GatorGrader
  • gatorgrouper: Group formation tool for team-based courses
  • reporover: Easily manage components in GitHub repositories
  • sheetshuttle: Tool for data transfer between Google Sheets and GitHub
  • seed: Analyzer and displayer of responses to the SEED survey
Teaching Connection

My students, colleagues, and I create and maintain several tools that support the automated assessment of the source code and technical writing that students complete as part of a course project. You can learn more about the tools that we have implemented and deployed by checking out presentations like (Kapfhammer 2018) and (Kapfhammer 2019) . Check out the above GitHub repositories for details about how to use these tools in your teaching!

Platforms

  • Algorithm Analysis: Implement and evaluate correct and efficient algorithms
  • Data Abstraction: Build and manipulate correct and efficient data structures
  • Discrete Structures: Clearly connect mathematics to Python programming
  • Developer Development: Team-based introduction to building software systems
  • Operating Systems: Build and understand operating system components
Teaching Connection

Please visit the web site for each of my course platforms to learn more about the specific technologies that we use to deploy each site that I use for teaching.

Courses

  • cs102F2020: Course content for Computer Science 102 Fall 2020
  • cs302F2020: Course content for Computer Science 302 Fall 2020
  • cs100S2020: Course content for Computer Science 100 Spring 2020
  • cs203S2020: Course content for Computer Science 203 Spring 2020
  • cs100F2019: Course content for Computer Science 100 Fall 2019
  • cs101F2019: Course content for Computer Science 101 Fall 2019
  • cs203S2019: Course content for Computer Science 203 Spring 2019
  • cs302S2019: Course content for Computer Science 302 Spring 2019
  • cs481S2019: Course content for Computer Science 481 Spring 2019
  • cs100F2018: Course content for Computer Science 100 Fall 2018
  • cs101F2018: Course content for Computer Science 101 Fall 2018
  • cs103S2018: Course content for Computer Science 103 Spring 2018
  • cs112S2018: Course content for Computer Science 112 Spring 2018
  • cs111F2017: Course content for Computer Science 111 Fall 2017
  • cs280F2017: Course content for Computer Science 280 Fall 2017
  • cs600F2017: Course content for Computer Science 600 Fall 2017
  • cs111S2017: Course content for Computer Science 111 Spring 2017
  • fs102S2017: Course content for First-Year/Sophomore 102 Spring 2017
  • cs111F2016: Course content for Computer Science 111 Fall 2016
  • cs112F2016: Course content for Computer Science 112 Fall 2016
  • cs111S2016: Course content for Computer Science 111 Spring 2016
  • cs441S2016: Course content for Computer Science 441 Spring 2016
  • cs111F2015: Course content for Computer Science 111 Fall 2015
  • cs280F2015: Course content for Computer Science 280 Fall 2015
Teaching Connection

Prior to developing course platforms for each of the classes that I teach, I created GitHub repositories and/or organizations for every course and linked to them from my professional web site’s teaching page. While I no longer maintain out-of-date course content and instead encourage learners to visit my course platforms, you may contact me with your request for old materials.

Open-Source

Configurations

  • dotfiles: Configuration files for my development environment
  • nixos: Configuration files for the NixOS Linux distribution
  • tmuxinators: Configuration files for the terminal multiplexer
  • vim-vitamin-onec: Dark color scheme for Vim and Neovim
Software Connection

I aim to have a well-documented set of software tools that I run on the laptop that I use for all of my professional activities. I hope that some of these configurations can help you to setup your own workstation for teaching, research, and software engineering. Checkout my configuration of NixOS!

Defects and Discussions

  • artur-shaik/vim-javacomplete2 Issue #277: Errors when starting Vim …
  • asdf-vm/asdf-nodejs Issue #277: bug: Cannot create directory …
  • education/classroom #1117: Internal Server Error 500 When Accessing …
  • education/classroom #1543: Students suddenly cannot import repo …
  • git-lfs/git-lfs #3474: Installation in Ubuntu is not working
  • junegunn/fzf Issue #712: Setting foreground without background
  • kshenoy/vim-signature Issue #164: Special characters for markers?
  • lervag/vimtex Issue #176: Latexmk crashes when loading second LaTeX file
  • lervag/vimtex Issue #177: Many Zathura windows in a multi-file project
  • lervag/vimtex Issue #178: Second MuPDF window in a multi-file project
  • lervag/vimtex Issue #181: Forward search not working with old Zathura
  • lervag/vimtex Issue #312: Additional MuPDF window on forward search
  • lervag/vimtex Issue #762: BibTeX reference completion crashes with …
  • lervag/vimtex Issue #903: Restarting continuous compilation breaks PDF …
  • ludovicchabant/vim-gutentags Issue #168: Error when deoplete installed
  • ludovicchabant/vim-gutentags Issue #178: Halt on exit
  • ncm2/ncm2-jedi Issue #9: AttributeError: module ‘jedi’ has no attribute ‘Script’
  • neovim/neovim Issue #6204: Using FZF turns off relativenumber
  • ms-jpq/coq_nvim Issue #264: Neovim 0.5.0 Crashes with segmentation fault …
  • neovim/neovim Issue #8775: Version 0.3.2 interface deranged
  • pypa/pipenv Issue #3247: pipenv –three fails
  • quarto-dev/quarto-cli Discussion #5900: Is is possible to avoid the flash …
  • spookylukey/pyastgrep Discussion #18: Using pyastgrep as a library
  • Shougo/deoplete.nvim #500: nvim source deoplete/util.vim slow
  • Shougo/deoplete.nvim #508: Deoplete.nvim does not provide completions …
  • welle/tmux-complete.vim Issue #63: Tmux completion no longer works
  • vim-airline/vim-airline #1631: Missing spaces in tabline
  • w0rp/ale Issue #182: R support
Software Connection

Whenever I can do so, I participate in the maintenance and enhancement of open-software software tools by reporting defects and participating in discussions. Along with documenting my software adventures, I aim for these notes to help and encourage the maintainers of open-source software.

Prior Work

  • gelations: Test suite prioritization with order-based genetic algorithms
  • modificare: Reproducible experimentation with regression testing techniques
  • proteja: Easy-to-use techniques for test suite reduction and prioritization
  • raise: Comprehensive test suite execution and management
Software Connection

Although I no longer maintain any of these software tools, I’m glad to make them available as a history of prior work and as a source of inspiration and ideas for software engineers.

References

Alsharif, Abdullah, Gregory M. Kapfhammer, and Phil McMinn. 2020. “STICCER: Fast and Effective Database Test Suite Reduction Through Merging of Similar Test Cases.” In Proceedings of the 13th International Conference on Software Testing, Verification and Validation.
Kapfhammer, Gregory M. 2018. “Using GitHub, Travis CI, and Python to Introduce Collaborative Software Development.” PyCon Education Summit.
———. 2019. “Using Python and GitHub for Team Formation and Assessment.” PyCon Poster Symposium.
———. 2021a. “Committing to Writing Good Commit Messages: Supporting the Creation of Human- and Machine-Readable Commit Messages with Python.” PyCon Lightning Talk Session.
———. 2021b. “Type Annotations in Python: Terribly Intimidating or Tremendously Informative?” PyOhio.
Kinneer, Cody, Gregory M. Kapfhammer, Chris J. Wright, and Phil McMinn. 2015a. “Automatically Evaluating the Efficiency of Search-Based Test Data Generation for Relational Database Schemas.” In Proceedings of the 27th International Conference on Software Engineering and Knowledge Engineering.
———. 2015b. “ExpOse: Inferring Worst-Case Time Complexity by Automatic Empirical Study.” In Proceedings of the 27th International Conference on Software Engineering and Knowledge Engineering.
McCurdy, Colton J., Phil McMinn, and Gregory M. Kapfhammer. 2016. “Mrstudyr: Retrospectively Studying the Effectiveness of Mutant Reduction Techniques.” In Proceedings of the 32nd International Conference on Software Maintenance and Evolution.
McMinn, Phil, and Gregory M. Kapfhammer. 2016. “AVMf: An Open-Source Framework and Implementation of the Alternating Variable Method.” In Proceedings of the 8th International Symposium on Search-Based Software Engineering.
McMinn, Phil, Gregory M. Kapfhammer, and Chris J. Wright. 2016. “Virtual Mutation Analysis of Relational Database Schemas.” In Proceedings of the 11th International Workshop on Automation of Software Test.
Parry, Owain, Gregory M. Kapfhammer, Michael Hilton, and Phil McMinn. 2022a. “Evaluating Features for Machine Learning Detection of Order- and Non-Order-Dependent Flaky Tests.” In Proceedings of the 15th International Conference on Software Testing, Verification and Validation.
———. 2022b. “Surveying the Developer Experience of Flaky Tests.” In Proceedings of the 44th International Conference on Software Engineering – Software Engineering in Practice Track.

GMK

Top