# Posts

Short essays, ideas, events, notes

### Informal introduction to the holonomy decomposition of transformation semigroups

The holonomy algorithm is the main method used in SgpDec for computational tools of the Krohn-Rhodes theory. The details of the algorithm might not be the easiest to grasp, but the underlying ideas are quite simple. Here is a short description of the general ideas used in the holonomy decomposition.

# Poetry of Programming - Puzzle-based Introduction to Functional Programming

The whole course content, tutorial notes, assignments can be found on GitHub.

# Publications

Peer reviewed journal papers, book chapters, conference proceedings

### Maximum likelihood estimates of pairwise rearrangement distances

Accurate estimation of evolutionary distances between taxa is important for many phylogenetic reconstruction methods. In the case of bacteria, distances can be estimated using a range of different evolutionary models, from single nucleotide polymorphisms to large-scale genome rearrangements. In the case of sequence evolution models (such as the Jukes-Cantor model and associated metric) have been used to correct pairwise distances. Similar correction methods for genome rearrangement processes are required to improve inference. Current attempts at correction fall into 3 categories: Empirical computational studies, Bayesian/MCMC approaches, and combinatorial approaches. Here we introduce a maximum likelihood estimator for the inversion distance between a pair of genomes, using the group-theoretic approach to modelling inversions introduced recently. This MLE functions as a corrected distance: in particular, we show that because of the way sequences of inversions interact with each other, it is quite possible for minimal distance and MLE distance to differently order the distances of two genomes from a third. This has obvious implications for the use of minimal distance in phylogeny reconstruction. The work also tackles the above problem allowing free rotation of the genome. Generally a frame of reference is locked, and all computation made accordingly. This work incorporates the action of the dihedral group so that distance estimates are free from any a priori frame of reference.
Journal for Theoretical Biology 10.1016/j.jtbi.2017.04.015

### Enumerating Transformation Semigroups

We describe general methods for enumerating subsemigroups of finite semigroups and techniques to improve the algorithmic efficiency of the calculations. As a particular application we use our algorithms to enumerate all transformation semigroups up to degree 4. Classification of these semigroups up to conjugacy, isomorphism and anti-isomorphism, by size and rank, provides a solid base for further investigations of transformation semigroups.
Semigroup Forum (accepted)

# Teaching

Due to the rapid changes in our technological societies the aims of teaching and the teaching process itself need to be rethought again and again. The response is twofold: 1. fast moving, rapidly deployed courses and 2. focusing on core knowledge versus ephemeral ideas and technologies. The challenge is that these two requirements might be in conflict.

Currently I teach at Akita International University.

## Courses I designed

• Poetry of Programming - puzzle based introduction to functional programming (MAT245). Course Information.

• Mathematics for the digital world (MAT240 Mathematics behind the technological society). Syllabus

• Calculus (MAT250) Single variable calculus up to the Fundamental Theorem of Calculus. Syllabus

• College Algebra (MAT150) From set theory up to $e^{\pi i}+1=0$.

• Statistics (MAT200)

## Previous courses

• Social Web Analytics

• Computational Complexity

• Discrete Mathematics

• Differential Calculus

• Semigroup Theory, Representation Theory (graduate courses)

• Formal Languages and Automata

• Linear Algebra

• Programming (C#)

• Design and Analysis of Algorithms

• Operating Systems, Shell Programming

• $\LaTeX$

• supervising MSc projects in Computer Science

• Artificial Life (guest lecture)

• Programming (C, Java)