Majoring in programming, lost and confused

A lot of my classmates (including me) have really been having a hard time understand how each major differs from one another and which one is the one we are looking for. Our school, and most other high schools in NJ, really don't have too many people to ask these questions. The computer programs the schools have are overlooked pretty often. It's a real shame. So hopefully I can get some incite from you guys, I appreciate more than you know.

So here's the situation: I unbearably want to code for a living. I want to learn different languages and programs and work with a team, ideally to make games, but that's in foresight, I need to learn to code first. And I've been looking at all the different majors that local colleges offer, and its all the same to me. I've never been taught the difference. 

1) What should I Major in /  Whats the best Major?

Now I know this was gone over already by Logan and Wendell, but it wasn't really in depth. (to clarify, I ask this in the same way someone who likes mathematics would ask "should i do trig, or calculus, or statistics or...") They recommended just plain Computer Science. Well, what about the other majors like Program Engineering? Is there a difference? 

2) I want to work with a team. Is there a major for that, is this more of a job position where I work with a team?

3) One of the colleges I am applying for asked me if I wanted to focus on advanced or applied computing. What in the fuck is that? 

4) I'm sure theres a million little kids who love to play video games and think it would be just the bestest thing ever if they could make them too. Well yeah, thats kinda me. But I understand that you don't just MAKE games. You need a team and such. If  I was the programmer on that team, what would be job title be, and what major would be best for that? I don't truly intend on majoring in making games, but applying what I learn in class to make games would be ideal. I want 'programmer' on my resume not 'this guy makes games'

No tl;dr, this is serious and I'm really scared of making a mistake

 

And it goes without saying, thanks for helping!

 

Programming is about solving things. The actual implementation is generally trivial as long as you understand the thing you're trying to solve, and you have a basic foundation in logic. 

Don't put too much weight on this -- I'm no expert -- but I would recommend majoring in the thing you want to program, like mathematics or physics or decision theory, with your minor in computer science.

Or if you don't much care what you're programming, just that you're programming something, you should major in CS. 

1) What should I Major in /  Whats the best Major?

Pure computer science. The reason for this in your particular case is that Pure Computer Science generally involves taking a non-computer science class for majors (e.g. physics, chemistry, biology, etc). This will give you 'non-CS experience' in an academic sense. Also, pure CS usually involves math through Calc III or you can minor in math, physics, etc without having to take more than one or two extra classes. At EA (you don't want to work at EA) game programming is like a veal fattening pen. At Valve, and good companies like Valve, they can hire the best of the best so you have to be really good and hone your skill to a fine art. This means having a really good and deep understanding of the mathematical underpinnings of "real things" as well as computer science. No doubt this is what has helped people you know like John Carmack. 

2) I want to work with a team. Is there a major for that, is this more of a job position where I work with a team?

There is not a major for this; it is something you do along the way. You take the initiative and "network" with people in college. Be good at your classes, don't be a putz. Be enthusiastic but focused. 

3) One of the colleges I am applying for asked me if I wanted to focus on advanced or applied computing. What in the fuck is that? 

Grab a course catalog and look it up. There is a three sentence definition of each class you would take. You can side-by-side these majors. Go read to see exactly what the differences are. My best guess is this would be advanced topics like distributed/parallel programming (e.g. Hadoop type stuff), AI, image processing, and those sorts of advanced topics in CS. You see folks pursuing this if they want to be the next John Carmack, and also if they want to go on to PhD School after being an undergrad.

4)

Angry birds was a very small team. A lot of "casual" and "indie" games are very small teams. This will come in time; don't be afraid to tinker. You will give yourself good experiences "cloning" games like Angry Birds, etc. It is possible to write a clone of Angry Birds for Android in a weekend with about a year of experience with Java, for example. You can work on gameplay mechanics and minigames without a team. No reason you can't be doing this stuff now. No matter what kind of learner you are, there are resources online to help you learn programming. Don't doddle; go forth into the world and read, apply and experiment. 



