Peter OhmannAssistant Professor of Computer Science at the
College of St. Benedict / St. John's University Projects
PublicationsFull publication listPlease see my Google Scholar page. Selected/Upcoming conference preprintsProgram coverage customization selectively adds instrumentation to a compiled computer program so that a limited amount of directly observed data can be used to infer other program coverage information after a run. A good instrumentation plan can reduce run-time overheads while still giving software developers the information they need. Unfortunately, optimal coverage planning is NP-hard, limiting either the quality of heuristic plans or the sizes of programs that can be instrumented optimally. We exploit the monotonicity property of feasible instrumentations to formulate this problem as an intraprocedural set covering problem. Our formulation has an exponential number of constraints, and we design a polynomial-time separation algorithm to incrementally add the necessary subset of these inequalities. Our approach reduces expected run-time probing costs compared with existing methods, offers a guarantee of the optimality of the instrumentation, and has compilation-time overhead suitable for wide practical use. Assessment of student knowledge is a crucial and challenging part
of course design. Especially in computer science courses in the United States,
written examinations are very common. While written exams offer a number of
advantages in convenience and familiarity, they are also inflexible and prone
to question misinterpretation. In contrast to written tests, oral exams
offer the prospect of an interactive conversation where students can express
their knowledge in a variety of ways while asking clarifying questions. Debugging is difficult. When software fails in production, debugging is even
harder, as failure reports usually provide only an incomplete picture of the
failing execution. We present a system that answers control-flow queries
posed by developers as formal languages, indicating whether the query
expresses control flow that is possible or impossible for a given failure
report. We consider three separate approaches that trade off precision,
expressiveness for failure constraints, and scalability. We also introduce a
new subclass of regular languages, the unreliable trace languages, which are
particularly suited to answering control-flow queries in polynomial time. Our
system answers queries remarkably efficiently when we encode failure
constraints and user queries entirely as unreliable trace languages. [ASE 2016a] Lightweight Control-Flow Instrumentation and Postmortem Analysis in Support of Debugging Extended Journal Version
This is an extended journal version of our
ASE 2013 paper which was
awarded an ACM SIGSOFT Distinguished Paper Award. PhilosophyI have also done some research in philosophy, primarily focused on the Modern period. I have posted a draft of the first few sections of an in-progress paper on the issue of numerical identify in Immanuel Kant's critical philosophy. You can find the draft here. |