Computer science Minor.

<p>hi all
as you all know I am going to start my classes in Jan/2014 ,majoring in Electrical Engineering.
if I take CS as a minor ,can I still take a software engineer job??
my main focus is not Software engineering but I liked the idea and wanna go for it if possible.</p>

<p>cheers;</p>

<p>Yes. More characters.</p>

<p>Probably, but not likely I imagine as you’re competing with people who took more CS courses than you.</p>

<p>

</p>

<p>yea ,of course but I intend to take courses outside the college ,I want to minor in CS just to get the degree in order to have better opportunities in the future.</p>

<p>Brutally honest answer below.</p>

<p>A handful of CS classes added to a decent EE program will provide plenty of insight and knowledge in ‘programming’ - after all, if one can pass Signals and Systems or Statistical Communication Theory, how hard can Data Structures be :). Will it make one a ‘software engineer’ that is capable of writing 1000 page specs, creating complex software architectures out of thin air, and the like? Not in the beginning.</p>

<p>EE with CS minor may not be as useful in Amazon/Facebook/Corporate IT type ‘here is your PC, write code’ type environments. My boss’s kid, tho, a BSEE, is happily working at Amazon as we speak :). </p>

<p>EE with CS minor would be a no brainer for what we do, which is, embedded systems development. Most of our developers are BSEE’s with CS minor or double major EE/CS or CSE’s. I’m one of the few ‘pure CS’ people there and they don’t let me near hardware for obvious reasons :). </p>

<p>In all cases, keep in mind that great coders are usually born, not made. The ‘born’ ones take 6 classes in CS and code like you would not believe. The ‘made’ ones may be good, competent coders but (in my experience) not likely to reach ‘born’ status even after 30 years experience. The born coders simply look at things in a different way than normal coders. Again from my experience maybe one in ten coders is a ‘born’… And the ‘born’ ones are likely to be the ones getting the super 6 figure entry level jobs :).</p>

<p>I forgot to mention. It is rare that I have seen a ‘born’ be in it for the money.</p>

<p>I’m a graduating EE major. I took three CS courses (quarter system), and I had several full-time job offers for software engineering positions, mostly in embedded systems or with a little hardware flavor. I had experience doing programming as a hobby in HS and outside of classes which helped me get two software internships, which then helped me in the job hunt for software engineering positions.</p>

<p>I ended up getting a dream job offer that is going to pay for me to get a full-time masters in CS, and I’ve been admitted to some very highly ranked CS masters programs with my not-even-a-CS-minor background. </p>

<p>Software engineering is unique - it’s much easier to pick up programming in your free time and prove yourself competent to an employer in software than it is in other engineering fields. Now, CS != programming, but the majority of undergrad CS majors end up in programming jobs.</p>

<p>Long story short - yes, it’s possible. I’m one example. If you know how to develop good software (see turbo93’s born vs made comment…if you’re a born coder, it comes naturally) and show competency in some technical area that is relevant to the employer’s work (if you’re a EE, this is easy with many companies), you will be a valuable asset to them.</p>

<p>Yes…as long as your CS minor has…</p>

<p>1) Object-Oriented Programming - You can get this usually through the first two programming courses that are required for most CS, CompE and Math majors. Depending on the school, either the language will be Java or C++. It really doesn’t matter which one is selected because if you learn one, you can learn the other on your own time.</p>

<p>2) Data Structures and Algorithms - Both of these areas are core CS knowledge areas. Depending on the school, they are offered as one combined course or two separate courses. It basically builds on what you learned from the introductory Object-Oriented programming courses, stated in (1). They will be required courses for CS and CompE majors and schools with a Computational Math major. Other majors like EE, Physics or Pure Math will probably need CS department approval because CS, CompE and Comp Math majors will get priority.</p>

<p>Operating Systems - Another course CS knowledge area and overall one of the most useful courses as far as learning at the college level. Teaches you how IN GENERAL operating systems behave (regardless if it is Unix, Linux, Windows, etc). You really cannot run anything without an operating system, so you might as well learn about it. You don’t want to be on the job bothering your Operating Systems Administrator every five minutes with trivial questions. Any non-CS major will need approval to take the course.</p>

<p>The next 2 courses if more of personal opinion, but it is from looking at many job openings over the years and what companies usually do with software engineers. In just my humble opinion, most software engineering jobs are related to the manipulation, distribution and storage/retrieval of DATA. You “manipulation” foundation will come from your programming and data structures/algorithms courses.</p>

<p>The distribution of data is mainly done via computer networks. A basic understanding on networks can help a great deal, a course in Computer Networks is recommended.</p>

<p>The storage/retrieval of data is mainly done via database systems. A basic understanding on databases can help a great deal, a course in Database Systems is recommended.</p>

<p>So I would suggest as a CS minor…</p>

<p>Object-Oriented Programming I (C++/Java)
Object-Oriented Programming II (C++/Java)
Data Structures
Algorithms
Operating Systems
Computer Networks
Database Systems</p>

<p>That should be enough for non-CS majors to be looked at for software engineering positions. You MAY have to take a Computer Organization course, but that is if the school has that course as a pre-req for Operating Systems. Not all schools do that.</p>

<p>Applied math majors can really benefit because with enough cross-listed Math/CS courses, one can basically manufacture a “CS degree” out of a math degree. It helps where there are schools with limited enrollment or super competition just to get into the regular CS program…plus allows you to have flexibility in CS course selection. Throw in math courses like Combinatorics & Graph Theory (which is like CS’ Discrete Structures on steroids) and Cryptology, Optimization and Computational Statistics and you are golden.</p>

