Mechanical engineering vs computer science

I’m sure there have been hundreds of these threads before, but bear with me. I’m a high school senior who can’t make his mind up. Of the schools that I’ve applied to, 2 have been for cs (UMich and UVA). The other 3 are for engineering. I still have 4-6 schools to apply to and I can’t decide on what major in. Some days I like engineering, others are comp sci types of days. I don’t have any coding/programming experience and I won’t gain any for a short while because of school.

I’m currently in AP Physics 1 and am doing ok. I’m also in AP Calc ab and I’m starting to find it easy. We’re finishing up a bunch of theorems (Rolle’s MVT, EVT) and stuff like the first derivative test. I feel like I’ll be fine in the calculus side of things for now.

I don’t foresee many problems with my math, but you never know. Does anybody have any insight at all? This is driving me crazy. Anyone have experiences with either major? How much studying/homework do you do in an average week? How is the job and internship market, specifically for cs? For every “LEARNING CODE=BIG$$$$” article, there’s one that talks about grads not finding jobs and the market being over saturated. What’s true?

Seriously, some days I can only see myself doing software engineering or app development or some type of comp sci, and sometimes I leave school after calc and physics and think that engineering is for me. HELP!!!

I guess I should add that if I were to major in mechanical engineering, I would minor in cs. My “fallback” for either major is finance because the math seems like it would be like algebra after an engineering curriculum.

Before anybody asks, I don’t know what I can “see myself doing”. That’s why I made this thread.

Relax. At many schools, the majority of classes will be same for CS or Mech Eng. It’s not critical that you decide now.

You really need to code to see if you can envision doing that day in day out for the rest of your life. MEs code too, but that’s not their sole existence. I would strongly advise you to sign up for Code Academy (or similar site) and take a beginning course in Python. Pound it out on the weekends if your school schedule is busy. You will find the insight invaluable.

@eyemgh I created a Code Academy account a while back, but never really used it. I’m gonna try it again during thanksgiving break. Is there any specific reason for python? Is it a beginner language?

I have the same exact problem. I still can’t decide, but I’m going to apply to computer science all the schools. From what I have seen, it is more difficult to get into the computer science programs compared to the engineering programs - and it is definitely way easier to transfer into engineering than into computer science once school starts. So I’m applying to computer science because I know that it is easier to switch into engineering later than into comp sci.

Hope this helps.

Lots of languages have similarities. Each has it’s strengths and weaknesses. Python is useful and accessible and is now days considered a good jumping off point. Having taken one, you’ll find transitioning to others easier. That doesn’t mean someday you won’t learn C, C+, Java, HTML, etc. You will. You just need a taste to see if it’s something you can see yourself making a career of.

I had a similiar situation and choose mechanical engineering. No regrets at all. Realized that I did not want to spend my time infront of a computer screen all day. Many mechanical engineers spend lot of time on the computer but it’s not required for all jobs. There’s also something satisfying about having a physical product infront of you instead of lines of code imo.

Also, the major that makes you more money will be the one that you’re more interested in. You can earn boatloads with either major if you work hard. At my school the MEs work harder and have more work from what I’ve seen. Overall CS might make slightly more money, but ME has better job stability. Job market is strong for both majors. CS is probably stronger right now, but ME is more consistent and laws of physics do not change unlike programming languages which are outdated fast.

Ultimately it is up to you. You might want to explore a bit more specifically what each major does and if the career fields within them interest you. Don’t let money play a big role in your decision between the two.

EDIT: Why not look into mechatronics? Seems like the best of both worlds.

I am going to also suggest mechanical engineering. Don’t chase after the easy money - software has plenty of profitable positions but it also has a lot of not-so-impressive jobs akin to building a website. Aptitude in software is much more valuable if you have some other, deep skill to go with it, for example a strong fundamental grounding in mechanics and certain specialties therein.

I work for an engineering company and we have a saying, engineering can do computer science work but computer science major can’t do engineering work. I’m sorry if I offended any computer science major people here, but almost all engineering require students to take some programming classes, and just like @eyemgh and @r77r77 said, programming language are similar, the most important is the logical thinking and problem solving skills. Engineering would require more work but I think outcome is better. Once you get ME degree you have different options and you can still getting into software programming area if you really like it.

My DD’18 (junior in HS) is in the same situation, and I told her the same thing. Go major in ME and do CS work from hobby and fun.

@as1799, I’ll chime in on the other side, although I totally agree that what you like most should guide your decision. I realize you don’t know that yet.

