Ask Gayle: What can a student now do to prep for a programming position?

Hi Gayle, I am an international student from India and I just finished my BS in EE with minor in computer science and will be moving to CMU for my MS in computer science this coming fall.

Being an EE student, I am not so proficient at programming. Since I will be starting my MS this fall , I would like to obtain good internships during my MS which I can convert to a relevant full time positions.

My problem is that I am not sure what minimum background and knowledge is needed before I go to these interviews or be selected for them. Secondly, I am not sure which language am I expected to be really good at?  Do I have to know C inside out?  What else should my resume have to ensure that I land up an interview?



I would focus on three things:

1. Learn data structures and algorithms

Your coursework should hopefully be sufficient for this, but I'm not super familiar with your program.  Sometimes schools offer two MS programs - one for CS-undergrads, and one for non-CS undergrads.  If this is the case for you, and you're in the MS program for people without a lot of coding experience, make sure that your algorithms course is truly rigorous.  This should mean covering most of the CLRS algorithm textbook.

2. Learn object oriented programming (with Java or C++)

Formal design patterns aren't especially important for interviews, but it can be useful to see a lot of different ways of representing data.  The important thing, really, is to get out of the mindset of "throw down any code that works."  Your coursework might not cover design patterns, so here are two books: Head First Design Patterns and Design Patterns: Elements of Reusable Object-Oriented Software.

Practice these in either Java or C++.  C is generally less important.

3. Complete at least 3 "meaty" projects

Seek out the courses where you'll be doing some large programming projects.  You can also work with professors on their research, but make sure that (1) you'll be doing coding and (2) you'll really "own" a chunk of it.  You'll not only learn a lot from doing coding projects, but this will also give you material that you'll put on your resume.

As you go through school, keep in mind these resume tips for software engineers.  It's never too early to prep for your interviews!