<p>I should also add…</p>

<p>Software engineering (and it’s hiring process) is NOT like the other engineering disciplines or the business/accounting/finance industry. It’s very much about WHAT you know and/or have done. That is why there are so many non-CS majors in software engineering. There are just too many openings and not enough qualified candidates for employers to eliminate folks based on: school name, specific CS major, ABET accreditation, USNR ranking and such. Hiring managers are going to ask:</p>

<p>Do you know Red Hat Linux?
Do you know Oracle?
Do you know Hadoop?</p>

<p>…And grill you on technical terms.</p>

<p>GlobalTraveler: Thanks for the info as it is very valuable and I know some kids in my school who like tinkering with computer (hardware and software) non-CS major but in engineering, just like me. I will inform them about this stuff. Great post…THANKS.</p>

<p>Yes, it would be good to write embedded software. what global traveler said is partly true. If you want to be a software engineer at big companies like google having a full CS matters. Most hiring managers are struggling to find CS grads and will not look to an applicant with other engineering degree if they can have a CS. Almost all EE that work on software are doing a software job that REQUIRES hardware knowledge. </p>

<p>Some hiring managers for software engineering positions are not very smart. Some of them would rather hire a recent CS grad other someone with a PHD and who had 20 years of experience because experienced engineers are more expensive. The thing is that CS ppl learn their skills from those PHD guys. An experienced engineer is almost better in my opinion whether they know the latest thing or not. I am a CS student and I admit this. If I was a manager I would rather hire an experienced engineer(that doesnt know the latest technologies) over a new guy who is familiar with them, and teach the experienced guy to use them on the job.</p>

<p>I think that iis the reason why most software project fail because of lack of regulation. Google started by hiring CS PHD only and then slowly went and started hiring those with MS and BS. That’s why they are so successful and the top software company</p>

<p>Google is not the only software company in the USA. There are plenty in the Washington DC area and the DC area has a very high cost of living, so these “beltway bandits” must be paying someone. Same goes for companies in NYC, Chicago, Philly or any other big city.</p>

<p>GlobalTraveller, you’re describing gun-for-hire contract IT/coding staffing as to what you know… But, I’ll be frank and say that the argument about ‘not enough qualified candidates’ often means ‘not enough qualified candidates to work 80 hours a week for peanuts’…</p>

<p>Mrs. Turbo had the misfortune of interviewing with a well known contract house a decade ago and she was asked - and I kid not - VB questions straight from the FOOTNOTES of the preferred VB manual… Not to mention that she had to interview for a position in an all “ethnic” team, most with temp work visas, and an equally “ethnic” hiring manager (she’s just as “ethnic”, couple countries over, and a US Citizen, but needless to say, I don’t think qualifications played much of a role.</p>

<p>Fast forward 10 years and she’s working for the mother of all IT consulting companies, largely shepherding a group of “ethnics” and trying to hammer some US business sense into their heads. While I’m sure they have all memorized the Oracle 11i documentation chapter and verse, they lack common sense and experience, and those are not taught in college for the most part.</p>

<p>In general I don’t feel comfortable sending my own kid to CompSci… I sense a polarized job market out there where the best and brightest head for Google and the like, while the rest work for First National Bank of Topeka waiting to be outsourced. Embedded has some miles left in it, but only because we’re dealing with software engineers across the pond that have no clue what the gadget you’re developing together is supposed to do. </p>

<p>Case in point - try developing software for power tools (just an example) with a global team that has absolutely no understanding what an electric drill is. The few US based people will explain in great detail what a drill is, what a 2x4 is, what a drywall screw is, and how they all work with each other. They’ll make a nice training video and send to their colleagues, or the colleagues will come here and visit Lowe’s and hold one of those, and then hopefully…</p>

<p>Although I have a limited geographical viewpoint, the DC area is mostly federal agency work that rarely goes over 40 hour workweek. Federal work will not be outsourced. Also, with 2 or 3 of the surrounding counties around DC in the top 10 in income, folks are not working for peanuts…especially not the contractors for FBI/NSA/CIA.</p>

<p>But…</p>

<p>I am a “gun for hire”. :-)</p>

<p>^^^ you just described why Mrs. T. and probably myself will be headed to DC for work in a couple years once the younger D launches… Her employer is a major Fed IT provider and her skills are in demand there. </p>

<p>But overall, it’s nowhere this nice. No fun receiving unsolicited calls from headhunters for prestigious west coast companies only to find that the job, usually with a spiffy “senior software architect” job basically involves 60 hours a week of conference calls to overseas places instead of writing code…</p>

<p>I should have posted on Youtube some of the training videos I made for our overseas team… “And thiz iz a drillz, and thiz iz the drillz bitz, and you twizt thz bitz and drillz the 2x4z”… (imagine thick Turbo accent :))</p>

<p>hey guys ,I think it is time for me to participate a little :)</p>

<p>@GLOBALTRAVELER:
I think I am going to take the courses you listed above,they seem very good for a start.
I will as the advisor too before deciding .</p>

<p>best regards;</p>

<p>The classes that GlobalTraveller listed are pretty much the core of any decent comp sci curriculum - the rest (numerical analysis, compiler design, graphics, assembly language (!), and the like) are stuff that you either can learn DIY or not need.</p>

<p>I’d add a thorough class in computer architecture tho this may already be in the offerings of any EE program.</p>