Probabilistic programming languages combine programming languages with probabilistic primitives as well as general purpose probabilistic inference techniques. They thus facilitate constructing and querying complex probabilistic models. This tutorial provides a gentle introduction to the field through a number of core probabilistic programming concepts. It focuses on probabilistic logic programming (PLP), but also connects to related areas such as statistical relational learning and probabilistic databases. The tutorial illustrates the concepts through examples, discusses the key ideas underlying inference in PLP, and touches upon parameter learning, language extensions, and applications in areas such as bioinformatics, object tracking and i...