Discussion of discrete structures frequently encountered in computer science and engineering, with an emphasis in problem solving skills and algorithms. Topics include set theory, proof techniques, graphs and trees, functions, recursive functions and procedures, inductively defined sets, grammars, equivalence, inductive proof, counting, discrete probability, and their applications to computing problems.