This isn't one of those "tell me what to do with my life" posts. Or at least I hope it doesn't turn into one. I'd just like some feedback on a few thoughts. I'm a university student, and I recently switched my major to Computer Science. To put it as simply as possible, I love computer science, but I absolutely hate computer science classes. I'm not exaggerating when I say people have noticed a significant change in my personality and disposition since I've started taking CS classes. I'd get into more detail as to why they're so bad at my university, but that'd be a full-blown article.

The reason I'm writing this post is that I'm honestly confused, and have few people to go to about this. I'd like to switch my major to either math or physics. But anytime I say that to someone, they ask that horrible question: "How are you going to get a job?" The consensus is that math and physics majors either teach, or go to graduate school. Neither appeals to me.

Personally, I'd like to seek education that I really believe is meaningful. I don't want to worry about whether it'll get me a job or not, because I think there's more to life than making sure you've got enough money to keep your Netflix account active. What would excite me is being able to work at an innovative or interesting new company, even if it doesn't make a lot of money. If I can't find one, I'll try my best to start one.

But isn't that a bit unrealistic? I'm worried I might be biting off more than I can chew. Most of the interesting companies I'd like to work for, that are in Robotics or working with NASA on something, seem impossibly out of reach. I'm not going to Carnegie Mellon, or MIT like the other thouands of people applying to them every day.

I don't want to work at a "good" job that pays the bills and suffices, but I don't want to end up even worse off because I aimed too far and completely missed. I'd just like to do something exciting and challenging with my life. Everything else is in the background.

Does anyone have any input? Anything at all is fine. So far I've just been thinking about this on my own.

I'm kind of in the same boat. You should probably try and get a degree that'll secure you some sort of job outside school no matter what, because after all, like you said, without a job and income you're probably not going to get very far, no matter how meaningful an education you got. Like some dude said, knowledge without action is futile. I had this idea a while ago that once I'm done with university, I'd get myself an easy, stable job and get things in order for a couple years (and start repaying the damn student debt) and then try and either find a cool company to work at, or failing that, create my own business somehow, once I save enough money. I don't know how realistic this is, and frankly I'm not at the point where I need to worry about it just yet, but it's something to keep in mind.

Why do you dislike computer science classes? It might be important. Your post implies you do not find them meaningful... but you just can't make this stuff up. I didn't know much about graphs until my first computer science year since my self-learning process didn't really find many uses for them, and now I find them pretty cool and relevant.

But isn't that a bit unrealistic? I'm worried I might be biting off more than I can chew. Most of the interesting companies I'd like to work for, that are in Robotics or working with NASA on something, seem impossibly out of reach. I'm not going to Carnegie Mellon, or MIT like the other thouands of people applying to them every day.

Well, yeah, it's true that you are on average disadvantaged against MIT students and that's a fact of life, but that doesn't mean it's hopeless. You should start building some sort of portfolio of personal projects (related to robotics or relevant programming, of course) if you haven't already because when you start in the field you'll have zero work experience and showing your motivation and drive could make the difference between getting hired and, well, not. You can make up for not going to a prestige college...

In any case, I suggest always having some sort of backup plan, because getting stuck in the wheels of bureaucracy sucks.

Reading over my post again, this all feels like very generic advice.. sorry.

The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.

If you like computer science, do lots of it on your own time. In my experience, employers will like you if you do lots of things outside of school and can bring demos of things you've done outside of school to the interview.

Attending computer science courses does not a competent programmer create.

Most of the interesting companies I'd like to work for, that are in Robotics or working with NASA on something, seem impossibly out of reach. I'm not going to Carnegie Mellon, or MIT like the other thouands of people applying to them every day.

I attended a 3rd-rate private school - one which dissolved their CS department about a year after I graduated. That didn't seem to have a negative effect on my job search, and by dint of a lot of computer science work on my own time, I'd hazard my skill levels upon graduation were on par with graduates from the prestigious tech schools.

If you like CS then I'd say try and stick it out a little longer. Remember you will only have to deal with those classes/professors for a limited time, but the knowledge you gain will stay with you forever. And it's also a whole lot easier to do the things you enjoy when you don't have to worry about paying the light bill.

Once you graduate it's far more important what you can actually do than where you went to school. I would even go so far as to say that the school is almost irrelevant, provided you can demonstrate your knowledge. My Uncle works as a DBA and his degree is in Journalism. I've also seen in Job postings for programmers where a degree in Math was listed as acceptable for the position.

If you haven't seen it yet, you might check out Udacity.com (Lol this is probably the 5th time in a week I've recommended this site, I'm starting to sound like a broken record). They have some very cool classes, like programming a robotic car. It's also hands down the best experience I've had learning computer science.

The most important thing I've learned in school is becoming responsible for my own learning. I don't depend on the professors for hardly anything unless I just run into a wall. I view them more as facilitators.

