High-school/college advice needed!

Hey guys First off, sorry if this is posted in the wrong forum...there didn't seem any here that quite fit my question.
I need advice on what high-school classes that I should take and what college that I should go to...first off, my qualifications and achievments (I'm a 10th grader [sophmore] living in the US):

I know PHP...I've programmed quite a few websites using the language, and consider myself 'advanced', although not expert.
Obviously I know HTML...
I'm pretty good at javaScript, about the average javaScript programmer
I'm a beginner/average Objective-C programmer
Slightly above average programmer in Java and JOGL (I'm currently working on a 3D FPS applet in it)
Pretty good at the basic OpenGL stuff, haven't done anything advanced, though
Advanced at C++, although not even close to expert (Compared to other game programmers, I guess I would be about average in C++)
Know a bit of C, but never programmed anything in it
Know the rudimentary basis of network game programming (the very basics )

I aim to become either a Game Programmer or a Virtual World Designer (MMORPG designer). What classes should I take while I am in high-school? I plan to finish high-school on schedule because of the social aspects of it,
although I know some people who have just dropped out and gone straight to college. What is a good college to go to? Perhaps the most important thing that I'm looking for in a college right now is skipping classes that I already know. I don't want to sound patronizing, but many of the students that join game programming colleges have never even programmed before; I've been programming for 2 years, and I'm currently working on my second game (the first one was Pong ).
I would also prefer a college that teaches more theory/how stuff works than actual application...on the other hand, it would be awesome if I could find somewhere where I would be paired up with a graphic artist and/or a 3D modeler and we could make our own game as a project. Whether the college teaches Mac or Windows programming doesn't matter much, although it would be great if there was somewhere where I could learn more of both
I don't mind moving out of the country, if that is what it takes...in fact, that would almost be better than staying in the U.S. during my college years.
One of the more discouraging things that I've learned this year is that, even in programming classes, for some reason morons still seem compelled to take the class and the curriculum still moves at an excruciatingly slow pace; In the class that I'm currently taking, there are approximately 32 people...four of them (including me) are either smart and/or interested in the class...the other 28 people try to slow down the teacher as much as possible...fail most of their tests, and cripple the class in any way that they can .
I guess my point is that from what I've heard, most programming colleges are almost exactly like my classroom, just on a larger scale...the classes are slow, the kids are not interested in the studies that they are taking, and little learning goes on; I really want to avoid this, so I'm appealing to you
Any advice on what classes to take/college to go to/general advice on how I should structure my life to become a game programmer would be great
Looking forward to hearing advice from you guys ^_^
-wyrmmage

If you can be a decent writer, too, you can go a long ways. It may seem obvious, but be sure you can work well on a team and clearly communicate with others.

I would say go to a university with a strong computer science of computer engineering program. I think state schools can provide just as good a training as many private universities. State schools are also usually good at letting you move past math classes or other things you get AP credit in.

Take AP classes and take AP tests. You do not need to take the AP class to take the test - get a book at Barnes and Noble and whack down those easy AP tests like government.

I did not put enough thought into this reply, but the rules outlined above can be generally followed.

ok, thanks for the advice
Do colleges normally let you skip classes on a programming language that you already know? Can you test out of some (programming language specific) classes? One of my cousins just got out of a college where he took programming courses, and apparently they didn't even get to making their own objects by the end of the year in C++
-wyrmmage

wyrmmage Wrote:ok, thanks for the advice
Do colleges normally let you skip classes on a programming language that you already know? Can you test out of some (programming language specific) classes? One of my cousins just got out of a college where he took programming courses, and apparently they didn't even get to making their own objects by the end of the year in C++
-wyrmmage

That would depend on the professor. One of my profs let me take his finals to get out of his classes. The other prof insisted that I take the full class.

wyrmmage Wrote:Do colleges normally let you skip classes on a programming language that you already know?

Not really. If you pass/ace an AP test you will get either unassigned credits or credit for a particular class. (Depends on the college.) And most colleges are pretty stingy when it comes to CS credit. I rocked my AP test in the face and got 2 unassigned credits- not even enough for a whole class. Just do em and take the easy A's.

wyrmmage Wrote:I would also prefer a college that teaches more theory/how stuff works than actual application...on the other hand, it would be awesome if I could find somewhere where I would be paired up with a graphic artist and/or a 3D modeler and we could make our own game as a project. Whether the college teaches Mac or Windows programming doesn't matter much, although it would be great if there was somewhere where I could learn more of both

You will most likely not make a game as part of your curriculum in college. The only time you'll have a chance to would be in a Software Engineering class, which is about coordinating larger groups on larger coding projects. If you want to make a game as part of your curriculum (at the cost of a well rounded CS background) then take a look at the trade schools for game design (Digipen, among others.)

Also, you probably will not learn things like Carbon, Cocoa, OpenGL, or DirectX. You'll need to learn that on your own. For our Computer Graphics class we had a professor who taught with OpenGL, and another that used Java3D. Most of the things I coded in college were Unix command line deals. Again, this is different in the trade schools, which I have no experience with.

High school classes aren't going to matter much. You can take the AP test and get some credits, whatever that will do for you depends on the college. At my school, I got to pass out of the "Intro To Programming" course with my AP credits. I took it anyway, never hurts to learn things from another perspective.

For college, I don't know anything about the technical schools, so I don't have anything to say about those. But there is something to be said about getting a liberal arts degree, and being "well rounded" in your education. And there is a lot to be said about going to a school where you live on campus and really feel like you are away at college. I have friends that went to commuter schools or to smaller schools, and they are blown away by how much fun they have when they come visit my school for a weekend. I think it's really important to have that social aspect to college, you learn so much about people that way, which is always important.

At my school, the CS degree is set in stone with a slew of requirements, plus a few CS electives. There are no classes to learn a specific language. I've had classes that teach in Java, C and C++, and they will tell you not to take them until you've learned that language on your own. What you learn mostly will be concepts and how to apply them, regardless of the language. And there is certainly no "slowing down" of the curriculum for people that can't cut it.

My one piece of advice is, go somewhere where you enjoy being. Spend a few days there during the school year, checking out the campus. College should be fun. Oh, and when get there, you will (hopefully) realize that your professors and your classmates _are_ going to be better programmers than you, and your job is to get better than them. Taking a cocky attitude will only hinder you, as it did me for the first year I was in school.

ok...sounds like the colleges that you guys went to are much better than the ones that I've been looking at Ill try to keep in mind that hint about not being cocky If I'm understanding you correctly, I should go for normal CS classes and learn game programming in my spare time?
Thanks for the great advice guys
Any colleges in particular that you would recommend?
-wyrmmage

At Case Western Reserve in Cleveland (where I'm probably going), they have a big project every year where a few departments come together and make a big game, so you would be working on the coding team there.

Anyway...all the math you can get, all the physics you can get. If you want to make games in your spare time, I'd suggest an art class or two. I never took one in my life and now I suck at making coder art.

AP Comp Sci will get you out of the most basic required CS classes, which will give you an elective or two.

Just do the normal CS classes. Even if you're making games, it's still helpful to know everything from pure assembly to OpenGL to Java. Be versatile.

LongJumper Wrote:But there is something to be said about getting a liberal arts degree, and being "well rounded" in your education.

Agreed- you'll have to decide between the two careers you mentioned (programmer and designer.) In most studios they are serparate, and two very different jobs. It looks like you want to be a programmer- if so then go the typical CS route. If you want to be a pure game designer, you might want to try the liberal arts route and take a bunch of programming classes, along with the physics and enough math to get you up to game theory. Most U's will offer programming classes for non-majors.

wyrmmage Wrote:One of the more discouraging things that I've learned this year is that, even in programming classes, for some reason morons still seem compelled to take the class and the curriculum still moves at an excruciatingly slow pace; In the class that I'm currently taking, there are approximately 32 people...four of them (including me) are either smart and/or interested in the class...the other 28 people try to slow down the teacher as much as possible...fail most of their tests, and cripple the class in any way that they can .

I just paid $4,000 for a college pre-production class and found the same exact thing. That experience pretty much made my decision to go with an online degree, I don't need to waste time and insane amounts of cash commuting and sitting in a room full of slackers.

College won't make you a game developer, sticking to it day and night for years will. If you can, save money and go to your local state school for as long as you need to. Once you have a fist full of credits to transfer and have found the place you want to be for a few more years, then move on to that school.

Be wary of the online schools teaching "game design", they are pretty much a scam.

Sheesh that's quite a list of skills. I thought I was pretty cool being a junior (11th grader) making a simple 2D game with C, SDL, and OpenGL (and recently OpenAL).

I really love game programming, but I also love math. I also know how hard it is to get into the game industry and how awful the working conditions are. Having taught myself all that I know about programming, I can't imagine taking a class in programming (not that my highschool offers anything like that). But I dunno. I will most likely go to college for applied mathematics, with maybe a minor in software engineering. I am actually going to be opting out of the second half of my Pre-calc class (and AP calc next year) and taking Calculus at the local college through the community highschool student program this spring. So wish me luck with that.

But wow, 10th grade and already looking at colleges? I haven't even started looking yet.

I went into university with pretty much that exact programming skill set (plus or minus a few useless other things and maybe a bit more experience). I talked to the CS profs and they basically told me that I would be wasting my time to take CS. They said that I could skip virtually every programming related course up about 4th year, but they also wanted my money. Basically I would have to take 4 years of courses for one year of instruction in the field I am interested in. And I've learned all of this on my own, why on earth can't I learn the rest that way too.

I decided to take mechanical engineering instead. Lots of calculus, physics, and matrix/vector math there Also there are a few programming classes (2-3) like the C one I'm taking next fall that I can ace and bring up my GPA. Plus this lets me diversify and perhaps focus a bit on mechanical things like robotics and interface them with my programs. I figure I can program *functionally* as well as *I* want to, and if I need to get better, I'll do what I always do: ask google, ask questions on forums such as this, and bash my brain against the problem until it magically works (that latter actually does work more often than not).

In the end I chose not to take CS which was a hard choice for me. I had always figured that CS was it. I'm a computer programming guy, where else makes sense? You are in your own shoes, although freakishly similar to mine a year ago, so you've got to make your own call on this one, but think about it. Where do *you* want to end up. Ask the right people at your university where the CS grads get hired, ask for a few example jobs. Do you want those jobs? Maybe? Maybe not. Personally, for you software engineering looks like a good plan. I suppose that I should clarify (in my opinion) the difference between software engineering and computer science:
(text paraphrased and rehashed from a university web-page)

Computer Science focuses on understanding, designing, and developing programs and computers. Computer Science concentrates on data, data transformation, and algorithms. Advanced courses present specialized programming techniques and specific application domains. (IMHO this is the boring, but important stuff that I tend to learn but rarely ever use)

Software Engineering deals with building and maintaining software systems. It is more applied than Computer Science, placing greater emphasis on the entire software development process, from idea to final product. It is also more disciplined than Computer Science, applying more systematic practices to help ensure that products are reliable and safe. (read: you actually program and rather than focusing on the whole computer, you focus on using it to make programs).

Disclaimer: I probably am misinterpreting most of this as it's 2:15AM and I had only 5 hours of sleep last night. Also, if there are any grammar mistakes or diction misuses... well. Tough.

What helped me decide was looking at the jobs that current graduates got from a number of things, and opening my mind to more than just computers. It turns out that I really don't want to spend my whole life in front of a computer; some things are simply more worth while, but programming is and always will be crucial to everything I do, and game programming will always be a hobby and maybe someday something more er... lucrative

Anyway, good luck with this decision. I know it's not easy. Oh, and good call looking at university now. If I hadn't started figuring it out at the end of grade 10 I would be sitting in some really annoying class learning about if statements and maybe by the end of the year learning 49 different ways to sort an array.

Another thing: people here *love* to give advice It makes you feel important and has a redeeming quality . Not that that discounts it, all of the posts so far have awesome points.

Oh, and Ferum, don't worry about it if you know C, you can learn pretty much any other programming language (well, reasonably similarly structured languages like PHP, C++, ObjC, BASIC, LUA, Java, most other modern ones) within a month or two (note: time subject to change without notice), and the more you know, the faster you'll catch on.

Joseph Duchesne Wrote:I talked to the CS profs and they basically told me that I would be wasting my time to take CS. They said that I could skip virtually every programming related course up about 4th year, but they also wanted my money. Basically I would have to take 4 years of courses for one year of instruction in the field I am interested in. And I've learned all of this on my own, why on earth can't I learn the rest that way too.

Not to be offensive, but whoever told you that was full of shit. Just because you can program does not at all make you a "computer scientist."

Some college courses teach assembly. Will you ever have to use assembly? Probably not.
Some college courses teach you the essentials of operating systems. Will you ever design an operating system? Probably not.
Some college courses teach you computation theory. Will you go out and find a polynomial-time algorithm to solve the NP-complete set? Probably not.
Some college courses teach you a lot about data structures. Will you use a red-black tree all the time? Probably not.

However, I can think of a dozen things from each of those classes I have applied to an application that doesn't even remotely resemble any of the programs we wrote in those classes. Why do you think it's such a bonus to have a degree in any field related to your career? It's because even though you may know how to do it *your* way, you need to know how to do it *every* way.

To believe that you have learned everything in a field is simply conceding that you just don't know the depth of it, and that is the sort of cockiness I am talking about.