Reverse engineering is the process of building a CAD model and a manufacturing database for an existing part or prototype. The CAD model generation is accomplished in three steps, part digitizing, features extraction, and CAD modeling. Part digitization is accomplished by variety of contact and non-contact digitizers. Feature extraction is normally achieved by segmenting the digitized data and capturing surface features such as surface boundaries. Part modeling is accomplished by fitting variety of surfaces to the segmented data points. The result of reverse engineering is a computer model of the part in the form of a surface model or a solid model of the part. This paper reviews various techniques for part digitization, segmentation and surface modeling.