This document introduces competitive programming competitions like ACM ICPC and Google Code Jam. It discusses training platforms such as Codeforces and Kattis that contain practice problems. It categorizes common problem types like ad hoc, complete search, divide and conquer, greedy, and dynamic programming to help determine a problem's difficulty and appropriate solving algorithm. Key problem types are defined, with ad hoc being the easiest and complete search involving brute force searching the entire search space.