I recently hosted an episode of Software Engineering Radio called "Jennings Anderson and Amy Rose on Overture Maps"!

  • Home
  • Teaching
    • Overview
    • Algorithm Analysis
    • Document Engineering
  • Research
    • Overview
    • Papers
    • Presentations
  • Outreach
    • Software
    • Service
    • Blog
  • About
    • Biography
    • Schedule
    • Contact
    • Blog
    • Service
    • Papers
    • Presentations

Contents

  • Research Expertise
  • Featured Papers
  • Featured Presentations
  • Professional Service
  • Recent Posts
  • Media Appearances
  • Highlighted Courses
  • Software Engineering
  • Status Updates

Gregory M. Kapfhammer

Code
from rich.console import Console
console = Console()
console.print(
    ":rocket: Hi! I'm a researcher, teacher, podcaster, and software developer!"
)
🚀 Hi! I'm a researcher, teacher, podcaster, and software developer!

Innovating in technical areas such as software engineering and software testing, I teach courses, conduct research, write papers and a blog, give presentations, create software, and serve organizations. Working as an Associate Professor in the Department of Computer and Information Science at Allegheny College, I am an associate editor for the Journal of Software: Evolution and Process, an academic editor for the PeerJ Computer Science journal, a program committee member for conferences like the International Conference on Software Testing, Verification and Validation and the International Conference on Software Engineering, and a reviewer for journals like Transactions on Software Engineering and the Journal of Software Testing, Verification and Reliability. Along with media appearances on podcasts like Stack Overflow and Talk Python, I interview the world’s leading experts on software engineering as a co-host of Software Engineering Radio. You can learn more about me and my work by reading my biography, downloading my curriculum vitae, and subscribing to my mailing list.

Research Expertise

  • Database Testing: Automatically test relational database schemas

  • Flaky Tests: Find and fix unpredictable and harmful test cases

  • Mutation Testing: Using automatically seeded defects to evaluate tests

  • Regression Testing: Efficiently and effectively rerunning test suites

  • Web Testing: Detecting and repairing responsive web page layout

Explore all of my areas of research expertise

Featured Papers

Test flimsiness: Characterizing flakiness induced by mutation to the code under test

Proceedings of the 48th International Conference on Software Engineering

2026
Owain Parry, Gregory M. Kapfhammer, Michael Hilton, Phil McMinn

Beyond test flakiness: A manifesto for a holistic approach to test suite health

Proceedings of the 2nd International Flaky Tests Workshop

2025
Phil McMinn, Muhammad Firhard Roslan, Gregory M. Kapfhammer

Systemic flakiness: An empirical analysis of co-occurring flaky test failures

Proceedings of the 29th International Conference on Evaluation and Assessment in Software Engineering

2025
Owain Parry, Gregory M. Kapfhammer, Michael Hilton, Phil McMinn

Where tests fall short: Empirically analyzing oracle gaps in covered code

Proceedings of the 19th International Symposium on Empirical Software Engineering and Measurement

2025
Megan Maton, Gregory M. Kapfhammer, Phil McMinn

Exploring pseudo-testedness: Empirically evaluating extreme mutation testing at the statement level

Proceedings of the 35th International Conference on Software Maintenance and Evolution

2024
Megan Maton, Gregory M. Kapfhammer, Phil McMinn
No matching items

Read all of my research papers

Featured Presentations

Building and deploying course websites with Python, Quarto, and Mkdocs

PyCon Education Summit

2025
Alish Chhetri, Gregory M. Kapfhammer

Automated and configurable programming project checking with Chasten

PyCon Education Summit

2025
Daniel Bekele, Jaclyn Pham, Gregory M. Kapfhammer

Chasten your Python program: Configurable program analysis and linting with XPath

PyOhio

2025
Daniel Bekele, Jaclyn Pham, Gregory M. Kapfhammer

Up and running with GitHub, GitHub Classroom, and GitHub Actions

PyCon Education Summit

2025
Hemani Alaparthi, Gregory M. Kapfhammer

ExecExam: Streamlining Python assessments with automation and personalized feedback

PyCon Poster Symposium

2025
Hemani Alaparthi, Pallas-Athena Cain, Gregory M. Kapfhammer
No matching items

Review all of my research presentations

Professional Service

VenueRole(s)Year(s)
International Conference on Software Maintenance and EvolutionTool Demonstrations Program Committee2026 - 2025
International Flaky Tests WorkshopProgram Committee Member2026 - 2024
International Symposium on Software Testing and AnalysisProgram Committee Member, Tool Demonstrations Program Committee Member2026 - 2023
PeerJ Computer Science JournalAcademic Editor2026 - 2019
Journal of Software: Evolution and ProcessAssociate Editor, Reviewer2026 - 2012
No matching items

Investigate all of my professional service

Recent Posts

Insights from my Software Engineering Radio interview with Samuel Colvin

How does Pydantic support Python programming?

2025
Gregory M. Kapfhammer
2 min

Is slicing or mutation testing better at automatically identifying weaknesses in your test suite?

How can we best find the blind spots of our test suites?

2025
Gregory M. Kapfhammer
3 min

When flaky tests fail together: Empirical evidence for systemic flakiness

Flaky tests often cluster together with shared root causes!

2025
Gregory M. Kapfhammer
4 min

Insights from my Software Engineering Radio interview with Will McGugan

