<p>I just completed my freshman year as a computer science major, and I've been wondering the best way to improve my job prospects by the time I graduate. I have a 3.9 GPA, but I have almost no work experience (other than family jobs) and didn't take any kind of internship or job over the summer. Dream job is to work for NASA or SpaceX, etc, but I'm also open to other things if I enjoy them. I just feel like my resume is really weak, and I want to improve it.</p>
<p>Which of these would help?
Should I:</p>
<p>-Double Major in Physics
-Get an internship/coop
-Double Minor in Physics/Math
-Plan on going to graduate school
-Work during school
-Work on independent software projects
-Get into research at my University</p>
<p>It’s normal for internships and REUs to be reserved for rising juniors and senior, so I wouldn’t worry about that. If you’re set on going to graduate school (PhD), doing research at your university would be the most helpful. If you want to start working straight after your BS/MS, an internship/co-op would be better. If your school has a society for CS Majors like ASIST, it would be good to join that for networking and first hand advice. I don’t think doing a double major or additional minors would be as helpful as spending your time outside of class doing these sorts of things.</p>
<p>Grad school might be helpful if you get a masters from a schools known for a strong CS program which has a large alumni base in CS and has lots of companies come (i.e. Stanford/MIT/CMU/Berkeley, and even schools like Georgia Tech), to sort of compensate for the general lack of national recognition for CS for Alabama - however, a Master’s will cost you money. I would not advise spending 5-6 years on a PhD unless you want to go into academia to pure research.</p>
<p>The best thing you can do is try to get an internship now, maybe at a small CS company. If not, you should try to get a CS research position. That 3.9 GPA will certainly catch a professor’s eye. If you can’t even get that, you could consider taking a class or two over the summer. In both cases you should consider either working on contributing to an open-source project (something you can write on your resume), or working on your own independent software project (you can then write this on your resume AND show it to employers).</p>
<p>How much knowledge of CS do you have?
Some very interesting (and impressive, if you do something meaningful) independent software projects that only require basic programming experience: writing mobile apps for the Android (is done in Java), or the iPhone/iTouch (requires a Mac and is done in Objective-C, which is similar to Java/C++), or doing an interesting web application (depending on how you go about it, you could pick Java, Python, JavaScript, Lisp, PHP, or Ruby). </p>
<p>Internships are not necessarily reserved for rising juniors/seniors. It’s just that they tend to get those internships because they have a greater base of knowledge.</p>
<p>The extra major or minors may not be all that helpful, although selected courses in math and physics may be useful (more so in math – abstract algebra, number theory, cryptography – in general, although physics and astronomy can be useful for NASA specific target jobs).</p>
<p>Relevant jobs and internships, work on open source projects, independent application development (e.g. those little smart phone apps), and undergraduate research should be helpful.</p>
<p>Graduate school with funding (fellowship or assistantship) would be worth it if you happen to graduate during an industry downturn (like in the early 2000s tech bubble crash) and would otherwise be in the unemployment line, or if you want to go into cutting edge research with a PhD.</p>
<p>Judging by the answers so far, I should throw away the idea of more majors, but I may need more clarification as whether or not I should plan on doing graduate study.</p>
<p>Basically, I should try to get involved in doing SOMETHING related to CS, whether it’s open-source, an internship or coop, or writing something myself.</p>
<p>If anyone else has something to add, I’m open for more answers.</p>
<p>Yes, here’s an idea: look for a type of program for which there is no good free Linux version, and make it.</p>
<p>For example, there is no good CAM package for Linux, as far as I know. That’s way too ambitious, but you get the idea. I myself am thinking of making a graphic adventure game engine with SDK for Linux, a native Linux equivalent of Adventure Game Studio.</p>
<p>I don’t think working on a large project is necessarily a bad idea. Like I’ve written earlier, it’s possible if one is patient. If one approaches the task as putting together parts of a larger whole, it’s doable. All of those large open-source projects started off somewhere.</p>
<p>Certainly, OP, as a rising sophomore in CS, will presumably have taken enough CS classes to tackle larger scale projects. I think that it would be helpful, however, to someone’s motivation, to have a completed “deliverable” done in a month or so. It would be helpful as well to have something that the OP can write on their resume, and something to which the OP can point to and say to an employer “I designed and built this app/server backend.” If the app/web application is particularly interesting, the OP can distinguish him/herself with creativity.</p>
<p>OP has plenty of time until graduation, and I think that OP could start small with one or two apps (mobile/web), which can be done over the course of 1-2 months.
Then OP could move onto larger projects, such as contributing to open source projects - which would take a more substantial period of time.</p>