In figure skating competitions, the skaters must choose a program to perform before the judges. This project will investigate the problem of finding the optimal program for a figure skater. Aspects to consider include the set of possible elements that can be included, the sequence in which to perform them, and various constraints such as the total duration of the routine, the music that will be played, etc. Ideally the routine should be tailored to the strengths/weaknesses of the skater. We will consider and compare several different approaches to this problem, e.g., integer linear programming, constraint programming and machine learning.