Computer science is the study of problems, problem-solving, and the solutions that come out of the problem-solving process. Given a problem, a computer scientist’s goal is to develop an algorithm, a step-by-step list of instructions for solving any instance of the problem that might arise. Algorithms are finite processes that if followed, will solve the problem, and Algorithms are solutions. This course provides the foundations of Computational Problem Solving. It focuses on principles and methods rather than on systems and tools thus providing transferable skills to any other domain.