Hello world, I am a second-year CS student at UW-Madison. I just wanted to share the tips I have learned from 2.5 years of programming and my first semester as a tutor for the first three intro CS courses at UW-Madison. It isn’t much experience, but I hope these tips help you secure your first internship in CS, and have more fun studying CS! And if this doesn’t help you, this is an excellent reflection of things I have learned.
-
Get in the habit of sitting down for 1-2 hours at a time and being committed to your objectives. I know that breaks are good and it’s probably not healthy to do this all day. However, I find it very tough to be productive if I don’t allow myself enough time to think about a problem while being uninterrupted. This also goes for learning new material. Some things in CS are not taught in the university setting. For example, my passion for web development came from self-studying it in my free time. By staying committed and focused on a specific activity for a while, I actually got stuff done (surprisingly).
-
Don’t get too frustrated if you run into bugs and don’t be afraid to run your code. As time goes on, you will get better at debugging. As a tutor, I noticed that students want to see if their code is correct before running/testing it. Luckily, your program will not become irreversible if it doesn’t work. Learning how to debug and write tests are critical tasks for students studying CS. So, for all of the TAs and tutors out there, I would recommend showing your students how to debug, write test cases, and how to visualize their code instead of just telling them what is wrong. You can utilize technologies such as Java Visualizer, a whiteboard, the Eclipse debugger, and simple print statements. This will help your students out in the long run.
-
Add new features to tutorials. I think that people really like to learn by watching tutorials on websites like YouTube and Udemy because API documentation can be intimidating and difficult to understand to get an application started. If the material is something that you are passionate about or will end up using in the future, try adding new features to the tutorials you are using. As a result, you won’t have to build another application from the ground-up. You can just focus on learning about a new feature you are interested in.
-
Be entrepreneurial - go out there and start building. This is one of the best ways to practice the stuff you’ve been learning! For your project, you can choose any personal or global problem you are interested in solving, a fun application for you and your friends to use, or you can join an organization/team that matches your values. By creating something that interests you, you will stay motivated. If you are leading the application, there are some things you want to keep in mind. Choosing your partners is a critical step. You will have to make sure that they will not abandon their work and ignore team meetings. Decide on appropriate response times. Avoid homophily to keep you open to new and innovative ideas/technologies. Make sure that everyone has access to similar resources if you are all learning new technologies. If your application isn’t used by many people or isn’t as successful as you hoped, reflect on all of the things you have learned. I’ve written programs that help decide how to share dessert, but the most important thing was building my foundation of data structures. In my experiences, being able to build applications that match my values and interests with my friends is the best thing about CS. I get to learn new and exciting technologies, spend time with my friends, learn from my peers, and build something we are all proud of. We always make sure to have fun and reward ourselves for the work we are doing. I am lucky enough to find myself in a circle of friends who are all very motivated and supportive in both the classroom and outside of it. Last but not least, entrepreneurs should have many projects and finish some of them.
-
Assume every question is wrong in some way on an exam. In my first two CS courses at UW-Madison, the exams were very tricky. My intuition told me that the code they presented me with was entirely correct due to the structure of the code, names of the variables, and the names of the methods. Take the time to trace out each problem and double/triple check your answers! To prepare for intro CS exams, I would take a look at GeeksForGeeks after you have reviewed all of your programs, notes, and homework. They go over some useful situations on topics like inheritance you might want to be familiar with! As a final note, don’t forget to be curious when studying for exams.
-
Don’t forget about your mental and physical health. If you are only focused on getting into the biggest tech companies out there and nothing else, please do not do that. I know that it’s easy to say, but you will have the rest of your life to work and sit in front of computers. Staying active, maintaining a good social life, building other hobbies, and eating healthy are all just as essential for your well-being. If keeping up with all of them are challenges for you, I suggest joining clubs/orgs to meet new people who are in the same boat as you. Don’t forget about events that are going on around campus as well! Those are a great way to spend more time with your friends and meet new people. Since I work/study in the CS labs a lot with my friends, I find it rewarding to go out to lunch or dinner with them a couple of times per week. Eating consistently and interacting with other humans is good for you!
-
Find a partner/group of friends. This piece of advice goes with tips 4 and 6. If you don’t have a partner or a group of friends who are just as motivated as you are to succeed and learn, try to be extroverted at least for the first couple of weeks in the semester. Go to clubs, sit in the front row of class, meet people in the labs or office hours, and introduce yourself. Having a reliable group of people to go through college makes the whole journey much more easier and fun. I understand that you may not find a friend or a group in your first year, but continue searching. Honestly, I found my friends by being extroverted for a few minutes, moving to the front row of class, and introducing myself to two people that seemed fun to be with. Then, I started studying/hanging out with them at the CS labs and met more people! Personally, finding a group of CS friends (I don’t mean people who just want to copy your code) made it feel like I belonged in this field especially, after studying nursing my first year at college. It’s really nice to have people to study with and go through all of the tough classes like Intro to Algorithms with. However, from my perspective, CS is an extremely competitive field. You need to do more than just coursework to land your first internship. You will need to differentiate your projects from the rest, learn new technologies, and continue to practice algorithms and data structures for interviews. All of this is much less terrifying if you know people who are going through the same process. Try going to hackathons and starting side projects with them if you’re trying to build up your skillset.