Based on a postgraduate course that has been successfully taught for over 15 years, the underlying philosophy here is to give students an in-depth understanding of the relevant theory and how to put it into practice. This involves going into the theory in more detail than most books do, and also discussing its applications. It is assumed that readers, students and professionals alike are familiar with basic probability and statistics, as well as the matrix algebra needed for solving linear systems; however, some reminders on these are given in an appendix. Exercises are integrated throughout, and the appendix contains a review of the material.