The main purpose of this page is to help make recruiting information more accessible. Recruiting is really hard. Don't feel down if you feel that you are behind. Often, we only see other people's successes, and it can be easy to forget how much effort, failure, and rejection everyone goes through.
On this page, we provide a sample recruiting timeline to give you an idea of how the recruiting process works. Know that everyone experiences recruiting differently. Please do not stress if your timeline looks different! Recruiting can be very random.
The first semester of college will be very busy as you will be settling into a new place, meeting new people, and being in college for the first time! It is 100% ok and normal for freshmen to start applying after the end of fall semester. Don't sweat it if you want to wait and settle in before focusing on internships. It's ok to take time to adjust, and it can be beneficial as well to wait until you can put projects from Data Structures on your resume. There are plenty of opportunities available for freshmen in the spring semester, and lots of freshmen that start applying in winter break and get offers around Spring Break or later.
Internships/industry is also not the only path. Plenty of people in Turing do research over the summer, especially the summer after freshman year. Summer classes are also a great way to keep learning and working on your degree. This page is more meant to be a guide for those who are interested in potentially doing an internship so they have more information accessible to them!
Upperclassmen are super nice! You can ask your Big or pretty much anyone to review your resume and give you mock interviews. Don't be shy! Turing is a super supportive community
Month | Task |
---|---|
Month 1 |
- Make your resume - Prepare for technical interviews |
Month 2 |
- Begin applying - Look at specific programs |
Month 3 | - Conduct Interview |
Month 4 | - Offer? |
You can use any of the UT resume templates, like the UT CNS template (they have a CS specific template).
I personally recommend making your resume in Latex (but use whatever you are comfortable with, e.g. Google Docs or Microsoft Word) - there is a popular Latex template called Jake’s resume template that you can Google (there are several versions so pick one you like best).
I personally use this template
Get your resume reviewed by anyone you trust. Take their advice with a grain of salt as everyone has different opinions. For example, some people recommend the Technologies/Skills section as the first or second section, and some people recommend it as the last section. It's a good idea to listen to their reasoning and understand why and then make your own decision.
Note: I will say that in my opinion, Education should be the first section since you are currently in college and recruiters are interested in knowing what school you attend and what year you will graduate so you should make this information easily accessible.
If you feel like you don't have enough CS-specific experience, that's ok! It can still be good to put down experience such as tutoring, clubs, etc from high school as those are still your experiences and show that you are an active member of your community.
In the meantime, you can work on personal projects (an easy one I recommend is making a full-stack app by following a tutorial, and then expanding on the tutorial by adding whatever you want).
You can also wait until partway through the fall or spring semester (winter break) to start applying so that you can list projects from Data Structures on your resume (school projects are 100% valid to put on your resume and you don't even have to mention it's a school project - but make sure not to publicize any source code).
If you have time, it can be useful to practice Leetcode to prepare for technical interviews.
You can do stuff like Neetcode 150, Blind 75, etc!
Don't worry too much about grinding problems. This is mostly to get a feel for it if you have never done anything like Leetcode before. It's helpful to be familiar with what this might look like, so you can also just watch a few videos on Youtube to see what an example of a technical interview looks like if you are curious.
It's also not super useful to spam problems as you probably won't have great retention for the actual underlying concepts (which are far more important than memorizing solutions). If you are intent on prepping Leetcode, it might be more useful to do 1 problem a day, and pretend that you are solving the problem in an interview so talk out loud and walk a fake person through the process. This will help you practice communicating your ideas and hopefully force you to engage more in the problem so that you have better retention of the knowledge.
A technical interview will often ask you to solve 1 or 2 coding questions in 30-45 minutes. Usually, you can choose what coding language to solve the problems in (e.g. Java or Python).
Apply anywhere and everywhere - don't be super picky as a freshman!
Don't just apply to a few (~10, 20) high-profile companies! It's pretty normal to cast a very wide net (e.g. ~100, 200) companies. You don't have to do this, but if you want better chances of getting an internship, then you should play the numbers game.
To know when new internships are posted, you can either subscribe to some sort of email notification service (there are a lot of them, I've heard of swe-list for example). I personally prefer checking the Simplify GitHub repository every morning and applying to all of the new postings in the last 24 hours since I last checked.
This is the Simplify Summer 2025 Internship Repository. You can probably navigate from here or Google for the repository relevant to your recruiting season (e.g. Fall 2024 recruiting season means you should look for the Summer 2025 GitHub repo).
Note: A special shoutout to Simplify. It's a great Google Chrome extension I highly recommend to get because it will autofill information for you to avoid retyping it, which saves a ton of time. I also recommend saving your answers to short-response questions in some type of document as a lot of these questions are similar and you can reuse your answers.
Note: If you are out-of-state and in the process of getting in-state tuition, you will probably need to work in Texas over the summer to qualify for in-state, so you should apply to Texas places. Otherwise, I would not be really picky with location since experience is experience, and that is what you need as a freshman. Same goes with pay! Experience is experience even if it does not pay as much as you had hoped.
Keep track of where you applied!
I use a Google Sheet that lists the company, a link to the application, the status of the application (rejected, online assessment, interview, accepted), any additional notes (pay, location, etc).
A lot of companies are looking for juniors (rising seniors) because they are in their penultimate year. This means that if they intern in between their junior and senior year, then they are eligible for a return offer for full-time conversion, which is convenient for a company since they can recruit full-time new grad employees from their intern pool.
This is one reason it is hard for freshmen to land internships. Another is that upperclassmen generally have more experience, so they are more qualified candidates. However, this does not mean that it is impossible for freshmen to land internships!
There are freshman-specific internships that are easier for freshmen to get into because they are not competing with upperclassmen.
These internships may have downsides depending on the specific company because sometimes the projects they give to the interns are different from projects they give to regular interns.
For example, in Google STEP, you are paired with another STEP intern and do pair programming, but in the regular Google internship, you have sole ownership over your project.
Note: These are different from freshman-friendly companies that are willing to hire freshmen but do not treat them differently from other interns.
Note: This is also different from freshman-specific programs, which are more like events where you can learn more about a specific company and maybe go on a fun trip if it is in-person in a different city.
Examples of Freshman-Specific Programs:
Examples of Freshman-Specific Internships:
Feel free to ask any upperclassmen for mock interviews first!
Interviewing is a skill, and it's super normal to be nervous before your first interview. But once you've done it a few times, you'll get the hang of it and they can even be fun!
Remember that the interviewer is on your side. They have already given you time out of their busy day, so they are looking for reasons to hire you - otherwise they are wasting their time!
Send a Thank You email to the interviewer after the interview is over.
Not all candidates do this, but you should do this to leave a positive impression and to potentially stand out from candidates that forget.
The interviewer introduces themselves, and you introduce yourself.
They might ask a few basic questions at the beginning (e.g., “What are you majoring in?”, “What school do you go to?”) to learn about you.
They might even ask one or two short behavioral questions (e.g., “Why are you interested in our company?”, “Why did you decide to major in computer science?”).
The interviewer will explain the format of the interview.
This is usually very formulaic (e.g., “You will have 30 minutes to solve 2 questions, and then we will leave 5 minutes at the end so that you can ask any questions you have about the company or the internship program.”).
Pro tip: If the interviewer does not explicitly state how many coding questions there are, then ask! This will help you to budget your time accordingly. It sucks when you assume there is only 1 question, so you spend 30 minutes on it, and then you only have 15 minutes left for the 2nd question.
The interviewer will describe the coding question(s).
Do not jump straight into writing code. Make sure you understand the question first and ask some clarifying questions if you have any (e.g., “Can the only input be alphanumeric characters? What about spaces?”, “Am I correct to assume that given this input, this will be the output?”).
Feel free to walk through a test case or propose edge cases here to make sure you understand the question.
After you understand the question, describe a potential solution. It is important that you and the interviewer are on the same page for your solution. This allows the interviewer a chance to redirect you if they do not like your solution (e.g., the time complexity is too slow and they are looking for a more optimized solution, or your solution does not work, so they can give hints to help you figure out the answer).
Feel free to write some pseudocode or draw pictures (if the format of the interview allows) or do whatever you need to communicate your solution.
Another reason why it is good to describe your solution first is so that if you are short on time and do not finish coding your solution, at least you have described the intuition behind your idea. This will help your interviewer see that you understand the problem/solution so that they can still give you a favorable review.
It is worse if you are halfway through writing code that the interviewer does not understand, and then the interview finishes. It is also not beneficial if you write a solution that works, but you are unable to explain why or help your interviewer understand.
The goal of the interview is not just to get the answer right, but to show your thinking process (critical thinking skills) and your communication skills. They are also evaluating how easy you would be to work with, not only how smart you are.
Once your solution has been approved, begin writing real code in your language of choice.
Feel free to test small portions of your code along the way (e.g., if you need to make an intermediate data structure to store some information, feel free to print it and make sure it looks right before you move on to writing more code).
Now, you can test your solution. Suggest some edge cases and potential solutions (and even test those edge cases if you have time).
Suggest some edge cases and potential solutions (and even test those edge cases if you have time). If you have more time, propose ways to make your solution more optimized or robust. No need to implement, but this is a good way to get some extra points.
Get an offer! Congrats! :))
Even if you do not think you will take the offer, it is polite to express your thanks and excitement (especially if you receive the offer over the phone rather than in an email).
Please do not accept an offer that you know you will later renege from. This leaves a negative impression for both Turing and UT.
Feel free to ask for more time to decide if necessary, and talk to upperclassmen for advice when deciding between multiple offers.