HACKER Q&A
📣 cuppajoe

How to make the most of an undergraduate computer science program?


I will be starting university to pursue a computer science degree in the Fall. I have already taken college level computer science courses and have read many books on topics from operating systems to computer graphics. Thankfully, I am allowed to skip past the freshman-level CS courses, but apart from taking advanced computer science classes, what advice do you have to get the most out of my computer science education?


  👤 linguae Accepted Answer ✓
1. Try to do at least one internship before you graduate. Internships solve the chicken-and-egg problem of entry-level full-time roles requiring experience, since the internship will provide this experience. When I was an undergrad at Cal Poly San Luis Obispo in the late 2000s, I noticed that most of the students whose first jobs after graduation were at top companies did internships at comparable companies. These students often did interesting work, such as ending up on the Windows and Mac OS X teams, for example. The students who didn’t do internships ended up at less prestigious companies often working on CRUD apps.

2. If you are interested in pursuing a career in computer science research or advanced software development, I’d highly consider minoring in mathematics. Machine learning, which is the rage right now, leans heavily on linear algebra, as well as probability and calculus. Some extra linear algebra, real analysis, and measure theory would be helpful for doing research in ML. In more traditional CS topics, combinatorics, abstract algebra, and category theory will go a long way, especially if you fall in love with programming languages and get deep into the woods of theory. The nice thing about studying mathematics in university is that you’ll have a structured environment for learning. It’s much harder trying to pick up abstract algebra, for example, when you’re working a 9-5 job and when you’re limited to nights and weekends for extra studying. Not minoring in math is the biggest regret that I have.

3. Take advantage of your youth and the resources that your university provides. You never know where life will take you, and you may discover something fascinating that you never considered.


👤 downrightmike
Internships, and check with the CS dept and see if there are any things you can work on. My school had a letter and arts class that basically allowed us to work on projects freeform with a mentor, either from the class or from the university on projects they needed help with. I ended up doing a stats project for the medical school to help them monitor grades and help students that were statistically falling behind their cohort.

👤 sargstuff
Consider CS areas of interest & how non-degree course requirements align with CS area of interest(s). aka linguistics / AI / neural networks; database / web development / business courses.

Research/talk to professors with research areas of interest / look at ideas for independent study / internships for senior year. aka elective courses / skills that would be helpful.

Inbetween semesters, look at things to further skills learned in prior semesters; make connections with others in field/area of interest; find something of interest. aka google summer of code, things the cs related club does inbetween semesters, open source coding projects, etc.

Consider CS professional organizations with student memberships. aka ieee, acm, aitp, etc.


👤 WheelsAtLarge
Interships are the key. The faster you get an understanding of the field outside the classroom the better you'll be able to guide yourself to what you like and are good at. Be sure you pick internships that benefit you and you are an active member of where ever you end up. Don't be a wall flower and hope you will absorb the knowledge.

👤 sfmz
Avoid alcohol culture, but also avoid the worst parts of Internet culture and don't be un-social. Think about getting a Masters degree; undergrad degrees aren't really very special.

👤 ipunchghosts
Learn the basics extremely well. Learn to sanity check test answers for reasonableness. If you have a 4.0, join a club or socialize more. Its an indication you could be more balanced.

👤 nathants
ship a 3d mmo game by the time you graduate.

it will give you a challenging context to apply everything you are learning.

bonus points for linux and wickedengine.