This course introduces the student to different heuristic techniques that aid programmers and computer scientists in solving problems. The course uses classical math and word problems for generating potential solutions to ''real-life'' problems encountered in the profession, and problem solving in teams. Topics covered include: Errors in reasoning; verbal reasoning; analogy problems; heuristics; mathematical word problems; analysis of trends; lateral thinking; deductive and hypothetical reasoning; computational problem solving; problem solving in-the-large; generating, implementing, and evaluating solutions; discrete mathematics, statistics; interpersonal problem solving.