Additional profile information on Alfred Thompson at Google+
If you'll excuse some gross generalizations for the sake of discussion I think that there are three main goals for various college programs.
The difference between a job and a career is a subtle but important one. People getting education for a job are looking for specific training on specific tools or areas in order to get a specific job. People looking to prepare for a career are much more focused on concepts and principles rather than specific tools or fads.
Education designed to help people on to graduate or research programs often go out of their way to avoid using current professional tools. They avoid even the appearance of being "vocational" in nature. They occasionally look for things that could not possibly have practical uses.
There is really a continuum with specific job training on one end and pure research preparation on the other end. Most education programs are somewhere along the line and not at either extreme. Honestly neither extreme is all bad or all good. It very much depends on the individual and what their goals are. I've known a number of people who are trying to make major career changes in their career rather late in the game. Often the best thing for them is some very specific training in tools and techniques that will enable to get a specific job.
On the other hand most younger students are better off in the long run looking for programs that prepare them for either graduate work or a career. In fact while we really do need more research PhDs in computer science we have an even greater need for career professionals in computer science and/or information science fields. We need people with a strong theoretical and conceptual base upon which they can continue to learn and develop throughout a long career.
Still I think that a lot of companies wish that new graduates had a bit of job skills - knowledge of current programming languages, development environments and other specific tools in their tool kit. Recently I've visited a couple of colleges in my home state of New Hampshire that seem to have found a good balance. Specifically they have some exciting new programs around game development. These programs are solid in the area of theory and concepts and yet they also embrace current professional development tools. Their students would certainly seem to have a leg up over students in programs that are either all theory or completely vocational.
New Hampshire Technical Institute in Concord is part of the community technical college system in New Hampshire. They have an interesting program in Animation and Graphic Game Programming. They have a bunch of Xbox 360s that will be used withe the XNA Game Studio for the development of games.
Southern New Hampshire University in Manchester has a series of courses that include IT and Digital Games, IT and Digital Music, and Digital Game Development. Languages include Visual Basic .NET and C#. Students will learn DirectX and Windows APIs among other things.
Daniel Webster College in Nashua has a major program called Gaming, Simulation and Robotics that includes projects involving all of those categories.
All three of these programs have professors in charge who have both academic and industry experience. I have been impressed with all of them and their dedication to teach professional development strategies using professional development tools without sacrificing academic rigor and a powerful emphasis on learning concepts. They are all also working with companies in the game industry to make sure that their courses are current and relevant to meeting the needs of that industry. At the same time there is a commitment to basic concepts and instilling the academic rigor that students can use as a base to learn the next big thing that will come along more than a few times during their career.
The combination of strong academics and preparation from faculty who really know how industry works seems like a powerful one to me. I'm looking forward to learning more about these programs and following the graduates of these still fairly new programs as they enter to work force.
[Note: Edited to add words missing because of a cut and paste error.]
Major Nelson of Xbox 360 fame announced a video montage of some XNA Game Studio Express games that people have been developing. The video is optimized for Zune even! Dave "LetsKillDave" Weller explains the video on his blog. People are already doing some really interesting things. The performance of these demos is pretty impressive as well. No slow or jumpy movement in these games.
By the way, I haven't had a chance to try them but I am told that there are some good (and simple) tutorials in the recently released beta 2 of XNA GSE. After you install and run Beta 2, hit F1 to bring up the help menu. Under Getting Started using XNA GSE you will have a choice between either the 2D or 3D tutorials. They are both fairly short. In the 3D one, you will get a blank project and then get a 3D model loaded and fly it around.
As soon as I finish the lists of things that my boss has me doing during the work day and my wife has for me after work I'm going to dig in with both feet. Have any of you tried them? What do you think? Any feedback that I should send to the development team?
[Late edit: I am having trouble getting to the tutorials easily. I can find them by opening the Contents in help and looking under Getting Started with XNA though]
One of the repeating themes that came up in the comments in my post last week about a 12-year old programmer was that the student was not doing "real programming." Some of that may have been snobbery. Some of it may have been jealousy. Some of it may have been a real belief that some things that look to non-programmers are not really sophisticated or complex enough to count as real programming.
One programmer I know said (and I'm still not sure if it was in jest or not) that programming in any high level language was not real programming. Real programming she insisted (yes she) was machine language programming. Not assembly language either. No she meant setting the ones and zeros that make up a machine language instruction. She talked about developing banking system programs for a device that allowed for fewer than 300 total instructions. BTW if you don't know the difference between instructions and lines of code you probably are not a really programmer yet. (I'm about three quarters serious in that one.)
There are also a lot of people who say that Visual basic is not real programming. Or that using library routines or objects is not real programming. Or even that programming for Windows in not real programming. I think that a lot of this is just really silly.
To me programming is more about a way of thinking than about the specific programming language, compiler, development environment, or operating system. Programming is about developing an algorithm that solves a problem and then implements it so that a computer can work on it. That's it. It's as simple as that or as complicated as that.
I've done a lot of different programming in my career. Some operating systems development, some applications, some stuff in very high level and 4th generation languages, and a bunch of stuff in various assembly languages for various architectures. It's all programming to me. The difficulty should never be in the tools/languages one uses. It should all be about the problem one is trying to get the computer to execute on. We all need to get past the idea that some languages or tools are intrinsically wrong/bad or "not real programming." Pick the best tool for the specific task, the specific hardware or the specific problem. The algorithm is the programming not the implementation of the algorithm.