Driven by recent innovations in Field-Programmable Gate Arrays (FPGAs), reconfigurable computing offers unique ways to accelerate key algorithms. FPGAs offer a programmable logic fabric that provides the necessary hardware and communication assets to exploit parallelism opportunities arising in various algorithms. By mapping algorithms directly into programmable logic, FPGAs accelerators can deliver 10X-100X performance increases over generic processors for a large range of application domains. The lecture notes describe FPGA architectures, reconfigurable systems, languages (Verilog and SystemC) and design tools. These lecture show a class of algorithmic techniques (e.g., dynamic programming) that are particularly attractive targets for reconfigurable computing. Mapping specific algorithms from different domains is also described. These include computer vision, image and signal processing, network security, and bioinformatics algorithms. The class notes includes lab and tutorials using...