Teaching the next generation of computer scientists