Hey everyone! Long time/first time, and you guys rock.
I would really like to get a master’s in CS after my bachelor’s in ME. My reasons for this:
I like both CS and ME
They seem to complement each other well (mechatronics, robotics, manufacturing, etc.)
I don’t have any money and refuse to go into debt. Despite my good stats in high school I am enrolled in a pretty low-end state university for cost reasons. If I can use a degree in mechanical engineering to successfully work my way through a much more expensive master’s program, I would have no debt and an advanced degree from a far more reputable institution.
Any comments on the validity of this plan are welcome. It is just a plan, after all.
Then comes (what seems to be) the tricky part. For this to work, I would have to do two things when I graduate:
Convince a top-tier CS program to take me despite my lack of a CS bachelor’s;
Convince an ME employer to hire me and to help reimburse school fees (and to be OK with me going to school… and to let me CS along with my ME…).
What steps do I need to take to make myself marketable not only for a ME job but for a CS MS position as well? Keep in mind this is not a career switch: I have time to build the resume.
A graduate degree is intended to build upon a foundation that you establish in undergrad. That’s why most programs require you to have the equivalent of a major in a field before entering the graduate program; they expect a baseline level of knowledge. They don’t want someone coming in with absolutely no background in the graduate field.
That said, a lot of CS master’s programs don’t expect you to have a CS bachelor’s degree, either; you just have to demonstration some foundational knowledge. For instance, here’s what Stanford says on their MSCS website:
The MSCS program assumes that all entering students have acquired the foundations of computer science* at the level of an undergrad minor.** At Stanford, these foundations are represented by the following courses, which are considered as the standard prerequisites for the program:
CS103 (Logic, Automata and Complexity)
CS109 or STAT116 or CME106 or MS&E220(Probability)
CS161 (Algorithmic Analysis)
CS107 (Computer Organization and Systems)
CS110 (Principles of Computer Systems)
If you have taken these courses - either at Stanford or elsewhere - you have the necessary background to begin studying at the MSCS level. *
Although they don’t say it, I would expect that they’d also want you to know at least one programming language. Many other CS programs are going to require around the same thing - 5-7 courses in CS.
Now, this of course is the theoretical minimum. Keep in mind that many of the top MSCS programs are competitive, and professors are going to select whoever they think is the most capable of success in the program. So practically speaking, people with an undergrad CS major probably have an advantage. However, if you are still in undergrad, you can likely increase your chances by taking as many CS classes as you can. Even after undergrad you can beef up your app by taking more CS classes as a non-degree student.
There are lots of employers who will pay for educational fees/reimburse tuition, and who will allow you attend part-time. (Or rather, they won’t care if you attend part-time as long as it doesn’t interfere with work: so attending in the evenings and weekends.) However, the degree usually has to be relevant to your job. Keep in mind that 1) many top-tier programs in CS only have day time courses, and 2) you would have to get a job nearby a top-tier CS program.
Ok, so I should make sure I take the courses recommended by all the top programs for background. Very good. Luckily, many programs require a degree in a ‘related field’ along with the computer science background. ME is explicitly provided as an example. Not sure why, but that’s helpful.
This seems to be the easy part though: meeting the minimum requirements to even be able to apply. I can do that. Just take some extra courses and study independently.
The big difficulties start coming up in building an actual resumè. “How should I balance ME and CS internships and undergrad research? How do I even convince a CS professor to let me do research with him? Could I leverage one field for the other? (Mechanical engineers seem notoriously averse to programming). What exactly should go into my ‘independant studies project portfolio?’ Should I look for internships that allow me to do both? Do those even exist?” Things like that.
Also, as far as the job-compatability goes, you’re totally right; picking a program and job is going to be a little trickier. ‘Should I try to work part time instead of full? Maybe TA-ships could help out there.’ Could be things for me to address as well.
You might also check to see if your university has a co-terminal BS/MS combination of ME with CS. I know that at Illinois Tech, where I am a faculty member, the CS Department has established such programs, which take 5 years total, between CS and most engineering majors, as well as physics.
As far as getting research experience, that should be easily possible as an undergraduate. When I was a physics major, I worked in a CS research lab and wrote my first paper on a computational physics topic. This should also be easy in ME because there is a lot of research in finite element analysis and other computational aspects of mechanical engineering where computing is important.
@xraymancs Ah, its great to hear that research touching both fields won’t be impossible. Computational mechanical engineering (i.e. finite state analysis) must be extremely interesting.
As far as a co-terminal program, unfortunately my university doesn’t seem to offer such a thing. It’s a good thought for those at universities that do, though.