I guess I will look into those a little then...
When I took computer science courses for my first degree (and that was back when Win95 was the OS of choice) the bulk of the material we learned dealt with C/C++ (which has been around for ages), BASIC (which I think maybe I took 1 or 2 classes in college, a few in HS, including a class in VB which at the time I think was VB3 or VB4), a little Cobol (using the mainframe architecture) and some Pascal (which pretty much has fallen off the face of the earth as far as I'm concerned).
The reason I'm not quite as familiar with some of the advanced C# and Java stuff is that when I took classes, neither of these languages were really present (Java had just started to come out but was still in it's early stages, and C# wasn't really even around, and the entire .NET Framework was probably only an idea on paper at that point) a lot of the stuff I did do was the usual in C/C++: binary trees, templates, stacks, ques, basic I/O and file I/O, basic OOP techniques, etc. And in the other languages I took, they more focused on system architecture, as in assembly language and the mainframe computer systems from IBM. So, a lot of my college level programming was very basic, and very fundamental, because (the assumption at the school was) that if you could master these techniques, then you'd be able to pick up other languages fairly quickly. Not quite so.
And like I said, a lot of my programming and theory classes were based around mainframe architecture and data structures. Not so much on GUI (or even OOP) programming that much (although my 3 C++ classes pretty much taught me that stuff, but in a condensed introductory level format).
The computer classes stopped in 98 when I graduated, so from that point on, I really haven't been into that many computer classes (I think I took a C++ class as a refresher back in 2002), and a database course back in 2003-2004ish (and it was actually rather fundamental, using Access for part of the time, which really didn't teach me much).
So the bulk of my learning for C# the .NET framework and development tools, was really learned by me reading and playing around with them, which I must say for the most part, I think I'm picking up C# quite quickly, pretty good for not using C++ for several years now (I know they're different languages, but some of the same rules apply to C# as they do to C++).
Yes, I have a CS degree, but I haven't really been able to keep up, especially since I have a second degree now in business, and have been pursuing that more than computers (computers have become my hobby for now). I do fix them on the side for spare cash, and do custom programming here and there, but nothing too extensive.
I know some of the theories and patterns proposed may be fairly basic and part of most CS coursework, but again, every school is different (there are certain standards they adhere to), but as I said, I learned about data types more than i did about patterns and the newer .NET/C#/VS.NET stuff...
So, I'll look into these patters and suggestions and see where it takes me...