Author: Rod Stephens
Publisher: Microsoft Press, 2011
Aimed at: Beginners
Pros: An overview of .NET
Cons: Not suitable for the beginner
Reviewed by: Mike James
A book for beginners that introduces computing ideas using .NET technologies seems like a good idea, but you have to be careful what you wish for.
What exactly you think of this book depends very much on who you think the audience is. It does seems to be aimed at the complete beginner, as proved by the fact that it is provided as introductory reading material, in ebook form, to a number of other Microsoft Press books that attempt to teach programming to the complete beginner.
The book starts off well with a look at the basic ideas of computer hardware. After a survey of the types of computer on the market - laptops, servers etc - it moves on to consider what makes a fast computer, then it explains the standard components - data storage, flash drives, RAM, DVD and networks. Each topic is covered at a different depth and you get the feeling that it is all a mad rush to name as many ideas as possible.
Chapter 2 indicates the main problem with this book - it's about multiprocessing. Now multiprocessing is a really difficult topic if you are going to do more than just say it exists and this is chapter 2 in a book aimed at beginners. The discussion is fairly easy to understand - Moore's law, multi-tasking, multi-processor, multi-core all introduced in an easy-to-understand way. Next we have race conditions, locks and deadlock and the Task Parallel Library. The TPL is an interesting piece of technology, but I'm not sure it belongs in a beginner's book.
Next we move on to a chapter on programming environments, which describes compilers v interpreters and virtual machines. Then we have a description of Visual Studio, which reads like a product promo complete with a list of product features.
Chapter 4 has a discussion of the sorts of UI components you will encounter in using Windows - menus, dialog boxes, ribbons, toolbars and so on. You have to ask why? If the reader really is such a beginner that they don't understand menus and toolbars, why did the book tackle multitasking in Chapter 2? It doesn't hang together. You might be able to justify it as a lesson in UI design, but this is still too early in a book that hasn't introduced a single line of code or explained anything about how a UI is created.
Chapter 5 continues the UI theme by focusing on controls - remember this is a book that hasn't explained anything about programming so far. After a brief introduction it lists all the controls available in Windows Forms and then repeats the task for WPF. What possible value could this have for a beginner?
The next chapter goes on to explain fairly advanced ideas without actually introducing programming. It lists the standard data types and introduces arrays, enumerations, structs and classes along with some C# and VB code that works with them. Then it explains the difference between value and reference types, which leaves me lost for words. At this point the chapter is reading more like an explanation of how .NET languages work to a programmer familiar with another technology rather than something aimed at the beginner. It continues in the same way with such technical topics as scope, lifetime, accessibility and type conversion.
At last Chapter 7 tackles the central topic of what a program is. It explains pseudo code as a way of expressing algorithms without being language specific. Then we have a lightening introduction to flow of control statements - loops, conditionals and so on. This, in the style of the rest of the book, covers everything without leaving the reader time to digest. When we hit the section on Go To and its use you have to wonder why this has even been mentioned. At best this chapter is going to work as an overview with some comments on C# and VB for a programmer who already knows most of it.
From here the book continues in the same way with fairly technical topics apparently aimed at the beginner. Chapter 8 presents a summary of operators, including the conditional operator and operator overloading. Chapter 9 introduces "routines" - i.e what most programmers would call methods, subroutines or functions - and, yes, as you can probably guess, it does cover recursion.
At last Chapter 10 introduces object-oriented programming and again this is a complete summary of everything you could possibly need to know, including methods, properties, inheritance, polymorphism, overriding and so on. Chapter 11 returns to an "in praise of Visual Studio" with a small look at agile programming. Chapter 12 is about globalization and Chapter 13 is about data - files and all manner of database types including relational, network and object.
Clearly this book isn't going to be much use to the complete beginner. It certainly isn't going to be of any use to the readers of the other books in the Microsoft Press series aiming to teach programming to the beginner. It doesn't help with the foundations and it goes far too far with the details that would be best covered in the more specific titles.
It will be of slightly more use to the reader who has picked up a lot of the basic ideas and perhaps would benefit from having them presented as a complete theory. In this role the book isn't bad. Mostly its explanations are concise and clear and it is well written. However, if you go just a little too far in your prior knowledge then the book's usefulness starts to tail off rapidly. For example, if you know another language, Java say, and just want to find out about .NET then you will have to skip large chunks of the book to get to the parts that might be valuable.
As a beginner's book this isn't worth considering.
Related book reviews
Start Here! Learn Microsoft Visual C# 2010