Each exercise is carefully solved in full details, explaining the theory behind the solution with particular care for those issues that students often find difficult, or which are often neglected in other books on the subject. The exercises in this book never require extensive calculations but tend to be somewhat unusual and force the solver to think about the problem starting from first principles, rather than by analogy with some previously solved exercise.