Applying for Jobs/Internships
Cover letter - if it is an option, then do one for a particular job. Why are you interested, and why are you qualified?
Tailor your resume and cover for each type of job, and to each individual job.
Start early - it takes most people 3-6 months to find a job. Start applying now!
Be realistic - don’t waste your time applying for jobs you are only marginally qualified for.
Networking - if you know someone at the company, that gives you a huge advantage.
Technical interviews - many companies run technical interviews. Imagine one of your CS professors quizzing you about everything you should have learned as a CS major. Those who get the job generally will have done well on the interview. The take away is - start studying now everything you should know, focusing the most on programming, data structures, algorithms, and specifics from the types of jobs you want to apply for.
What is happening in CS - pay attention to news related to CS/IT. One place to look is Communications of the ACM, and another is the technology section of google news (or yahoo, bing, or wherever you look at news).
High volume - there are very many jobs in CS, and there are also very many people applying for jobs. Most people will end up applying for lots and lots of positions before getting one. Applying for jobs in the field of CS is definitely a "high volume" thing - plan on applying early and often.
Places to look for jobs
Indeed.com, jobs.indstate.edu, sycamore career link, ISU job fairs, stay on the cs-ugrads/cs-grads/cs-alumni email lists, large companies in the geographic area you are applying, check Alumni for places CS grads have gone previously. Look at top employers in Indiana, top employers in Terre Haute.
You want at least one CS professor, at least one employer (hopefully). You want people you think will actually do the letter, and do it well. When you ask someone to be a reference, tell them it is okay if they think they cannot provide a good (positive) reference for you.
You ideally would be one of the better students/workers they had (e.g., you got an A- or higher in courses with them).
If you have a class with someone who is writing for you, do well in that class.
Your references will NOT give you the letter. They agree to be contacted by employers, and they will give the letter to the employer directly (typically through an online form).
Send anything you have used to apply to your letter writers - your resume and cover letter. If you get an interview with a company, give your letter writers a head’s up that they might be contacted, and let them know anything particular about this job they might need to know.
Length - make your default resume 1 or 2 pages - either is fine, depends on how much good information you have.
Brag - paint yourself in the best possible (though still true) light. Is there any way to list something on your resume that sounds good? People will be looking for both quantity and quality.
Ordering - normally put your education (expected degree and date) first, and after that put things in the order that looks best. If you have good relevant work history, put that first (and order the work history from oldest to newest or newest to oldest depending on which looks better for you). If you have good project experience (e.g., in CS courses) and not so exciting work history, put your projects first. Etc.
Keywords - some companies screen applications using AI / automated searches for keywords and such. So make sure to include some of the keywords they likely are looking for based on the job ad. If the ad is for a java programmer, then make sure to have this somewhere in your resume (e.g., under Skills/Languages).
Contact information - include a website for more information that looks nice, where you have a copy of your resume, and possibly more. Include a link to your github (or gitlab or something similar) where you have some of your projects.
You can use your permanent CS account for a website. cs.indstate.edu/~username, you put you rhtml files in ~/public_html/, and make sure files and directory are chmod a+rx
Education - list your degree and expected graduation, include your GPA and/or major GPA if it looks good (at least 3.5).
Employment History - jobs you have had with most recent first. Include a bullet point of your responsibilities and/or accomplishments, making it sound good. If employment history does not sound good at all, don’t put it. For example, you’ve had one job for one year, and it was McDonald’s. Put more details for the jobs related to CS/IT.
Projects - list major projects you have worked on. Include projects from jobs, projects from courses, and independent projects. For each, include a bullet point of the main idea (just a phrase or sentence) and any skills/technologies/programming languages/tools used. For example, you probably had a good sounding project in any Exoo class - interpreter, 3d game, .... Make it sound good. You would say “3d OpenGL game”, you would not say “it really wasn’t that good, or was very simple, ...”. You could have a bullet point that is “Other Projects” and just list some more with no details for these.
Skills and tools - laundry list of programming languages and tools. You can split them into categories - proficient and familiar, or some other categories. If you are applying for something where you really should be good at X, and it is among your better skills, then split up the skills and include X in the “proficient”. In your “familiar” category, include everything you have seen in all classes, etc. It’s okay to list if you can say something about it, would be able to answer some basic questions, and would be able to say more by looking up information. For example, in a PL course, you looked at ML - you could include that.
References - available upon request (for your publicly available resume), but for specific jobs maybe put them in. Check with people before listing them. Generally, only use people that have good things to say. When asking someone, ask if they would be able to write a positive letter for you. Best case - a CS professor that has good things to say (you took a course, got an A, were one the best students), and at least one employer (can say you’re responsible, on time, etc.). Feel free to leave this tiny section out if it helps you fit on 1 or 2 pages; everyone assumes that references are available upon request, so it isn't really necessary to list this on your resume.
Other - depending on your experiences, you might have some other section(s).
Header information - who to, date, etc.
Introduction paragraph - say what job you’re applying for, why applying, one sentence about your background and why you think you’d be good.
Your experience/background - just a few sentences saying when you expect to graduate, relevant job experience, etc.
Your thoughts on the position - and why you think you would be good.
That could be just 2 paragraphs. Don’t stretch the truth. Don’t say you’re an expert. Right length cover letter? More than a few sentences, should fit on 1 page. 1/2 a page is typical.
Be prepared to answer questions about anything that is on your resume. If you can’t answer questions about it, don’t list it.
Don’t stretch the truth. For example, “Are you an expert programmer?”. Answer - no, I am a good programmer, and still improving. “How much training do you need to do to do X?” Answer - honest (one of): I have done that before, so just some getting used to how your company does it; did it in a class, but need to brush up; I have seen that before, and am confident I can do some self-training over a few weeks. You don’t want to sound unrealistic. “Rate your programming skills on a 0 to 10 scale.” Answer - 6 or 7 (for the better students), and say that you’re comparing yourself to all kinds of developers, and for example a 6 or 7 means that I can develop code from scratch to do even modestly complicated tasks (and am best at doing XYZ kind of programming).
Things that are important that aren’t often covered much or at all in CS courses.
- Program design/architecture (e.g., you need to do BLANK, how would you design this system [where store the data, what programs running on the backend and front end, etc.])
- Learn an IDE (start with a tutorial - eclipse or MS Visual Studio)
- Github (and using it "for real" with the checkout, etc. workflow)
Use linked in.
And so forth - search google for things like “computer science interview questions”
More Advice - Kegel Getting Hired
What are one or a few things you would look for in hiring entry level positions?
Is there a "hot" programming language, tool that is worth adding to a student's repertoire?
Pick one course in the CS major you would hope students really do well in.