As someone who wanted to both learn more about graph theory and also increase problem skills related to combinatorics, this book was extremely helpful for fulfilling that purpose, as it contains both a breadth and depth of graph theory content and examples. I thought that the book was very challenging, which was good for me, as it forced me to understand all of the concepts more deeply before moving on to a concept that builds off of that previous concept, so it really allowed me to learn much more effectively. Chapter 1 effectively covers the basics of graph theory and introduces some fundamental proof techniques employed in graph theory. This chapter was both detailed enough for me to understand the basic definitions and succinct enough for me to see the big picture behind graph theory. Although the chapter progressed at a fast pace, I thought that that was beneficial, as it motivated me to work out some of the examples on my own and understand the concepts on an intuitive level before moving on to further sections. I really appreciated the long problem set at the end of Chapter 1, as it allowed me to test out my knowledge of the concepts in many ways, which was extremely beneficial for learning retention and intuition. I also really enjoyed Chapter 6, which focuses on extremal graph theory. I always knew generally what Turan's theorem was, but only after I read this chapter did I really understand what it really means. I thought the motivation behind the theorem was explained very clearly, with a good diagram to supplement my learning; I believe the presentation of the theorem was complemented very well by first explaining this background. I liked reading through Chapter 8, as again, the background was explained well, which made the explanation of Ramsey's theorem and its generalization more motivated and clear. Chapter 8 was also nice due to its problem set, as I particularly enjoyed working through the more challenging problems (about the latter half of the problem set), as they involved using lots of creativity, and pushed me to apply what I learned about Ramsey theory in sometimes unexpected ways, which I really appreciated; this resulted in me learning a lot about not only the theory, but also the intuition and thinking that form the basis behind Ramsey's theorem and theory. I also thought reading through the appendices was a very worthwhile experience, and some of the problems were real gems; for example, Appendix A Problem 14; it was very surprising to see a natural logarithm pop up in a seemingly simple graph theory problem (although the problem turned out to be very difficult). I also appreciated Appendix B for examining graph theory through the lens of math beyond high school; it provided a new and refreshing take on the subject. Lastly, I thought the solutions were well-written. In general, they were short enough for me to be able to work some details out on my own, but also detailed enough for me to understand how to solve the problem if I really did not have any idea how to approach it. Moreover, I noticed that often when I solve a problem, the solutions have a more clever or terse method than mine, so either way, I gained a lot of knowledge and problem solving skills from reading the solutions. Overall, I think this book is great for learning graph theory in a problem solving framework and is a fun challenge for anyone who is interested in combinatorics.