Selected Publications

Computational Biology

I am currently working on a problem in computational biology in which we aim to characterize novel sequences of DNA, likely derived from ancient viruses, in the genomes of wild-caught Aedes aegypti mosquitoes. With my collaborator, Dr. Andrea Gloria-Soria, I am writing a computational tool that is able to locate these sequences in individual mosquito genomes. We are working on a paper describing the tool and some of our initial findings on a set of specimens from around the world.

In the past, I worked on algorithms and software for detecting riboswitches in genomic sequences and visualizing the growth of stromatoporoids.

A new approach for detecting riboswitches in DNA sequences (with C. Bhatiya, S. M. Johnson, J. D. Sheets, J. S. Thompson). Bionformatics 30(21), pp. 3012—3019, 2014.

Bringing extinct sponges to life: StromoGrow, a new program for modeling stromatoporoid growth (abstract/poster, with T. E. Masters and D. H. Goodwin). Geological Society of America Annual Meeting, Denver, Colorado, 2013.

Interdisciplinary Computer Science Education

Computer Science is a uniquely interdisciplinary field, as computing is now somehow involved in virtually everything we do. To empower everyone in the next generation to harness the power of computing, we need to meet students at least halfway.

In this spirit, introductory computing courses should demonstrate to students how computing has become a powerful mode of inquiry, and a vehicle of discovery, in a wide variety of disciplines. The courses should be inviting to students of the natural and social sciences, and the humanities, who increasingly benefit from an introduction to computational thinking, beyond the limited "black box" recipes often found in manuals and "Computing for X" books. So that students don't get stuck when they run out of recipes, the courses should engage students in computational problem solving, and lead them to discover the power of abstraction, efficiency, and data organization in the design of their solutions. Students learn the core principles, and experience the thrill of seeing their solutions come to life, by implementing their solutions as computer programs.

These were my goals when I wrote Discovering Computer Science. Unlike most introductory computer science textbooks, which are organized around programming language constructs, I deliberately lead with interdisciplinary problems and techniques. This orientation is more interesting to a more diverse audience, and more accurately reflects the role of programming in problem solving and discovery. A computational discovery does not, of course, originate in a programming language feature in search of an application. Rather, it starts with a compelling problem which is modeled and solved algorithmically, by leveraging abstraction and prior experience with similar problems. Only then is the solution implemented as a program.

Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming, Second Edition. Chapman & Hall/CRC Textbooks in Computing, Taylor & Francis Group, 2021. (The first edition was published in 2016.)

With largely the same goals, in my previous position at Denison University, I proposed a new interdisciplinary major in Data Analytics. A great committee of like-minded faculty from seven disciplines in the social and natural sciences collectively brought the program to life in 2016, and I served as its first Director.

Embracing the Liberal Arts in an Interdisciplinary Data Analytics Program. ACM SIGCSE Technical Symposium on Computer Science Education, 2019.

Online Algorithms

An online algorithm is designed to respond to input as it arrives in a stream rather than all at once like a "traditional" algorithm. For example, an online room scheduling algorithm would have to assign a room to each event as it "arrives" without knowing what events might need to be scheduled later. Online algorithms usually cannot come up with optimal solutions due to their lack of knowledge about the future. Instead, we try to design online algorithms whose performance, for all possible inputs, is provably within some small factor of that of an optimal algorithm that sees all of the input in advance.

Improved Upper Bounds for Online Malleable Job Scheduling (with N. Kell). Journal of Scheduling 18(4), pp. 393 —410, 2015.

Optimal Online Ring Routing (with K. R. Hutson). Networks 57(2), pp. 187—197, 2011.

Online Malleable Job Scheduling for m ≤ 3. Information Processing Letters 111(1), pp. 31—35, 2010.

Competitive Online Scheduling of Perfectly Malleable Jobs with Setup Times (with W. Mao). European Journal of Operational Research 187(3), pp. 1126—1142, 2008.