Rent $12.14
- List Price: $69.99
- Save: $57.85 (83%)
- FREE return shipping at the end of the semester.
- Access codes and supplements are not guaranteed with rentals.
Rented from Amazon Warehouse
Fulfilled by Amazon
Fulfillment by Amazon (FBA) is a service we offer sellers that lets them store their products in Amazon's fulfillment centers, and we directly pack, ship, and provide customer service for these products. Something we hope you'll especially enjoy: FBA items qualify for FREE Shipping and .
If you're a seller, Fulfillment by Amazon can help you grow your business. Learn more about the program.
Buy new:
$36.60$36.60
FREE delivery:
Wednesday, Jan 25
Ships from: Amazon Sold by: MyGlobalDeals
Buy used: $16.18
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required. Learn more
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Follow the Authors
OK
MCTS Self-Paced Training Kit (Exam 70-536): Microsoft® .NET Framework Application Development Foundation, Second edition 2nd Updated, Revised ed. Edition
| Tony Northrup (Author) Find all the books, read about the author, and more. See search results for this author |
| Price | New from | Used from |
Your 2-in-1 Self-Paced Training Kit. Fully updated and revised! Ace your preparation for the skills measured by MCTS Exam 70-536—and on the job. With this official Microsoft study guide, you’ll work at your own pace through a series of lessons and reviews that fully cover each exam objective. Then reinforce and apply what you’ve learned through real-world case scenarios and practice exercises.
Maximize your performance on the exam by learning to:
- Develop applications that use system types and collections
- Validate input, reformat text, and extract data with regular expressions
- Create services and multi-threaded applications
- Implement code-access security and role-based security
- Implement serialization to read and write complex objects
- Leverage legacy code using interoperability
- Monitor and troubleshoot applications
- Create applications for a global audience
Practice Tests assess your skills with practice tests on CD. You can work through hundreds of questions using multiple testing modes to meet your specific learning needs. You get detailed explanations for right and wrong answers?including a customized learning path that describes how and where to focus your studies.
Your kit includes:
- 15% exam discount from Microsoft. Offer expires 12/31/13.
- Official self-paced study guide.
- Practice tests with multiple, customizable testing options and a learning plan based on your results.
- 300+ practice and review questions.
- Code samples in Microsoft Visual Basic and Visual C# on CD.
- Case scenarios, exercises, and best practices.
- 90-day evaluation of Microsoft Visual Studio Professional 2008.
- Fully searchable eBook of this guide.
A Note Regarding the CD or DVD:
The print version of this book ships with a CD or DVD. For those customers purchasing one of the digital formats in which this book is available, we are pleased to offer the CD/DVD content as a free download via O'Reilly Media's Digital Distribution services. To download this content, please visit O'Reilly's web site, search for the title of this book to find its catalog page, and click on the link below the cover image (Examples, Companion Content, or Practice Files). Note that while we provide as much of the media content as we are able via free download, we are sometimes limited by licensing restrictions. Please direct any questions or concerns to booktech@oreilly.com.
- ISBN-100735626197
- ISBN-13978-0735626195
- Edition2nd Updated, Revised ed.
- PublisherMicrosoft Press
- Publication dateNovember 12, 2008
- LanguageEnglish
- Dimensions7.75 x 2.5 x 9.38 inches
- Print length794 pages
Popular titles by this author
Editorial Reviews
About the Author
Tony Northrup, MVP, MCSE, MCTS, and CISSP, is a consultant and author living in New London, CT. Tony started programming before Windows® 1.0 was released, but has focused on Windows administration and development for the last 15 years. He has written about 25 books covering Windows development, networking, and security. Among other titles, Tony is coauthor of the Windows 7 Resource Kit and Windows Server 2008 Networking and NAP. You can view his animal photos, bird photos, and travel photos, read his Windows Help blog.
Product details
- Publisher : Microsoft Press; 2nd Updated, Revised ed. edition (November 12, 2008)
- Language : English
- Hardcover : 794 pages
- ISBN-10 : 0735626197
- ISBN-13 : 978-0735626195
- Item Weight : 3.31 pounds
- Dimensions : 7.75 x 2.5 x 9.38 inches
- Best Sellers Rank: #4,515,020 in Books (See Top 100 in Books)
- #1,239 in Microsoft .NET
- #1,530 in Computer Systems Analysis & Design (Books)
- #1,772 in Microsoft C & C++ Windows Programming
- Customer Reviews:
About the authors

