This book is written as a textbook for educational programs at colleges and universities. It can also be used by IoT (Internet of Things) vendors and service providers for training their program developers. The authors have used an immersive ‘hands on’ approach, similar to the one adopted in the companion book, Cloud Computing: A Hands-on Approach, to help readers gain expertise in developing working code for real-world IoT applications. It is organised into three main parts. Part I covers the building blocks of Internet of Things (IoT) and their characteristics. Domain specific IoT and their real-world applications are described along with a generic design methodology and an IoT system management approach using NETCONF-YANG. Part II introduces the reader to the programming aspects of IoT with a view to developing rapid prototypes of complex IoT applications. A primer on Python, the programming language used in this book, is included to bring readers to a common level of expertise. Packages, frameworks and cloud services including WAMP-AutoBahn, Xively cloud and Amazon Web Services that can be used to develop IoT systems are described. The Raspberry Pi device has been chosen for the examples in this book. Case studies with complete source code for various IoT domains such as home automation, smart environment, smart cities, logistics, retail, smart energy, smart agriculture, industrial control and smart health are described. Part III introduces the reader to advanced topics in IoT, including IoT data analytics and tools for IoT. Case studies on collecting and analyzing data generated by IoT in the cloud are described.