Above all, I admire two characteristics of author's teaching method. First, he is specialized in Safety Critical systems, therefore system reliability is deeply rooted in his teachings and you will learn a great deal about how to think and design more reliable embedded systems. Second, he teach the concepts in evolutionary steps. Meaning, after introducing a topic, he will gradually introduce a better and more reliable way of doing the same thing. That will encourage the students to not settle down only for one way of implementation and will help them to think and seek a better option. I find that way of thinking useful.
On the flip side though, the author of the book assumes that you are already familiar with the C language itself. In that sense, the book’s title looks a bit misleading as one may think that the C language is also covered in the book. Thus, if you are a beginner and you don’t know the C language, this book is not a right place to start. But, after you finished your C courses, I recommend coming back to this book in order to learn about embedded software programming. There are plenty of juicy materials here.
The book uses 8051 micro-controllers to teach the Embedded SW Development. The hardware is not expensive and the software licences are mostly free for this type of micro-controllers. The book uses the hardware simulator, so if you don’t want to buy the hardware, you are good to go.
If you are just entering to the embedded programming world, 8051 family it is a good choice to start with. But, if you are already familiar with Embedded SW developing to some degree, I suggest reading the book and to learn the software architectures and design patters but do the coding and the exercises with some modern Embedded micro-controllers like stm32 family (ARM based microcontrollers by ST-microelectronic). It will take more time, and more self-study. But, in my opinion, it will worth it.
If you are a person who is a very beginner, it’s not a complete source and you need other material to learn more about Embedded Systems, but it’s one of the book that I highly recommend reading it. It’s easy to read and it’s better to go through it cover to cover which includes plenty of code examples. Most important of all, the book teaches the fundamentals of how to think when it’s time to do reliable embedded software design.