Starting with the concepts of data flow and concurrent programming, the authors then cover the development of state machines, event programming and consumer producer systems. This book will help undergraduate and graduate students learn how to identify the most suitable design patterns depending on the application, and how to implement them in conjunction with data acquisition and instrumentation control systems.