I think CS has some advantages - you can use your skills at just about any company. The number of companies that employ Mechanical Engineers is far smaller than the number that employ programmers. Of course, you might not use your degree at all. Many people who get Engineering degrees get jobs in Finance and other fields after graduating.

Both degrees are well respected. Mechanical Engineering will probably be more work than CS. There are more required courses in Engineering than CS.

Some things to consider - do you like thinking about how things work, physically? I’m assuming you do if you’re thinking about ME. But would you rather take something apart and figure out how it works, or do a brain teaser?

I took courses in both Engineering and CS in college. I liked learning about Engineering, but I was less interested in the labs than in the theory. Software appealed to me more. The programming assignments are the labs, and I knew right away that I liked them better than my Engineering labs.

I love brain teasers, but I was never someone who liked to tinker with mechanical things. For me it was an easy decision after I took enough courses. Luckily, the first year or so should be pretty much the same courses at most schools, except that you’ll probably have to take some Chemistry for ME, and it’s probably not required for CS.

Engineers cannot, in general, do computer science from their degree alone. Pretty much all engineers can do basic and perhaps intermediate programming, but that’s not the same thing as computer science and it is reductive to say that it is.

Signed, an engineer.

That said, much of what needs to be done in software is not so difficult from a software perspective, but from a physics/engineering perspective. Certainly there is a lot to be done from a computational power perspective for a lot of the work, but sometimes the most difficult aspect can be understanding the engineering side of software that does an engineering job.

There is a lot to software that you will only learn with a computer science degree. That includes a lot about data processing, databases, networks, and performance issues. You probably can’t program a good AI without a graduate CS degree, and such is quite well acknowledged. But at the same time, if you are inclined towards mechanical engineering there is plenty of software stuff that just won’t appeal to you. That’s the “building a website” aspect of it, the kind of work that is just plenty of not-so-interesting software overhead resulting from the fact that new languages are developed all the time and you have to constantly relearn them. It pays well right now, but it isn’t intrinsically valuable enough to keep its value in the long term. Meanwhile, something like building aircraft has an immediately obvious long-term value and will of course be useful in the future.

So if you want to take a software approach to engineering work, it’s best to start from the engineering side, and fill in the software side later, through a minor, or a graduate degree, or just dedicated self-study. An engineering degree grounds you better; a CS degree can much more easily lead you in a direction that an engineer really would not find much value in.

@NeoDymium I was planning on minoring in computer science

You should at the very least go up to an “introduction to algorithms” course. More is helpful, especially if you go for some CS degree in the future, but for an engineer that’s about the cutoff of where you have enough perspective to understand what CS is about and what you can do with it. After that you fill in the details on your own.

@as1799, there may be reasons for choosing ME over CS, but this is definitely not one of them.

I disagree with this as well. If you end up loving programming, and despising Physics, an Engineering degree will ground you in something you hate - that’s not better, that’s worse.

I think @NeoDymium is trying to say that if you’d like to program in an Engineering environment, on Engineering systems, that you’d be better off choosing ME as your major and picking up whatever programming skills you might need. That I would agree with. And I would also agree that you’ll cover a lot more ground in an Engineering degree.

If it were a choice between Computer Engineering and CS, I think I’d agree with the comment about grounding you more. Computer Engineering will give you a lot more background in how computers work than a CS degree. But ME and CS are two pretty different things. In Engineering systems, both will be involved, so knowing both would of course be an advantage, but you might end up really liking Web programming and building web sites. In that case, you’ll have learned a whole lot of difficult Engineering material that you won’t need at all. It will be character building, but you could put that extra effort into advanced CS courses.

One other thing. If you finish a Mechanical Engineering degree and then decide that you want to go into straight business programming, that will be an easier transition to make than if you do CS and then decide you want to go into Mechanical Engineering after graduating. Maybe that’s what @NeoDymium was getting at.

If you’re really on the fence, I would start in ME, and take some programming courses as early as possible. But I would take into consideration how difficult is to move between the two majors at the schools involved. It might make more sense to start in CS, but also take the intro ME courses in sophomore year, if that’s possible.

The “building a website” aspect of CS isn’t something that is well grounded enough to keep its value. CS itself has plenty of value in its entirety; however, in my experience a CS background is better when paired with something more along the lines of “hard engineering disciplines” (“hard” as in opposition to “software” not “easy”). The technologies for web-based work are often too ephemeral to really make a good career. You can make great money now but fail to build useful skills that are going to serve you in the long run if all you do for the next 20 years is learn a new web platform every few years (not to say there isn’t valuable web work, but there absolutely is a lot of junk work there too). While some CS people are able to realize this and find the CS fields that have long-term value, I find that engineering-turned-CS folk do this better.