Algorithmic Combinatorics on Partial Words