This document provides an overview of reconfigurable computing and field programmable gate arrays (FPGAs). It discusses the history and flexibility advantages of FPGAs compared to application-specific integrated circuits (ASICs) and general purpose processors (GPPs). The document outlines FPGA architecture including logic blocks, interconnect networks, memory and digital signal processing blocks. It also covers FPGA programming technologies, data flow graphs, and considerations for implementing algorithms on FPGAs which requires a codesign approach.