In the end, do what feels right, because that means it probably is. If that means going for physics or mathematics then do it. Who cares what others think, they aren't you.

I feel ya. I love computer science just as much as you and do tons of it on my spare time as a hobby, but when I took classes in it my motivation suddenly died. I just feel classes turn learning into a chore instead of making it a joy as it is as a hobby.

Its also worth mentioning that a math or physics degree would hardly disqualify you from programming gigs, provided you can program and have something to show it. In fact, companies see comp. Sci degrees all day, every day. Someone who can program and has a bonafide mathematics or physics major is probably something of a treat. Many job postings I've seen have specifically said that a math or physics degree is a perfectly acceptable substitute for a CS degree.

If you believe those programs. would be a Better fit, and you can dedicate yourself to learning some computer science on your own, and develop a portfolio, its a path that's both without merit.

If you want to major in math or physics, but get a programming job, that's certainly doable. At my last job, I worked under a project lead who majored in math, not computer science.

If you're going to do that though (switch to math or physics but still want a computer sciencey job), listen to Oberon_Command and do lots of computer science stuff on your own time. And if you decide to major in computer science anyway, listen to Oberon_Command and do lots of computer science stuff on your own time. A degree is worthless without skills to employ.

I'm sorta going through the same thing. Most of the CS classes at my university aren't so much badly taught as they are just irrelevant. While I'm sure I could learn a lot from understanding FORTRAN, I don't exactly want to spend my time learning it since I probably will never use it. Which is why I'm not getting a CS degree, I'm actually going for a double major with aerospace engineering and physics. I've already worked on a group project where we designed an autopilot program for a little rc airplane, so it's not like I'm not learning useful programming skills by not taking those CS classes. My aunt is a senior developer at her job, she's one of those old school hackers that can do almost anything with a computer, but her degree is in biology! That said, I'm sure having a CS degree will open more doors than a degree in biology unless you can prove that you have the skills.

Thanks for all the input, everyone. Next semester I'll have to take a few Math courses that are cross-major, meaning they could apply to Computer Science or Math. The wisest thing for me to do is see how those classes are, and make my decision. But it was really good for me to see some outside opinions.

I'm sorta going through the same thing. Most of the CS classes at my university aren't so much badly taught as they are just irrelevant. While I'm sure I could learn a lot from understanding FORTRAN, I don't exactly want to spend my time learning it since I probably will never use it. Which is why I'm not getting a CS degree, I'm actually going for a double major with aerospace engineering and physics. I've already worked on a group project where we designed an autopilot program for a little rc airplane, so it's not like I'm not learning useful programming skills by not taking those CS classes. My aunt is a senior developer at her job, she's one of those old school hackers that can do almost anything with a computer, but her degree is in biology! That said, I'm sure having a CS degree will open more doors than a degree in biology unless you can prove that you have the skills.

If my school offered an Aerospace and Engineering major, I'd have dropped CS without a slight hesitation. I guess it depends what you want to do, but you might be better off just choosing one major in the long run. Those are two intensive fields of study

While I'm sure I could learn a lot from understanding FORTRAN, I don't exactly want to spend my time learning it since I probably will never use it.

While the sentiment is understandably common, be very careful of falling into the trap of believing that a particular approach or technology makes everything you learn irrelevent. In fact, it could just as easily be argued that using 'irrelevent' technologies as learning tools is a benefit, because your employer won't have to tear down the crappy coding habits you learned in the language de jour before they can start building your skills back up correctly.

Saying you can't build software because your school taught you fortran (or Java, or python, or etc.) is like a carpenter saying he can't build a house because his school only taught him how to use ball-peen hammers instead of the usual claw-style hammer.

Yes, you need to be familiar with the tools people are hiring for, but that's your job to learn them -- your school's job is to make you a computer scientist, not even to make you a programmer, much less a <language X> programmer.

If my school offered an Aerospace and Engineering major, I'd have dropped CS without a slight hesitation. I guess it depends what you want to do, but you might be better off just choosing one major in the long run. Those are two intensive fields of study

Ya, Aerospace is definitely a fun field. And I know, everyone has told me just how hard it will be to double major. But it's a fairly common occurrence at my uni to double up with those two, and there's even a guy a year ahead of me doing just the same thing, and another doubling with AE and math. Plus the department heads really work together to make it as easy as possible. I'm not even gonna lie, it's incredibly difficult at times, but I enjoy the challenge.And Ravyne, I definitely understand what you're saying. I guess you can't code in fortran in any language if you can't code in fortran to begin with. All the same, it's not something I feel like knowing it would help me much. And if a music theory professor can teach you music theory using any instrument, whether it's a old clavichord or a modern electronic synthesizer, then why doesn't the same apply for computer science?

OP I am in a very similar situation. I made a thread on it in the "Breaking in into the Industry" section called "mixed feelings at uni". I've decided to just stick it out in uni, get my degree (currently freshman) and just program A LOT in my spare time (which is quite plentiful as an undergrad).