In part-selection problems, parts are selected from catalogs and connected to meet the following problem requirements: functionality, specifications, and constraints. This paper formally defines the part-selection problem, enumerates a set of design properties that are useful during a search for a design solution, and provides an algorithm for solving part-selection problems based on a novel set of operators for manipulating portions of the design space.