An introduction to computational combinatorics