I agree with Gekkey.  If your goal is to be a programmer/software engineer, then Computer Science, or Computer Engineering, is your major.  Computer Engineering being the "hardware" path, and pure CS being the "software" path.  The two are very similar and CE is going to prep you to do circuit (ASIC, VLSI) design, as well as programming.

Not all schools will have both paths and some will have other variants.  I know Stanford has a major that mixes CS with Cognitive Sciences.

I think the trick to decoding all those majors, is to look at the curriculum.  Look at what Stanford, UC Berkeley, MIT, Princeton, CMU have as their curriculum for Computer Science, if you're not sure what CS should contain.  Then you can evaluate any "CS variant" in terms of how much it shares with "plain old CS".

More important than what major, is what courses.

I'm not sure about the working-in-teams thing, but my reaction is that most human beings come with that built in already.  You can always look for extra training outside of school if you think you need it.

By the way the video game industry is not a good place to aim at unless you're planning to be an independent/entrepreneur.  Maybe things will improve by the time you're out of school.

 

I feel like it's probably worth an advanced warning: what you do in your classes, depending on where you go, may not be all that helpful. In some cases, I've heard that it's extremely difficult and fast pace. In my case, I learned the course material for one of my classes in two days before I got into the class. We spent something like 5 weeks learning control statments, and 4 weeks on loops. This is stuff I learned in about an hour or two. The majority of my time in college has been spent waiting for the next lesson. What they teach me over the course of a month can be learned easily in one day.

Basically, just keep in mind that this can happen, and that when it really comes down to it, you're there for the degree, not the education. If the education is great, then awesome, but if it is similar to what it is at my college, it's probably a good idea to do some side projects to keep from losing your mind.

Oh, and a lot of the stuff you learn to begin with will be theoretical, not practical. Practical use of the things you learn will be quite different than it is in class. It will get more practical later on, but the beginning might be a bit annoying (more reason to do side projects).

If the work is really slow, and you're not doing anything, doing side projects is a REALLY good idea. That will help you build a portfolio to show to future employers. Or, if you intend to start your own business, you can do it while you're taking classes. Basically, your success depends a lot of what you've actually done in programming. If you have experience modding games and making games, or doing other miscellaneous coding jobs (outside of class), that will put you leagues above anyone else who only has the information and skills they got from college.

Anyways, back to the question at hand. You want to make games, I'm also someone who wants to do that. I'm in the process of making one right now. I want to start a development company, and become basically the next big thing in gaming. We have ideas, we have the knowhow to make it happen, but we don't have the cash. We're starting with indie games, and will move onto big stuff. The stuff you learn doing a computer science degree won't usually be directly applicable to game development. There are specialized game development degrees from places like Full Sail, but they cost a bit of money, and don't have as much weight in anything outside of gaming. Computer Science is decent, but include a LOT of useless stuff that simply isn't necessary. As far as the way it is looked at by employers, it's seen higher than others in general software development companies, but like I said, you will be doing a lot of stuff that is simply not applicable to game development. At all. That said, it's the best "plan b" degree to get, given that if the game development thing doesn't work, software developers will hire you too. Applied science is new, and it could be useful because it teaches a lot of practical use computing and coding, but it skimps on a lot of the core classes like math and science, which is why some software development companies don't like it. Personally, the applied science coursework seems to be a lot better as far as actual education goes, but if you intend to do a lot of stuff outside of class, that's not too big of a deal. Not to mention the fact that the core classes it leaves out are...well...generally next to useless in the first place. You will need some basic trig/physics and simple math, but most of it can be learned through a google search, and as far as calculating everything, you can make your computer do it for you.

TL;DR

Basically, computer science looks the best to developers. That said, the education you get from college may be essentially useless. Just keep in mind that you're in it for the degree, and make sure you do things outside of class to build a portfolio.

Hopefully I'll be seeing you around in the game dev world soon enough. Look forward to the future of gaming.

Thanks a ton guys, I've got everything just about figured out now, and most of my college apps are done. Everything is looking really good, actually. I was a tad skeptical of posting this, I wasn't in the most stable mood when I wrote it, surprisingly though, I actually got some really good answers. Absolutely fantastic, I really didn't expect this. 10/10!