<p>I'll be starting college this fall. What are the computer science courses I should definitely take before applying for internships at companies like Google, Microsoft, FB, etc? (hopefully by next summer)</p>
<p>I have some experience with programming - mobile and web apps, a little knowledge of databases and am good to go with OOPS. Comfortable with Java, familiar with C++ and Python. I also know a little about AI. But my university won't let me skip much, so I'll have to take these courses.</p>
<p>One thing I know I need to do is take an algorithms course because I have no formal exposure to algorithms.</p>
<p>You don’t need any of that.
Every software interview I’ve had, they just ask me data structures questions. 90% of the time they ask me to add a node to a binary search tree. So just learn data structures- an undergrad course should be sufficient.</p>
<p>No one really looks at your transcript to note which classes you have taken. But in anycase, data structure is important, and I have not even taken data structures and I am currently interning with one of the companies you noted. What I do is in DB, and I never had any previous experiences in DB. What is important is your GPA, and you persistence(or how much you want the internship with them). If you want it right now, just go for it.
Like I mentioned I actually plan on taking Data Structures and Algorithm this fall. In fact, I had a interview with Amazon but I cancelled it because I was too scared on how much questions from Data Structures I wil be asked. This was plain stupid. I have had companies reject me based on my programming method. But I kept on coming for more interviews, and ended up with a pretty good internship. It doesn’t matter now, because I have mentors, and an internship is mainly for learning which I am apparently being paid to do.</p>
<p>Yeah, data structures is the most important thing. In every single one of my interviews (all the companies mentioned in this thread included) I have been asked data structures questions. Most of them have been harder than adding a node to a binary tree.</p>
<p>I recommend Gayle Laakmann’s Cracking the Coding Interview (also <a href=“http://www.careercup.com%5B/url%5D”>www.careercup.com</a> and <a href=“http://www.glassdoor.com’s%5B/url%5D”>www.glassdoor.com’s</a> interview section) to get an idea of what sort of questions you’ll be asked.</p>
<p>Also, remember that interviews can be sort of hit or miss. For my first interview experience ever, I got through 2 rounds fantastically, and then one question on the third round stumped me. I could nail that interview now (and if things go well, hopefully I’ll be working part-time at that company in the fall).</p>
<p>One addition is that a solid understanding of discrete mathematics and calculus is crucial.</p>