It’s been a few years since I did my Software Engineering degree, and I no longer feel like I’m a graduate – at least my bank tells me I’m not – they’ve taken my graduate account away from me and I’m now lumbered with a standard account and a tiny overdraft. In short, I think my CV needs a bit of a boost so I’ve decided to become qualified as an MCTS, specifically in Windows Applications.
This decision has been based on a few things – I meet Microsoft’s recommended requirements, and a couple of fellow employees have said that I would find the exams no problem (themselves MCPs). So, based on that advice I got a few books from Microsoft press.
The book I’ve just finished going through – Microsoft .NET Framework 2.0 Application Development Foundation was, in my opinion, a bit of a mixed bag. While the first half I felt at home with (types, collections, IO, serialization, threading, GDI+, App Domains) the third quarter I found really hard work – my brain just wasn’t interested. I think this was to do with the fact that a lot of that section of the book has a lot of Windows based stuff, like using the .NET Configuration tool to set up Code Access Permissions. Don’t get me wrong – I think that the security features of .NET are excellent, especially the ability to deny your assembly permissions it would have otherwise been granted, it’s just that some of the labs were so boring and repetetive. I guess I was expecting a C# book rather than a .NET book.
My only other gripes with the book are the many well documented errors that you can find here and here. What’s the correct answer to this?
“How can you set the base directory for an application in an application domain?”
The book tells us the answer is
“Create an instance of the AppDomainSetup class, and then set the ApplicationBase property. Pass the AppDomainSetup object to the AppDomain constructor.”
Now, I’m not normally so pedantic, but you HAVE to be pedantic in order to get some of these questions right, and strictly (very strictly), that answer is wrong.
Go ahead – try creating an instance of an AppDomain using an AppDomain constructor. You can’t. There aren’t any defined. Strictly (and I did say very strictly) speaking, you pass the AppDomainSetup object to the static method AppDomain.CreateDomain. Admittedly, this is a small niggle, and if I was talking about creating new AppDomains, I’d probably just use the word constructor to describe the creation process, but it’s a niggle that can catch you out in a test situation. Although the correction is listed, things like that can disrupt peoples learning.
Here’s another example that I though could have been written a bit more clearly:
“Which of the following ArrayList methods can be used to determine whether an item exists in the collection?”
“A. Remove.”
“B. Contains.”
“C. IndexOf.”
“D. Count.”
The problem with this question is that it is ambiguous. Are we looking for a particular item that we already have a reference to, or any item. If we’re trying to see if any item exists in the collection, Count would be perfectly acceptable. The only thing that can possibly save you if you understood the question in this way is the fact that Count is a property, not a method, but knowing how some of these questions have been written, did they really mean to say method, or did they mean to say member?
I hope the real exam questions have been written more clearly. [Note to self: You moaning bastard!]