Jon,
First I would suggest first learning Visual Studio.NET. It will make
learning C# easier if you understand VS.NET. Microsoft has a book called
"Effective Visual Studio .NET". which is excellent for a beginner.
Then I suggest 2 books to actually learn C# - Microsoft has a book called
"OOP with Microsoft Visual Basic.NET and Microsoft Visual C#.NET Step By
Step" to begin to understand Object Oriented concepts, which is very
important to quality programming. And Murach has a book called "Murach's C#"
which is awesome and I think it is the easiest / best way to learn C#.
Also, if he is a visual person and does not really enjoy books, then visit
http://www.learnvisualstudio.com which has videos. (please tell them I sent
you so they add extra time to my membership) But I would suggest using this
after doing the books unless he doesn't do books well. This will show you
specific things, but a book takes you through from start to finish.
Once he knows some C# then he'll have fun with these:
Websites-
like The Terrarium game at
http://www.windowsforms.net/Applications/application.aspx?PageID=30&tabindex=8
http://www.gotdotnet.com/default.aspx
http://msdn.microsoft.com/vcsharp/
http://www.c-sharpcorner.com/
http://www.developersdex.com/csharp/
and many more can be found at:
http://directory.google.com/Top/Computers/Programming/Languages/C-sharp/
Or learn more from the webcasts at
http://www.microsoft.com/seminar/events/developer.mspx
He may want to search for the words "Best Practices" once he understands C#
so he can learn the best way to program.
C# is a GREAT language. Enjoy!
But if he has a tough time with C# then move him back to VB.NET. In my
opinion, (sadly) Microsoft seems to be trying to segregate their languages
and not give them all equal features. VB.NET is aimed at previous VB
programmers and has some features that I think are aimed at beginners. Plus
it is not case sensitive and does not require a ";" after statements.
However, in my opinion and hotly debated by others, C# is the better
language that combines all the best features of previous languages and is
fully object oriented. So I think he made the best choice in deciding to
learn C#. Also when he's older, my guess would be that he can make more
money programming in C# than in VB.NET.
But it really doesn't matter that much which language he chooses - they all
compile down to almost exactly the same thing, and once you know one language
it is relatively easy to learn the other ones since much of .NET programming
is really knowing the .NET Framework. The .NET Framework is the same for all
languages and what makes .NET so easy to program in. Essentially, each use
of the .NET Framework eliminates writing many lines of code - instead you use
the equivalent of one easy to code function call. This should be the last
step in learning any .NET language - try to learn as much of the .NET
Framework as you can.
Also, one caveat... I went into .NET thinking that once I learned C# that I
would "know" .NET programming. Wrong. Once he knows C# and a small amount
of the Framework, then he will want to decide what he wants to do with it.
At that point he can learn about other technologies that are tightly
integrated and required learning for specific projects. He may choose to
learn ASP.NET, Windows Forms, Web Services, XML, XSLT, ADO.NET, SQL, COM
integration, Office integration, Mobile device integration, etc. That's the
beauty (and steep learning curve) of .NET, it ties into so many other
technologies. But once you learn them... you really can do anything!
After you decide on what additional technologies you need to know, go to
http://support.microsoft.com and search for the technology plus the word
"Roadmap" for a suggested roadmap to learning. For example,
http://support.microsoft.com/default.aspx?scid=kb;en-us;308626 is "Roadmap
for debugging in the .NET Framework and Visual Studio .NET".
I just saw a study someplace on line that shows that people are coding
projects in many languages (C#, VB, Java, Cobol, etc). But the number 1 that
they wish they could be programming in is .NET, by a huge margin. Take
heart... it's a steep learning curve, but .NET ***IS*** the future, in my
opinion.
Pam Ammond