Protein engineering has rapidly developed into a powerful method for the optimization, alteration, and creation of protein functions. Current protein engineering methods fall into the category of either high-throughput directed evolution techniques, or engineering through the use of computational models of protein structure. Despite significant innovation in both of these categories, neither is capable of handling the most difficult and desirable protein engineering goals. The combination of these two categories is an area of active research, and the development and testing of combination methods is the focus of this dissertation. Chapters 2 and 3 describe the development of a computational framework for de novo protein design called SEWING (Structural Extension WIth Native-fragment Graphs). In contrast to existing methods of de novo design, which attempt to design proteins that match a designer-supplied target topology, SEWING generates large numbers of diverse protein structures. We show that this strategy is highly effective at creating diverse helical backbones. Experimental characterization of SEWING designs shows that the experimental structures match the design models with sub-angstrom root mean square deviation (RMSD). Chapter 3 extends this methodology to the creation of protein interfaces. Using this method, several de novo designed proteins are created that bind their designated target. Chapter 4 describes the combination of directed evolution and computational modeling through the improvement of directed evolution techniques. In this chapter, a web tool called SwiftLib is developed, which allows rapid generation of degenerate codon libraries. SwiftLib allows protein engineers to determine optimal degenerate codon primers for the incorporation of desired sequences, such as sequence profiles generated from computational modeling and evolutionary data. Together, these chapters outline the creation of tools for the engineering of protein functions, and provide additional evidence that computational modeling and evolutionary principles can be combined for the improvement of protein engineering methods.