Problem Solving and Logic Design