learn how to apply common algorithms to the practical programming problems