Information technology is now a major catalyst for innovation across all aspects of human endeavor. Hence, it is vital to maintain the exponential performance growth of computing devices that has been the key enabler for information technology advances for more than four decades. In the past, semiconductor technology provided us with increasing transistor densities and decreasing power supplies, allowing us to improve performance without increasing energy consumption. However, the lack of power supply scaling in current and future technologies has made all computing systems energy limited. Improving energy efficiency is a defining challenge and the prerequisite to increasing the capabilities of all computing systems, from smartphones to warehouse-scale data-centers.  The goal of this project is to enable cost-effective customized computing by bridging the gap between high-level application development and the design of specialized hardware for energy efficient computing. Specialization is the prevailing approach for energy efficient computing, as customized units can eliminate the energy overheads of general-purpose cores. However, the complexity of designing and managing customized hardware is currently limiting the benefits from specialization to high-volume, slowly evolving applications. We will create domain specific synthesis tools that, given an application written in an easy-to-use, domain-specific programming language, will generate domain or application specific hardware: compute units and memory systems. The core of our approach to domain specific synthesis is a combination of domain specific languages to capture high-level application information, domain-specific optimization, parallelism and locality optimization, and hardware generation from parallelism and locality patterns.