Award-winning author & photographer Tony Northrup has published more than 30 educational books. Among other titles, Tony is author of Stunning Digital Photography and Windows 8 Inside Out. As a photographer, Tony's work has been published worldwide on magazine, book, and CD covers, and everywhere from Velveeta to Viagra ads. Tony lives in Waterford, CT with his wife and daughter.
You can learn more about Tony by subscribing to his videos at https://www.youtube.com/vistaclues, liking his Facebook photography page at http://www.facebook.com/NorthrupPhotography, following him on Twitter (@TonyNorthrup), viewing his photography portfolio at www.northrupphotography.com, or emailing him at tony@northrup.org.

Discover more of the author’s books, see similar authors, read author blogs and more
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on Amazon-
Top reviews
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
The test itself if a vast hodgepodge of .NET leftovers, a sort of dumping ground of subjects, with no single focus and a huge domain of subject material. The preceding book was over a thousand pages and was still inadequate in covering the material. Combine that with the usual lack of imagination and interest endemic of all MS certifications with questions like "pick the right method signature" or "find the block of code that doesn't have a bug" and you have a test that achieves nothing, but foster bitterness and anger towards Microsoft. As with its predecessor, I think you will see a lot of that bitterness expressed in book reviews. In this case, the book really doesn't deserve it. It may be a bit unimaginative, heck even boring, but it's competently written.
The book is not without humor, though it's unintentional. Northup is a rabid advocate of regex functions. He never passes up an opportunity to work them in. To those of us who have experience outside of the Microsoft culture, this looks a bit like a Japanese man raised on rice wondering the American Mid-West evangelizing the wonders of wheat bread. I've seen a lot of this test and I've never seen a single question on regex. The new list of test requirements have added a single requirement for it and there may now be a question in there, but considering the vastness of the subject of regex itself and the appalling amount of useless material you have to memorize (that Microsoft will just dump or pave over in three years) for the test, that I think you can just sigh, roll your eyes and move on. It does also make a good example of the inherent weakness of the monoculture that Microsoft has created.
One complaint that I've heard that I think is valid is that the author feels the need to teach the subjects. The book, and its predecessor, spent a lot of time explaining individual subjects. This is great and it does make the book useful. I know I will keep it handy. But it doesn't help with the test, and you need all the help you can get with this one. I'll be blunt -- this test is bad, very bad -- and the last thing you need is to be filling precious storage with non-useful information, at least non-useful as far as surviving the test. What good is learning these subjects if you can't pass the test? The book needs to be one or the other.
If you have to pick this or its predecessor, pick this one. Really, I think you will need both and then about 200 or 300 knowledge base articles. None of this material is adequately covered anywhere. [...].
I worked through all of the C# coding examples. As I finished each chapter I sent comments to [...]. The typographical errors that I pointed out are now listed in the errata page. The logical errors, coding errors, and style errors are not. I think they need to be noted somewhere to help beginners like me who do not have mentors to ask. I have copied portions of my emails below. I have not gotten my MCPD yet, so I may be wrong. As you go through the book, see if you agree with me or not, and if not, let me know so I can learn from my mistakes. Thank you.
2/11/2009
The Lesson Reviews and Practice Tests can be improved by allowing the student to select chapters of the book instead of test objectives. Selecting any one objective covers material from multiple chapters. When I finished the first chapter of the book, I could not select questions that only pertained to chapter 1. I had to answer questions from chapter 4, which I had not covered.
Also, the list of objectives only shows 2 at a time, requiring a lot of scrolling to see and select from all 7 objectives. It would be better to replace this list with the 16 chapters and show at least 8 chapters at a time to choose from.
Chapter 2 2/14/2009
The section "Using Isolated Storage," pages 85-88, doesn't even mention the methods GetMachineStoreForAssembly and GetMachineStoreForDomain. They shouldn't be potential answers to multiple-choice question 3 on page 92. The fact that they aren't described is a dead giveaway that they are wrong answers. On the other hand, if someone thought that they were worth using as possible answers, they should have been mentioned in the text to give them a little credibility.
Chapter 3 2/16/2009
In Chapter 3 Lesson 1, page 99, the output examples are missing spaces between the words in the results message.
On pages 112 - 114, the "How to Replace Substrings Using Regular Expressions" topic would be clearer if the differences between matching patterns and replacement patterns were stated before the code examples are given.
Also, I don't understand the purpose of the code example that replaces dates in mm/dd/yy format with dates in dd-mm-yy format. I would have set up a try/catch block. Inside the try I would convert the string to a DateTime type with Convert.ToDateTime method. Then I would return String.Format("{0}-{1}-{2}", datDate.Day, datDate.Month, datDate.Year); The catch would let me trap bad dates and inform the user, which the regular expression can't do.
Chapter 4 2/20/2009
On page 142 the ArrayList.BinarySearch sample code only works if you search for "Hello" or "this". For "a" it gives me -1. For "world" it gives me -7. For "is" it gives me -2. For "test" it gives me -2. It looks like BinarySearch has to be preceded by ArrayList.Sort, and then it gives correct indexes based on the sort, not the original order. To get the correct indexes on an unsorted ArrayList, I had to use ArrayList.IndexOf.
Chapter 5 2/28/2009
The topic "How to Control SOAP Serialization" on pages 180 - 181 needs a code example.
Page 189 mentions "object graphs" as something that can't be serialized with XML serialization. The book never defines an "object graph", never gives a reason why someone would want to serialize it, and never tells you how to serialize it with some method other than XML serialization.
Page 189 says that "XML serialization...cannot serialize private data". Page 191 says "If there are private or protected members, they are skipped during serialization." Should page 189 be revised to say that "XML serialization...cannot serialize private or protected data"?
On page 199 step 4 of the exercise in the C# code, the changes are not shown in bold.
The instructions displayed by the Console.WriteLine commands in the C# method DisplayUsageInformation are incorrect. The name of the executable is Serialize-People with a hyphen, not Serialize_People with an underscore.
Chapter 6 3/7/2009
On page 219, the first exam objective should say System.Drawing namespace instead of Sysem.Drawing.
On page xiv of the Table of Contents, topics "How to Specify the Location and Size of Controls" and "How to Specify the Color of Controls" should be indented like the other topics under Lesson 1.
On page 245 it states that the code uses Graphics.DrawPolygon, but it doesn't. I could not get it to run as a Console application (Visual Studio 2008) because I got errors that said "The type or namespace name 'Drawing' does not exist in the namespace 'System'. It did run as a Windows Form Application.
On page 253 the StringFormat member is "Trimming", not "Traimming".
On pages 259-260 step 5 of Exercise 2 the commands
// Define the font for the text
Font tf = new Font("Arial", 12);
// Create the foreground text brush
Brush tb = new SolidBrush(Color.Black);
// Define the vertical and horizontal alignment for the text
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Near;
sf.LineAlignment = StringAlignment.Center;
don't have to be inside the foreach loop because they remain the same for each line of the legend.
Chapter 7 3/15/2009
On page 275 the word "background" is misspelled as "backgroud".
On page 294 the C# code shows the inner for loop as "for (int i = 1; i <= 1000; Interlocked.Increment(ref i))". It should be "for (int i = 1; i <= 1000; i++)" instead, because the intent was to show first how increments can be lost when threads interrupt each other. On page 296 the text says "To correct the problem, replace the number += 1 operation in myNum.AddOne with Interlocked.Increment(ref number), and then run the application again. So, the C# code has the Interlocked.Increment call in the wrong place anyway.
On page 298 the book says "If you run that code, you see the following output:
Waited for 1000 ms.
Waited for 2000 ms.
Waited for 3000 ms.
Main thread is complete."
On my dual core PC I sometimes get
"
Waited for 2000 ms.
Waited for 1000 ms.
Waited for 3000 ms.
Main thread is complete."
All that you can really guarantee is that "Main thread is complete." is the last line printed.
Chapter 8 3/19/2009
On pages 328-329 in the section "How to Provide Host Evidence for an Assembly" there is a code fragment that uses the SecurityZone enumeration and an Evidence object. The description should mention that the System.Security and System.Security.Policy namespaces are required.
On page 333 in step 4 of the Lab, the comment says "Create an Evidence object for the Internet zone" but the code and step 6 say that the application domain is created in the Intranet zone. The project in \\Chapter08\Lesson2\Exercise1\Partial\CS has an unresolved reference to ShowBootIni.
On page 343 the topic "How to Manage and Control a Service" is written assuming that the computer has Windows Vista. This is not always a valid assumption.
Page 345 states that the code sample requires that the System.ServiceProcess reference be added manually. It would be helpful to note that you "Add Reference" rather than "Add Service Reference" and that in the Add Reference dialog box you look for "System.ServiceProcess" rather than "Microsoft.ServiceProcess" or "ServiceProcess". I had to go to the Web to find out how to get the code fragment to compile.
On page 349 in Exercise 2, step 2 sets the installer properties. I am using Visual Studio 2008. StartType, Description, and DisplayName are properties of serviceInstaller1 but Account is a property of serverProcessInstaller1. That should be made clearer in the instructions.
Chapter 9 3/26/2009
On page 366 there is a code sample that demonstrates how to use ProviderName to create a database platform-specific DbConnection object using a ConnectionStringsSettings object. The text should mention that it requires a lot of additional references to compile.
// add namespaces
using System.Data.Common;
using System.Configuration;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data.Odbc;
using System.Data.OracleClient;
It should also mention that you have to do the same trick with System.Data.OracleClient that you do with the newer System.Configuration - almost the same 4 steps as on page 361. I did that on a hunch after the Intellisense wouldn't show me System.Data.OracleClient, and then I was able to build the project.
Pages 372-373 show a modified .config file for use with the code that demonstrates "Creating Custom Sections Using ConfigurationSection". I named my C# project ConfigApp so it would have the same namespace as the demonstration code. It doesn't work with the given .config file. It doesn't just blow up, either. It pops up a dialog box that says "ConfigApp has encountered a problem and needs to close. We are sorry for the inconvenience. ... Please tell Microsoft about this problem...." I had to change the first line of page 373 to
<section name="customSettings" type="ConfigApp.MyHandler, ConfigApp"/> to get it to work. In other words, it is "ConfigApp", not "ConfigApp2".
On page 379 the text tells how to set the DEVPATH environment variable in Windows Vista. Assuming that the operating system is Windows Vista is a bad assumption. The text acknowledges on the previous page that a business may still be on .NET Framework 1.1 (<supportedRuntime version="v1.1.4322" />) and should also acknowledge that business operating systems are probably not Vista. I tried to find out how to set DEVPATH in Windows XP and found that information; I also found an MSDN blog that says "However, DEVPATH is only supported in development. It is not supported, and strongly discouraged in production, as it basically violates all the probing rules." ([...]) I suggest that you add this warning.
On pages 386-387 the C# code shows the most basic implementation of a custom installer. It doesn't compile unless you add
using System.Configuration.Install;
using System.Collections;
using System.ComponentModel;
Chapter 10 3/29/2009
On pages 408-409 the topic "Configuring Debugging Using a .config File" should also have some program code that interacts with the .config file and some sample output. If the application code and the .config file conflict, which one wins?
On page 418 a PerformanceCounter is created
PerformanceCounter pc = new PerformanceCounter("IPv4", "Datagrams/sec");
When I run this code, I get an error "InvalidOperationException was unhandled. Category does not exist". I had to change the statement to
PerformanceCounter pc = new PerformanceCounter("IP", "Datagrams/sec"); My system is a dual-core running Windows XP Pro.
On page 429 the text notes that the code sample requires the System.Management namespace but does not note that adding "using System.Management;" to the code is insufficient. In Visual Studio 2008 you must also click the Project menu, click Add Reference, select System.Management on the .NET tab, and click OK.
On pages 433 and 435 there should be a note that __InstanceCreationEvent starts with two underscores, not just one.
On page 439 in step 7 of Exercise 1 in the Window_Loaded event handler,
the comment should be
// EventReceiver is a user-defined class. (no space between Event and Receiver.
Chapter 11 4/17/2009
In the Index on page 769 there are two entries that should be combined:
.NET Framework Configuration tool, 371, 380-82
.NET Framework Configuration Tool, 460-65
On page 471 under "To add a code group to the Machine policy" "Parent_ Code_Group" should be "Parent_Code_Group" (no space).
On page 472 under "To add a code group to the User policy" "Parent_ Code_Group" should be "Parent_Code_Group" (no space).
On page 473 Exercise 1 doesn't work. When I get to step 6 and run \\127.0.0.1\c$\ListPermissions.exe it isn't missing any permissions.
On page 484 the last group of assembly declarations require adding a reference for the System.Drawing.Printing namespace, not the System.Drawing namespace.
On Page 494 the fourth line should begin with CodeAccessPermission instead of CodeaccessPermission.
On page 502 the code sample for "Best Practice for Handling Errors" requires
using System.Security;
using System.Security.Permissions;
using System.Diagnostics;
to compile properly.
On page 505 the code sample requires
using System.Security.Permissions;
using System.Security;
using System.IO;
to compile properly.
On page 507 the code sample requires
using System.Security.Permissions;
using System.Security;
to compile properly.
On pages 510-511 Exercise 3 doesn't work. I followed steps 1 through 10. Step 11 says PartiallyTrustedAssembly fails and reports a SecurityException, but it worked for me and did not report an exception. I was logged on as an administrator, as step 1 requests. I logged on as a limited user and tried step 10 again, and PartiallyTrustedAssembly failed but reported a System.UnauthorizedAccessException. I don't know why it doesn't work and there are no suggestions about how to fix it.
On page 745 the answers for questions 2, 3, and 4 of the Chapter 11 Lesson 3 Review are wrong. They don't match the choices offered. I think the answer given for the nonexistent question 5 is actually the answer to question 4.
I was very disappointed in this chapter and I don't think I learned what I was supposed to.
Chapter 12 5/1/2009
On page 527 the code that creates the WindowsIdentity object requires the System.Security.Principal namespace.
On page 528 at the bottom, the code requires the System.Security.Principal namespace.
On page 534 the code requires both the System.Security.Principal namespace and the System.Security.Permissions namespace.
On pages 538-539 the class requires the System.Security.Principal namespace.
On pages 540-541 the class requires the System.Security.Principal namespace.
On page 541 the GenericIdentity constructors require the System.Security.Principal namespace.
On page 553 the explanation of calculating effective permissions is unclear. The second last paragraph concludes that all members of the Managers group are denied access to the file. I don't think that is true. The explanation leads me to believe that Manager Mary specifically cannot open the file because she is a member of the Accounting group. Other Managers who are not members of Accounting probably have Full Control privileges.
The lab on pages 559-560 does not create a folder named C:\Guest. For me it created a folder named C:\Documents and Settings\Catherine Agacinski\My Documents\Guest.
On page 571 the code requires the System.Security.Cryptography namespace.
On page 576 the description of the KeySize property should probably be "Gets or sets the size in bits of the secret key used by the asymmetric algorithm" instead of "key used by the symmetric algorithm".
On page 578 the third line should say RSAParameters instead of RSAParamaters. The code fragment requires the System.Security.Cryptography namespace.
On page 579 the code requires the System.Security.Cryptography namespace.
On page 581 the code requires the System.Security.Cryptography namespace.
On page 584 the code requires System.Security.Cryptography and System.IO namespaces.
On page 585 the C# code requires the System.Security.Cryptography and System.IO namespaces. It should begin with the comment
"// Step1: Create a secret key".
On page 588 the code requires the System.Security.Cryptography and System.IO namespaces.
Chapter 13 5/8/2009
On page 605 it should be noted that Sapi.dll may be at some other location. Mine is at C:\Program Files\Common Files\Microsoft Shared\Speech\sapi.dll. I am using Windows XP Pro.
On page 612 the code requires the System.Runtime.InteropServices namespace.
On page 623 the code sample showing how to marshal a string to the LPStr COM type should be
void MyMethod([MarshalAs(UnmanagedType.LPStr)] String s);
because it doesn't compile otherwise.
Chapter 14 5/9/2009
On pages 634, 635, 636, and 639 the code samples require the System.Reflection namespace.
On page 637 it should be stated that the AssemblyInfo file includes AssemblyCompany, AssemblyCopyright, and AssemblyVersion by default, but not those values. My AssemblyCompany is "" not "Contoso, Inc." and the copyright this year is 2009.
On page 641 the code requires the System.Reflection namespace and the System.Reflection.Emit namespace.
Chapter 15 5/14/2009
On pages 653, 654, 655, 663, 668 the code requires the System.Net.Mail namespace.
On page 655 near the bottom, the generic name is "application_octet-stream.dat" instead of "application_octect-stream.dat".
On page 657 the code requires the System.Net.Mail namespace and the System.Net.Mime namespace. The statement that creates LinkedResource pic1 should probably use "pic1.jpg" as its first argument instead of "pic.jpg".
On page 664 there is an irrelevant note about the SmtpClient.PickupDirectoryLocation property. It fails to explain the purpose of the property and the property is never referenced in the text.
On page 763 in the last sentence of the last point of the Lesson Summary, "You can call SmtpClien.SendAsyncCancel..." should be "You can call SmtpClient.SendAsyncCancel..."
Chapter 16 5/20/2009
The code on page 681 requires the System.Threading and System.Globalization namespaces to compile.
The code on pages 682, 684 requires the System.Globalization namespace.
On page 691 the code requires the System.Threading and System.Globalization namespaces to compile. When it runs it does not have a blank line between the outputs from the two cultures.
On page 693 the code requires the System.Threading and System.Globalization namespaces to compile.
Top reviews from other countries
Each of the 16 chapters has 2-3 lessons and it states at the beginning how long a lesson should take. Most are listed as taking 30-45 minutes, however I am finding more realistically they take 2-3 hours per lesson - I am trying out all the code examples and am going through all the end of lesson labs, review questions and case studys.
At the end of each chapter, there is a Suggested Practices section where you create applications without assistance based upon the concepts in all the lessons for that chapter. I would imagine these Suggested Practices are essential if you want to pass the exam, but they would take hours or days - I intend to complete these towards the end of my study and am allowing plenty of time for this.
As a whole, the lessons are mostly well explained but I find an accompanying text (e.g. APress Pro C# 2008 and the .Net 3.5 platform) is essential for cross reading as is going online and searching the internet. Occasionally the examples do not work but this might be because I am using Windows 7 and Windows 7 was not out when this book was written (I've encountered issues in the security chapters mainly). I've not encountered many other mistakes to note, so this edition must've eliminated most of all the terrible mistakes in the previous edition.
So to summarise, the book is great for a starting point, but allow at least half to a day per chapter (16 chapters) without doing the Suggested Practices and then allow many weeks following the completion of the book to do the Suggested Practices and as many test questions as possible. It's a lot of work and this book is a good guide as to what is required. I am learning a lot (that I haven't needed in my career thus far) and learning is the point - oh and also to get the certification.
This is a great study guide to the exam. It is not the be all and end all, but if you are sitting the exam I would highly recommed this. its well laid out and the sample test in the book are great. Also a great feature is the 'Case Scenarios' at the end of each chapter where a real world problem is outlined and you are asked to solve it using what you have just learned, great way to get you thinking about what you have just read. I would recomed plenty of practice coding when reading this book... try out all the examples!
A must read for anyone taking the exam.
Cheers,
Alan.
Really, what is the point otherwise?
Several examples of answers to questions which it provides are plainly wrong.
For example, there is one case where the book gives the correct answers to 4 questions in a particular lesson.Trouble is, this particular lesson has only 3 questions and only two of the answers it provides relate to the questions asked.
Proof-read by an idiot?
Another (and by no means the last) is with the accompanying question study app (which, interestingly has been written by a juvenile primate) that displays multi-choice questions and when you've selected your answers, highlights the correct questions and provides explanations has to why options are wrong or correct.....
except....
Sometimes it flags an option as being correct, but the explanation given as to why it is correct immediately means that that option could never in a zillion years be correct.
Confusing? Sheeesh.
..and this is not the only error. On a minor note, some questions asked refer to details not even mentioned in the book. Not a bad thing per se, but an irritation nonetheless.
Overall, could I recommend this book? If the book was simply described as a learning tool and not as a definitive examination resource then Yes - it's easy reading, does not assume a great deal of prior programming proficiency, blah, blah...and if you have no intention of sitting the MCTS exam...
However, as an examination resource how can one recommend something that is so fundamentally flawed as to spout incorrect answers? The student has no faith in the book they're reading so what's the point?
Therefore AVOID.
But, if this is a 2nd Edition, I shudder to think how many errors, typos and mistakes were in the original! I counted x5 mistakes - for example, Chapter 11, Lesson 3 has x4 'Lesson Review' questions, but x5 sets of answers at the back of the book!
Did nobody proof-read the book? (If not, why not?!) Or is this just another example of Microsoft's bug-ridden development practises?








