The book is defineded into two major parts: foundation and extensions. The firs then chapters (foundations) represent the fundamental concepts upon which students bulid to understand more advanced topics. In the next seven chapters (extensions) we explore different advanced topics. To understand the other structural aspects of the book, you have to understand the compromises that I made to achieve the competing goals of writing a book that is: - Pedagogically sound - Easy to read - Full of helpful examples - Flexible