I read this book as my introduction to computer science and discrete mathematics in my re-education as a physicist to a computer scientist. It was invaluable. I wouldn't say a light of heart should adopt this book. It is serious and starts each chapter slowly but rapidly gets into problems in the research domain. I found the topics perfect, and the extensive problems were a fantastic resource. The book easily serves the three roles of the title.<br><br>The writing is meticulous in both precision and style.