Just published "Laws for software engineers," a compilation of software and systems design adages I've found valuable, from Chesterton's Fence to Zawinski's Law.
What's missing?
I recently hosted an episode of Software Engineering Radio called "Goran Petrovic on Mutation Testing at Google"!
🚀 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. You can learn more about me and my work by reading my biography, downloading my curriculum vitae, and subscribing to my mailing list.
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
Read all of my research papers
Review all of my research presentations
Venue | Role(s) | Year(s) |
---|---|---|
International Flaky Tests Workshop | Program Committee Member | 2025 - 2024 |
International Symposium on Software Testing and Analysis | Tool Demonstrations Program Committee | 2025 - 2024 |
PeerJ Computer Science Journal | Academic Editor | 2025 - 2019 |
Journal of Software: Evolution and Process | Associate Editor, Reviewer | 2025 - 2012 |
International Workshop on Mutation Analysis | Program Committee Member | 2025 - 2010 |
Investigate all of my professional service
Read all of my blog posts
Learn more by reading my professional biography
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
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
Just published "Laws for software engineers," a compilation of software and systems design adages I've found valuable, from Chesterton's Fence to Zawinski's Law.
What's missing?
I absolutely love the silly little things they do at Jazz concerts:
1. The fakeout endings, where if you clap enough, they come back for one last track
2. The main artists announcing the names of everyone supporting for applause, but never their own name
3. The cold starts where they describe what they are playing after the first two tracks
I'm looking for a #FOSS alternative to live surveys like those offered at menti.com by mentimeter.
My use case: while presenting on stage, during a public speaking I would like to ask my audience (100-500 people) some questions. The summarized answers should be visible live on my computer, so that I can show it to the audience.
Any ideas?
🚀 Boosts welcome!
The CFP due dates for both @djangocon and @pyohio are ~2.5 weeks away and fast approaching. I should probably get working on those outlines if I want to get a proposal ready in time.
Today, it is increasingly commonplace for human mathematicians to also outsource symbolic tasks in such fields as linear algebra, differential equations, or group theory to modern computer algebra systems. We still place great emphasis in our math classes on getting students to perform these tasks manually, in order to build a robust mathematical intuition in these areas (and to allow them to still be able to solve problems when such systems are unavailable or unsuitable); but once they have enough expertise, they can profitably take advantage of these sophisticated tools, as they can use that expertise to perform a number of "sanity checks" to inspect and debug the output of such tools.
With the advances in large language models and formal proof assistants, it will soon become possible to also automate other tedious mathematical tasks, such as checking all the cases of a routine but combinatorially complex argument, searching for the best "standard" construction or counterexample for a given inequality, or performing a thorough literature review for a given problem. To be usable in research applications, though, enough formal verification will need to be in place that one does not have to perform extensive proofreading and testing of the automated output. (2/3)