How do you build text-based user interfaces?

2025
Gregory M. Kapfhammer
3 min

Insights from my Software Engineering Radio interview with Eran Yahav

How does Tabnine automate the engineering process?

2025
Gregory M. Kapfhammer
3 min
No matching items

Read all of my blog posts

Media Appearances

EventVenueRole
"2025 Python Year in Review"Talk Python PodcastGuest
"Gregory Kapfhammer on Flaky Tests"Code with Jason PodcastGuest
"Jennings Anderson and Amy Rose on Overture Maps"Software Engineering RadioHost
"Kacper Łukawski on Qdrant Vector Database"Software Engineering RadioHost
"Samuel Colvin on the Pydantic Ecosystem"Software Engineering RadioHost
No matching items

Learn more by reading my professional biography

Highlighted Courses

  • 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

  • Operating Systems: Build and understand operating system components

  • Software Engineering: Team-based introduction to building software systems

Explore all of my teaching materials

Software Engineering

  • Cellveyor: Easily convey reports from Google Sheets to GitHub

  • Chasten: Configurable linting tool that uses XPath expressions

  • GatorGrade: Python front-end for the GatorGrader assessment tool

  • GatorGrader: Automated assessment for source code and writing

  • SchemaAnalyst: Data generation and mutation analysis for database schemas

Benefit from my open-source software

Status Updates

tao post

In the specific case of mathematics, formalization offers one potential source of selective friction: it requires significantly more effort to formalize a "proof" of an incorrect claim than to formalize the proof of a correct claim. And, as the experience with the Erdos problems has demonstrated, this friction is already sufficient to make the emergence of AI-generated "one-shot" solutions to such problems a net positive, by improving the signal-to-noise ratio of such solutions to acceptable levels.

But the current formalization framework is only set up to apply friction to completed proofs. A newly formed idea to solve a problem often falls well short of a full proof of that problem; it may offer a strategy for reducing that problem to some vaguely defined set of simpler sub-problems, but without the precision needed to be readily expressible in a language such as Lean. One can potentially work around this issue by introducing axioms to formalize any missing steps in such a strategy, or any heuristics or "cheats" that one is implementing to justify the argument, but such devices are also vulnerable for exploitation by an AI that has been directed to generate a formal proof at any cost, and so are not reliable sources of selective friction.

Perhaps a formal (or semi-formal) language for mathematical strategies, as opposed to mathematical proofs, will need to be developed in order to create sufficient selective friction for AI-generated mathematical ideation to be a net win for mathematics. (3/3)

Feb 23, 2026
tao post

With this model, we see the double-edged nature of AI-generated mathematics: this technology promises to massively increase the total number of new ideas, and moderately increase the total number of *good* new ideas; but at the same time, it will likely lower the average quality of ideas generated, decreasing the signal-to-noise ratio. So the net effect on the quantity (**) could be of either sign, depending on which of the above effects dominate.

So, is there a way to limit the negative effects in this model while retaining most of the positive ones? One possible solution is to introduce _selective friction_, making it harder (or less convenient) to publish a mediocre AI-generated idea than a promising one. One can see this philosophy in the design of programming languages, which often tend to promote a certain set of "good" programming practices by making them easy to implement in the language, while "bad" practices, while not completely prohibited, are made to be inconvenient to adopt in that language. This can be contrasted with the current implementation of AI tools, which are often designed to indiscriminately remove friction when converting an input to an output, regardless of the quality of the former. This indiscriminate frictionlessness will significantly increase (*), but at the expense of worsening (**) (a phenomenon now perjoratively referred to as "AI slop"), as previously unviable extremely low-effort ideas can now be converted into actual outputs. (In particular, many of the aforementioned selective friction features of programming languages are in the process of being erased by the powerful coding abilities of modern AI.) (2/3)

Feb 23, 2026
tao post

This is an expansion of a point I initially wrote in the context of a MathOverflow question https://mathoverflow.net/questions/487041/collaborative-repositories-on-open-problems/487065#487065, but also has relevance to the role of AI in activities such as mathematics where ideation is important.

It is commonly accepted that one of the impediments to further progress in mathematics is a shortage of new ideas. Naively, one can model this hypothesis by proposing that

(number of new ideas) (*)

is the key factor determining the rate of progress, and then try to support efforts to maximize the quantity (*).

However, in the era of increasingly large amounts of AI-generated mathematics, the _quality_ of these ideas becomes increasingly relevant. Only a small fraction of new ideas tend to be good and fruitful ones; a bad idea can actually impede progress by wasting more time than it saves. So, a more realistic model would be that it is the actually the product

(number of good new ideas) * (signal-to-noise ratio of the idea pool) (**)

that is the important factor which is worth maximizing. (This is still a massive oversimplification - for instance, it assumes a binary classification of ideas into "good" and "bad" - but will serve as a minimal toy model that suffices to illustrate the broader points that I wish to make here.) (1/3)

Feb 23, 2026
willmcgugan post

Well that was an adventure.

I optimized Toad's fuzzy file search to handle very large repositories. Like the Typescript repo which as > 84,000 files.

https://github.com/batrachianai/toad

#Python

Feb 21, 2026
mitchellh post

@lkanies yep. Like I like and get value out of these tools but why we gotta talk such extremes with poor examples

Feb 22, 2026
See more posts at Mastodon

GMK

Top