The Internet of things is regarded as a very promising market in the next decade. However, batteries have become a critical obstacle due to their limited operating time and frequent maintenance. Energy harvesting techniques are proposed to relieve those problems and self-powered sensor nodes are attracting more and more attention. A typical self-powered sensor node consists of a power supply and computation system, and it collects energy from ambient power sources, such as solar, vibration, temperature difference, and RF energy. Several major design challenges exist in the present self-powered sensor nodes: 1) Limited output power: The typical generated power ranges from several mW to hundreds of uW, leading to a gap of several orders of magnitude between the harvested energy and the consumption of mainstream low power chips. 2) Frequent power failures: Lots of power failures occur frequently in self-powered systems, requiring efficient operations in an energy intermittent mode. 3) Hard to predict: The power profiles are determined by the ambient factors and hard to be predicted. This tutorial will provide several state-of-the-art techniques from circuit levels to system levels to handle the above challenges, including nonvolatile processor design, architecture exploration, software, and system optimization techniques for energy harvesting sensor platforms. Additionally, we demonstrate a smart ultraviolet monitoring system using CNN-based pattern recognition on the platform.