Does anyone know of an algorithm for computing pushouts in $\sf FinSet$, the category of finite sets and mappings?
That is, given finite sets $X$, $Y$ and $Z$ with maps (of sets) $f: X \to Z$ and $g: X \to Y$, is there an algorithm for computing the object $C$ and the maps from $Z$ to $C$ and $Y$ to $C$ which together form the pushout of the original diagram?