Flip side is the comment passed in an interview to me by the interviewer about a lack of C skills coming out of CS, and basically I was told that the position I was interviewing for wasn't even open to over 50% of the CS grads today, because they only knew Java. The company would sooner teach the fine points of the theory than try and teach Java people C.
It's all swings and roundabouts, and getting the interview. From there, it's down to ability. Good people will thrive, bad ones fail, however they get started.
I'll post the curriculum shortly, but a general description their Game Dev bechelor's degree is that it actually does deal with a lot of programming, including classes on C++, DirectX, on OpenGL, and more.
Originally Posted by RobbieAB
The last ~3 months of the program is working on a game that can be used for a portfolio.
Think you'd hire someone with those kinds of assets?
I did look around, and a lot of the ones I saw were for the graphic design end. Other colleges weren't really serious about the program. The only two that stuck out for me were Full Sail with a 1.75 year accelerated bachelor program, and Digipen, with a 4-year bachelor program. I'm already 27, and by the time I finish the 4-year, I'll be in my 30's, most likely single, and without kids...
Month 1: Design fundamentals (3) / English composition (4)
Month 2: Programming 1 (4) / Calculus & Trigonometry (4)
Month 3: Programming 2 (4) / Linear Algebra (4)
Month 4: Programming 3 (4) / Physics (4)
Month 5: Data structures (4) / ethics & psychology (4)
Month 6: Windows Programming 1 (4) / Historical Archetypes & Mythology (4)
Month 7: Windows Programming 2 (4) / 3D Content Creation (3)
Month 8: DirectX (4) / Software architecture (3)
Month 9: Structure of game design (4) / media & society (4)
Month 10: Structure of game production (8) / rules of the game (3)
Month 11: Structure of game production (8) (continued from 10)
Month 12: OpenGL (4) / Machine architecture 1 (3)
Month 13: Optimization (4) / Machine architecture 2 (3)
Month 14: Artificial intelligence (4) / software engineering (3)
Month 15: Engine development 1 (4) / game networking (3)
Month 16: Engine development 2 (4) / Advanced tools programming (3)
Month 17: Public speaking (4)/ game preproduction (3)
Month 18: Game planning and architecture (4) / communications (4)
Month 19-21: Game project (10)
140 total credit hours
If anyone wants more info let me know, I'll scan the pages and PM them.
Let me know if this is worthy of a job. I want to do this right, and $75k is a lot to dump in in a short time for this. However, what's the cost of a 4-year anyways? Both programs are for a B.S.
EDIT 2: Added credit hours.
EDIT 3: It's odd. A lot of people view C++ as an old dinosaur, and moving people to Java because it's very featured and easy to create a GUI. The way I've worked with it, and had it described to me, Java is all pointers and linked lists. It hides all of this from you, which means even with basic addition you're already leaking memory. I prefer not to work in this language if I can help it.
Windows programing, DirectX, and OpenGL are all platform technologies, and basically consist of "read and understand the API". While they need to be covered, they should not comprise 10% of the basic material. They change too fast. (Basically, they should be taught in other modules.)
The AI component is quite frankly inadequate. It will NOT equip you to build a game AI. You just don't have time.
The underlying maths seems a little light. As a quick list, you need to cover Calculus, Trignometry, Vectors, Matrices, and Number Theory. I'm probably missing stuff from that list, but to cover them properly takes a lot more than 8 credit hours over two months. You also need some basic probability and distribution, simply because you need to understand them, though this could probably be covered in a week at a high intensity.
The physics also seems light. At a minimum you will need to cover basic electronics (You want to understand the computer, right?) and mechanics. I have my doubts if both can be covered adequately in a month.
A total lack of operating systems.
Not that I'm an expert, but that's my take.
OK, stop betraying how little you actually understand... ;)
Originally Posted by me262
Java runs in a Java VM which includes useful features like garbage collection. So, in theory, Java doesn't memory leak.
Java is popular for several reasons:
1) No memory management. This makes it "easier" to teach.
2) No pointers. See the corollary of 1)
3) "Platform Independant" so long as the target platform has a compliant (and compatable!) JVM.
4) As a corollary of 1) and 2) everywhere teaches it.
5) As a corollary of 4) every new CS grad knows it.
C++ can be anything to anybody. With operator overloading, templates, and some of the other advanced features of the language, it can get very very powerful (and very very very complex!).
Java is designed to prevent you shooting yourself in the foot, C++ allows for the possibility that shooting yourself in the foot serves some purpose. As a simple demo of this principle, try implementing the classic swap() function in both languages. (Having done that, work out how to do the same in Python, it's hilariously funny.)
I actually try not to betray my knowledge if at all possible, but I want to be honest that I may not know as much as someone who's an expert in the field.
I have learned Java (1 class, but basic knowledge nonetheless), I just don't like it that much. I know it is cross platform as simply as running the JAR. My Java teacher actually told me about how memory is handled, and is why I said "from what I'm told". I know about the garbage collector, I've never implemented it (as if it needed to do such in the first place). The fact that they do need one though tells something about it's memory management though.
It's just late and I didn't really throw in the pros to offset the cons.
As far as the classes, these actually run at all time of the day, 9a, 1p, 5p, 9p, 1a, 5a, 5 times a week. It's nearly the same length as a regular college course.
5x4 = 20 classes in 1 month (assuming it's a 4-hour class), 2x4x3 = 24 classes in 3 months. I'm not taking Saturdays into account, which I think they do run on that day as well, nor the fact that months run in 30-31 days.
AI Outline: Agent Architecture, Knowledge Representation, Machine Learning, Path Finding and Navigation, Problem-solving and Searching, Reasoning and Decision-Making, Team-based Architecture
Physics Outline: Particles Kinematics, Particle Dynamics, Numerical Methods (Euler, Verlet Integration, Verlet Velocity, RK4), Dynamic Collision Detections, Particle Collision Responses, Rigid Body Kinematics, Rigid Body Dynamics, Rigid body Collision Responses
Calculus has derivatives, limits and rate of change, integrals, and multi-variable calc. Linear algebra has the vector and matrix operations.
I was only teasing about the "betray your knowledge". That said, the purpose of a garbage collector is that it does the memory management for you: you just let an object go out of reference and it's scrubbed.
With 8 hour contact hours a day, you won't get the library time a normal student would be expected to get. This is born out by the 140 credit hours for the course. (A normal undergrad degree would be expected to average 60 credit hours a year!)
Regarding the course content: you just don't have time to match a good (not necessarily brilliant) 4 year student. You have to lose either in depth of coverage or breadth of coverage. I wouldn't think I could compete with a CS grad in general (I'm not CS originally) but in the areas I have covered, I can compete with the best of them. Overall they win, simply because they have covered so much more material: they have had four years worth of lectures and reading.
Now, it is a different matter if that course is pre-supposing a reasonable level of knowledge from entrants (i.e. equivalent to first year of a CS degree, which is the real basics, like what a computer is).
Java's good for making UI apps or web applications.
Originally Posted by me262
Java is NOT good for making peak performance applications or applications that you need consistent operation. A real-time system pausing for GC operations (which is where your "not leaking memory" from Java COMES from...) will cause things to kill people.
If you didn't take a CS degree, or got bit by that distinction, you'd not know and might have problems down the line. Java has at least a handful of equally problematic edges to it.
Most people view C++ as "an old dinosaur" because of the misuse of the language features and a pervasive desire for "something new". Trust me, of the games out there that've been successful using Java you can count them on one hand (Tribal Trouble is the only one that uses it completely that's done anything...).
It's a bit shallow on what you need to get ahead. It's all practical application, and nowhere near enough of that to be useful. As RobbieAB indicated, some of the coursework is more of an intro than sufficient to teach you enough to be useful with developing for it. You MIGHT get your foot in the door with it if you've got a hot enough title in your resulting portfolio with a studio- keep in mind, though, you're going to be very, very specialized (not a good thing, really) and there's a lot of people also trying to do the same thing that'll be competing for those same possible slots.
Originally Posted by me262
Like I said...it's more like a Tech School degree on steroids...
$75k for this? I'm not going to tell you that it's a bad idea, but you might want to get a more generic degree, even if it's online, with that cash- but then, that'd be me. :D Ever given someone like University of Phoenix a check-out?
Didn't know CS is considered "that" good already. :D
From my experience so with with both Bachelor and Master courses it is just a foundation though a good one. You have to connect it yourself to game development like for example with AI. The AI courses we had covered the different ways of handling AI. For game deving though you have to connect and extend them yourself ( when does what fit, how to do the actual implementation, how to LOD it well and so forth ). It's though not bad... I mean... I liked the Compiler course and went afterwards implementing my own scripting language ( which ended up in my engine as a module for the adventurous ones :D ) and many other things started there. So if I had the choice between a CS and a game-dev course I'd go for CS... especially if you dig hacking and software engineering and fiddled with that sort of things already it's worth the time.
The good CS grads will be very good. The will also probably love what they are doing, and have gone well beyond the "minimum" needed to do well in any component of their course. This is generally the case in any discipline.
Yes, I agree that it is all about getting a solid foundation, and having a piece of paper to get you the interview. After that your own commitment and ability count for more than the course.