Abstract The narrowing driven partial evaluation (NPE) [Vid96, AFV98, AV02] is a technique for the specialization of functional and functional logic programs. The original technique follows the online approach of partial evaluators, i.e., it performs the propagation of static values and the termination controls during the proper specialization process. On the other hand, the offline schemes usually proceed in two distinct phases: the binding time analysis, which propagates the static parameter values and determines the control strategy to be employed by adding annotations into the subject program, then the proper specialization phase, just obeys the introduced annotations. Offline partial evaluators are usually more efficient--but less precise--than online partial evaluators. The aim of this thesis is to improve the approach to offline narrowing driven partial evaluation of [Ram07]. In particular, the annotation procedure is enhanced and a more effective partial evaluator is developed in order to get better specialized and faster programs. As applications, we carry out the specialization of interpreters which, in agreement with the first Futamura projection [Fut71], is considered like a kind of program compilation. This application represents the first approach to the compilation by partial evaluation of functional logic programs. Additionally, we consider the specialization of a domain specific language whose goal is to generate programs for computerized numerical control of machines (CNC). From a theoretical point of view, the basic offline technique for higher order functional programs is extended through an approach which is known as defunctionalization. Furthermore, a polivariant transformation that improves the accuracy of specialization process is applied without to implement a real polivariant scheme. The resulting scheme has a good balance between efficiency and precision, thus improving previous proposals and providing a good starting point for the development of effective specialization tools for functional logical programs.