Thursday, January 14, 2010

CS depts. and the gaming industry

The concept presented in this article that surprised me the most was that "the demand for computer scientists capable of building games is high, with large companies like Electronic Arts reporting that 65% of their hiring demand is for programmers skilled in building games."

Two points: first, I agree that the traditional CS graduating student is not best equipped for a career in the game industry. Second, I'm not really sure Electronic Arts is the best company to use as an example of anything these days. Weren't they the focus of a coalition put together by wives of employees to tout about the horrible working conditions? They also announced a pretty large round of layoffs last year. Check out google for lots of interesting stories on them.

Despite the example used, I agree with the point that today's CS curriculum does not prep students for jobs in game development. We focus on prepping students with the skills that are required for the majority (and also most lucrative) of careers in CS. Of all of the possible jobs one can obtain with a CS degree, game development is not anywhere near the top of the list. I think we would be doing a large disservice to the majority of firms that hire computer scientists if we start incorporating game development into the curriculum.

But, I can easily take the other side of the argument. Consider how many more students would be interested in a degree in CS today if we could talk about our opportunities to develop games! Attracting student interest and dealing with retention are two hot topics in CS academia. I think there can be a balance, where some aspects of game development are used in some earlier courses, perhaps up to the point where data structures are taught.

Tuesday, July 14, 2009

The new video Kodu game will teach you (or your kid) about programming. - By Chris Wilson - Slate Magazine

The new video Kodu game will teach you (or your kid) about programming. - By Chris Wilson - Slate Magazine

Interesting... I wonder how this compares to Alice as a possible (very) introductory teaching language for CS newbies in high school and college? Alice continues to get rave reviews, though (as with every language) there are critics. At first glace, Kodu seems to be too elementary to be a platform to use in a "programming for non-majors" CS class. We want a class that can be used as a way to open the eyes of students that never thought about CS as their major. Our plan was to adopt Alice for this purpose.



Thursday, July 09, 2009

The Scala Programming Language

As if we didn't have enough choices for programming languages to teach...

The Scala Programming Language

I like everything I've seen with the language so far. In particular, I like that it plays well with Java.

Yet, seriously, the number of languages out there is truly astounding (and ridiculous.) Forget the trials of the professor considering what languages to teach. Let's look beyond my responsibilities. What about the student? And, consider the challenges of the IT sector looking to adopt development strategies, including selection of a language or two for development. Which do they choose?

It is absolutely impossible for one language to satisfy all needs. But, it seems that the number of choices available for each need in software development today is much more of a hindrance than an asset to both the developer and the software development industry. As a CS professor, I strive to keep myself aware of the latest trends and technologies, in order to incorporate aspects of them in my advanced classes. (i.e., I want my students to get jobs!) So, should I teach a wide range of languages at a very introductory level so they can put huge lists of "technologies and skills" on their resume? No! The problem with this approach is that the student does not learn the depth in any language required to complete a large-scale project that they will be given when they get a job. They do not get a chance to get beyond the headache of syntax and program structure and really learn problem solving skills. I think that 2 languages should be taught in depth to CS undergraduates, with essential focus on constructs common to all programming languages. I don't think many will disagree with this. The disagreement among CS faculty is in regard to what languages to teach. If a couple of languages are taught in depth, the student will most likely be able to adapt what they've learned to other languages with relative ease. 

Do you think I'm being ridiculous? Check out this list:

So, who is to blame? Some of the blame is on industry (e.g. Microsoft's unwillingness to embrace Java, and therefore create C# and an entirely new JVM clone called CLR), some is on academia (e.g., Scheme), and some is simply the work of CS gurus and zealots and those in the open source community that thrive on anything that is anti-establishment. Of course, all of these players have created some nice languages. but they all claim to adopt aspects of some prior language, and incorporate something that is supposedly new. And unfortunately, some of these lesser known languages thrive because there are groups that thrive on adapting and going against any technology that is mainstream. (Maybe I'm being too cynical... but, I've witnessed these attitudes in industry and academia!) They often take a certain pride in being able reject any mainstream industry, and/or say they know something that nobody else in IT does. So, are they wrong? Quite often, their rants are right on the money! Can you blame them? There are reasons some of the better academic institutions have all Linux labs.

Sigh... can't we all just get along?!?!? Ehhhh.... no, but at least most of those in CS industry and academia are willing to have an open mind and see what hype is about. We love to learn new things and see how to develop better systems. If we didn't love change, we would have chosen a different field.

Whatever the case may be, it is my opinion that the number of development languages available today is a bit of a hindrance. But, if students can learn fundamental programming constructs in detail, learn foundational algorithms and data structures, gain experience with design patterns before leaving college, and gain some good problem solving skills, then the language of choice is mostly just syntactical goo to put around the solid structure and scaffolding of your design.

Syntactical goo... hmmmm... I'm sure I'm not the first to use that phrase.