I. Introduction
II. Mathematical Preliminaries
III. Basic Definitions of SPNs
IV. Inference
V. Parameter Learning
VI. Structural Learning
VII. Applications
VIII. Software for SPNs
IX. Extensions of SPNs
X. Conclusion