Combinatorics, Computing And Complexity by