Choosing a school
Does prestige matter for Ph.D. programs?
Generally, there are 4 tiers of CS schools. There exists the elite tier (CMU, MIT, Stanford, and Berkeley), then the "great" tier, which are schools generally ranked 4-10, next the "good" tier which are schools 11-20, and finally the "everybody else" tier which are schools ranked 21+.
If your main goal is to become a professor after your Ph.D., then you will absolutely want to go to a prestigious school. Typically, Ph.D. students from the elite tier get offered tenor-track positions at one of the other elite tier schools. It is very common to see graduates from CMU becoming professors at Stanford, Berkeley, etc. or the other way around. If your main goal is to become a researcher in industry or you aren't quite sure what path you want to take when you graduate, prestige may not be as important as making sure you get accepted to a program.
If you're looking to do research, please make sure there are enough research professors at the university that support the stuff you want to learn, and then take into account both prestige and research. Prestige will go a long way to ensure career and academic success. On a side note, the more prestigious the university, the more diversity of courses will exist, allowing you to learn niche sub-areas you never thought existed, which is always fun. Additionally, don't ever feel ashamed for using US News and other ranking sources to base your opinion on a school. For the most part, they got that ranking for a reason; they didn't come out of nowhere.
Does prestige matter for Masters programs?
Networking opportunities matter. CMU will have far far far far better career fairs and much more receptive recruiters than a school like Harvard, which is in the "good" tier. I've seen it all first-hand before, so take my word on this. Now, if you're planning on doing research at the school you go to next, prestige plays far less a role than if you were doing a coursework-only MS. For example, according to http://csrankings.org/, the University of Washington is ranked 7th in terms of a holistic view of their research across all areas, but when specifically targeting their computer vision research output, they are ranked 21st. As such, they moved from the "great" tier down to the "everybody else" tier. When taking into account research, prestige is a bit less important, because now, a university like UCSD is far better than UW.
Location Regardless of whether you're applying for an MS or PhD, you'll be living there for the next 2-6 years. The location can often times be just as important as the prestige of the school. For example, UIUC is an excellent school for computer science, but assuming you go straight from undergrad to a PhD program, you'll be living next to farms and cows for the next 6 years. From somebody that grew up on a farm, it gets boring quick. While a university like UMD is a bit less prestigious than UIUC in certain areas, living near the research triangle park may provide invaluable resources to network with IBM or other big-tech employees. Assuming you currently go to Pitt, which doesn't have the most pristine CS reputation, you are quite literally right next to CMU. When used correctly, although you are at a mediocre CS university, CMU brings in invaluable elite networking opportunities that you won't get anywhere else except for Boston with Harvard/MIT and Silicon Valley with Berkeley/Stanford. Consider your location wisely.
BS/MS If you're planning on finishing your undergraduate studies within 3 years, consider doing your BS/MS. It won't be that much of an added cost, and it adds credentials to your resume. Having an MS will also give you a bit more leverage within industry to pivot to a variety of new teams you most likely would not be able to work with otherwise. If you're considering going onto a PhD, I recommend ditching the BS/MS (traditionally a 4+1 program) and going straight into a full 2-year MS, then PhD, or directly into a PhD program. The BS/MS is designed to rush people through an MS with a bit of extra coursework. It isn't supposed to give you a super formal treatment of graduate school. How many schools should I apply to?
Sometimes, people enter into a trap by thinking graduate school should be as easy as undergrad, where you apply to 2 safety, 2 intermediates, and 2 reach schools. Unfortunately, this is not the case for CS graduate school. It is more competitive than ever, especially if you're considering anything related to AI, machine learning, or computer vision. In fact, while I won't link my source here, for CMU's Master's in Computer Vision, the acceptance rate is 5%, which is lower than the acceptance rate at some PhD programs. For their Master's in Machine Learning, the acceptance rate is 4%, and their general MSCS program has an acceptance rate of 5%. Meanwhile, their Master's in Language Technologies (CMU LTI) hovers around an acceptance rate of 65% and their MS in Computational Biology is around a 55% acceptance rate. Every school, every department, and every degree is different. You should be cautious with graduate school. From what I have seen, it is common for people to apply to at least 10 schools and it's not uncommon for people to apply to 15 schools.
Should I work and go to school at the same time? I will always and forever advocate against this. As a CS major, sometimes it is easy to be lured into the high-paying jobs of Silicon Valley, thinking you'll work for an employer for a year or two, they'll pay for your tuition, and you'll go back into academia and live happily ever after. This is a bit optimistic and can eventually burn you out. I have interned and taken coursework at the same time before. It is one of the most dreadful things you can do to yourself in terms of your mental and social health. If your primary reason for going into industry and then back to academia is because your employer will pay for your tuition, let me convince you to not think that way. Say you get into a PhD program. Every CS PhD program in this country will give you full, free medical insurance. They will also provide a living stipend every year, which you can supplement with an internship every Summer. The stipend at Columbia hovers around $3,300/month. The stipend at CMU hovers around $2,800 per month (https://www.cmu.edu/stugov/gsa/Campus-Advocacy/Stipend-Report-2018-2019.html). PhD stipends typically run on a 9-month period (CMU works on a 12-month period), so these equate to 30k and 34k per year as your annual salary. With internship money, or further supplementary income from your advisor for Summer research, these can be easily boosted to an annual salary of 40-50k (remember, this all includes medical insurance as well). Will you be loaded with money? No, but you will have a livable income. Now, imagine you get into an MS program straight out of undergrad. Master's programs tend to be 20-40k/yr for tuition, but it is extremely common for MS students to get TA (teaching assistant) positions which provide medical insurance + a full tuition waiver. It is even possible to get these positions your first semester if you reach out to the right professors, resulting in you never paying for your tuition as a master's student. Additionally, a select few number of MS students can get an RA (research assistantship), but this typically only happens in the second year of your degree because of a thesis or independent research work. As such, as a master's student, assuming you get a TA or RA position, you won't have to worry about the exorbitant tuition costs. Trust me, it will not be worth the stress of having to work for your company and study part-time just to get done with a graduate degree at a reduced cost.
While I am generally an opponent of working and studying at the same time, there are several professional master's programs out there, such as through the University of Washington (https://www.cs.washington.edu/academics/pmp). In summary, it exists for Microsoft/Amazon/etc. to funnel technical employees into this program for professional development. It's an odd program, and pretty much doesn't exist anywhere else, but it's an option. You won't be able to get into the program straight out of undergrad.
Online master's? I don't have many thoughts on this. If you're doing research, do not do an online master's. If you're just doing coursework and you know for a fact you don't want to do research or a project with a professor, it might be financially cheaper to do the online master's because you save on living costs, don't have to relocate, and the tuition is typically lower. I will personally always prefer an on-campus master's degree because it feels more personal and there are far more opportunities (e.g. career fair, clubs, networking, panels, research, advice from professors) that you'll never get from doing an online program, but it really just depends on how invested you are in your education and what your goals are for your education.
Research? Only apply for a PhD if you are 100% sure (not 99%) you want to do research. If even 1% of you is doubtful, just apply for an MS, try out research, and go into the PhD later. Going off of that, I highly recommend that you get research experience in undergrad or you will 100% get rejected from Ph.D. programs. They want to see that you know what research is, you know how to do research, and you know how to do it really well.
MS or PhD? Some people come from families with numerous PhDs (e.g. parents, cousins, aunts/uncles) and some people do not. If your family has PhDs, you can ask them for personal advice for your situation, but I'll provide some general advice here. If you know you want to do research for the rest of your life, apply for the PhD. If you know you never want to do research and want to remain in a bit more of an engineer role (e.g. machine learning engineer), do your MS with either the coursework or project option. If any part of you hesitates to decide between the MS or PhD, do a two-year MS with a thesis option. You will thank me later. On a side note, I can personally guarantee you will not get into a top-10 PhD program straight from undergrad unless you specifically have 1 or 2 publications before the time you apply for graduate school. I had one friend from Purdue with a 3.97 GPA, 2 publications, good undergraduate research advisor, 3 solid letters of recommendation, 2 internships, CS + Stats double major, and several graduate courses under his belt, and after applying to 15 PhD programs, he got rejected by all of them. Never take anything for granted. On a side note, MIT does not have a Master's in Computer Science. They will only accept PhD applications. Meanwhile, UW does not have a traditional MSCS, but rather only a Professional MSCS which is limited to people from top tech companies that want to go back to school. These were the only universities I found that did this, but I figured it's worth knowing.
A Ph.D. does not mean you are going to take classes for 6 more years - in fact you will only take classes for the first 2 or 3 years. And, you are only taking 1-3 classes a semester. You also will not be paying for them! A Ph.D. is an intense, research-oriented program where you learn how to conduct research and become a researcher. If you don't know the first thing about research take a class, join a project, or look it up. You need research experience to have a solid chance! NEVER EVER PAY FOR YOU Ph.D.. If you have to pay for your Ph.D. you are doing it wrong. DO not apply to a Ph.D. program that does not give you a stipend and health care.
Does a PhD mean I have to stay in academia forever? No. Back in the 20th century, the answer to this question might be yes. If you were in another discipline that wasn't technical (e.g. philosophy), the answer to this question might be yes. However, as far as CS is concerned, most PhD students end up going into industry, at least as far as the last 10 years are concerned. In fact, if you look at any major lab at any major tech company, every single person will have a PhD. Additionally, almost every major lab is about 95% PhDs with one or two MS/undergrads mixed in because they have connections nobody else knows about.
University/department politics Honestly, there's not much to say here. If you're worried about university politics when applying to graduate school, the simple answer to your troubles is do not worry. Any university politics that exist should play in your favor. For example, if you know a specific professor at another university, on a personal level (e.g. you've been doing research with them for a while), you can easily sneak in through the back door.
Costs
Applying to graduate school is costly. Let's break this down into multiple subsections:
Taking the GRE Each time you take the test, it costs $205 for US testing locations, and up to $255 for countries outside the US (source: https://www.ets.org/gre/revised_general/about/fees) Assume you'll take the test twice. This totals about $410 just to take the GRE. Every time you take the GRE, you can send your score to up to 4 universities for free. Any additional universities cost $27 (source: https://www.ets.org/gre/revised_general/scores/send/). Assume you'll apply to anywhere from 10-15 schools. This means sending your score will cost $270-$405 just to send your scores to other schools.
Test prep materials can add minor additional costs as well. When you schedule your GRE test date, you automatically get 2 sample GRE tests for free, but additional ones could end up costing you hundreds of dollars extra. Additionally, there are GRE test prep apps out there (e.g. Manhattan Prep) that cost $30/3 months as a rolling subscription fee. While paying for test materials isn't required nor guaranteed to significantly boost your scores, they can be helpful if you have the extra money lying around.
Application fees You are most likely familiar with university application fees. They are similar to the application fees you sent in with the CommonApp when applying for your undergraduate schooling. The average application fee for undergraduate schooling hovers around $70 (source: https://www.usnews.com/education/best-colleges/the-short-list-college/articles/colleges-with-the-highest-application-fees). Unfortunately, from my findings, the average application fee for computer science graduate school is even higher, ranging from $70-$125 (refer to spreadsheet in Special Notes).
Additionally, if you apply to multiple departments within a school at the university, the cost may rise further. For example, at CMU's School of Computer Science, the initial application fee cost is $125 (e.g. you applied to the Computer Science Department), but if you want to apply to additional departments (e.g. Robotics Department), you need to pay an additional $75. Outside of the special case of CMU and one or two other universities, let us assume you apply to 10-15 schools and the average application fee cost is $100. This means you will end up paying anywhere from $1000 to $1500 just in application fees.
School visits (only applies to PhD programs) Congrats! If you manage to get into a PhD program, they will almost certainly fly you out to meet your potential advisor(s). Even better, they pay for the hotel, flights, and food (they reimburse for your meals outside of the university events). Thankfully, you won't have to cough up any more money for this trip. I just thought I'd make you aware of its existence. Upon admission to master's programs, they might invite you to visit the university for a brief overview of the program (Harvard does this, but it's not the standard), but I have never seen a single university reimburse travel for students admitted to their MS programs.
Total costs From what you've seen above, you'll most likely end up spending $1680-$2315 just to apply for graduate school. There is a bit of wiggle room within that range. For example, if you achieved a 160V/168Q the first time you took the GRE, there's no incentive to waste another $205 just to retake the GRE for a slightly better score. On the other side of things, I have seen people apply to 20 schools, which increases the cost of applying to graduate school by another $600.
Taking the GRE
Key Q = Quantitative V = Verbal A = Analytical Writing
Many times, people will make the mistake of assuming the GRE is as easy as the ACT/SAT. This is far from the truth. Anecdotally, a friend from CMU, who achieved a 2370 on her SAT (> 99th percentile) received a combined score of 321 on the GRE (roughly 75th percentile on the verbal and 83rd percentile on the quant, source: https://www.ets.org/s/gre/pdf/gre_guide.pdf (page 19)), but even then, that was after a fair amount of studying. You will not achieve a top score unless you explicitly study on a regular, weekly basis, and it helps if you begin studying at least 3 months before your test.
While the GRE is far from the most important factor in admissions, it is important nonetheless, much in the same manner as your GPA. As a baseline intelligence filter, if you have a 4.0 GPA, that's not guaranteed admittance to a school, but a 2.0 GPA is a near death sentence. Similarly, a near-perfect score on the GRE is not a guaranteed admittance, but getting 150V/150Q is almost a guaranteed rejection. Specifically, for computer science graduate schools, they want you to be around the 90th percentile in quant (167) and 70th percentile in verbal (155) for top schools. While scraping the information off numerous top computer science departments' websites, I found 153V/160Q to pretty much be the minimum scores at any school, while 155V/164Q will suffice at most schools (both MS and PhD) and the rest of your profile can make up for any deficiencies in your score. Any lower, and the admissions committees become skeptical.
You will almost certainly perform worse on the verbal than the quant. This is especially true considering you're a computer science major. If your verbal is better than your quant, you need to retake the GRE, unless you've received a 162Q+. The analytical writing is relatively straightforward. Learn how to write a 5 paragraph essay in under 30 minutes and you should be fine. Assuming you did not have extraneous writing issues in university, the past 4 years of paper-writing have prepared you to perform pretty well on this section.
People have different advice on test prep materials. Personally, I focused more attention on verbal apps than quant apps. Manhattan Prep GRE is available for Android/iOS, costs $30/3-month period, and provides about a thousand questions (600 verbal, 400 quant, or something like that). The practice tests provided for free from ETS after signing up for the GRE are a great resource. If you have the extra money, using ETS' test prep material is very useful. Also, regularly reading on a daily or somewhat daily basis can drastically improve your reading comprehension skills in the span of 3 months. While you might feel confident about the quantitative sections, do not completely blow off any studying. There are a lot of useful tricks to be found in the test prep materials, even if they're one-offs. They help place you into a mindset of finding different avenues to solve any quant question. In terms of verbal apps, I recommend the GRE Test Prep app by Galvanize and the Vocabulary Builder app by Magoosh. For general test prep, I recommend Read4GRE by Ready. I do not have specific recommendations for quant test-prep apps. You'll find most apps are free, but occasionally some will cost a little bit of money.
Note: The analytical writing section is the least important of all 3 sections. In summary, it shows you have the potential to write technical reports (e.g. as a machine learning engineer) or coherent research papers in an active voice. In most schools, a 4.0A or 4.5A is absolutely required. With a 5.0A, you'll be fine at any school (it's already 92nd percentile). Anything more (5.5A or 6.0A) and you won't have to worry about admissions critiquing your writing skills at all.
Note: If you do not study, you will regret it. Trust me.
Letters of recommendation
Almost every graduate school and every program will require 3 letters of recommendation. Very rarely, a school will accept 2 letters of recommendation, but this is far from the norm. If you are applying for a PhD, all of your letters better be from university professors under whom you did research. If it's simply a coursework MS, two professors and one recommender from industry are generally acceptable. Most of the time, if you can get three letters from academia, you will do better than if they came from industry professionals. There are special cases here, such as if you somehow worked at Google AI during your undergrad and got a letter of recommendation from your internship mentor. Note: You truly want to pick people who can write about who you are as a researcher not as a student.
Do not forget to thank every single one of your letter writers for writing you a letter of recommendation, no matter how close your relationship. During your undergrad, while it often seemed like professors kept pushing off grading exams, this typically happens because they have to write a multitude of letters of recommendation for several different students, personalize them to the student, personalize them to the university, and then write proposals on top of that. They are busier than you imagine, and you should respect that. Be patient with your letter writers, but also provide timely updates. As you approach deadlines, it is okay to remind them on a weekly basis, but not more than that.
Applying
GPA Your GPA is generally important for any graduate program, regardless of what anybody else says. If you want to just do a coursework-based MS, your GPA better be a 3.7 minimum, and a 3.8+ is highly recommended, especially if applying to top programs. Almost every program will have a GPA minimum of a 3.0 or 3.5, and you should assume, if it's at least a school in the "good" tier, that there are candidates with much better credentials than you, and most of them will be applying with GPAs that are far above the minimum requirements.
There are special cases, though. If your GPA is closer to 3.7 then 3.9, you should still apply to your dream schools if you have the funds. In most cases research experience speaks much louder than GPA.
Undergrad school While people try to lie and say your undergraduate school does not matter, this is not true. A student at CMU applying for graduate school at Stanford with a 3.5 GPA garners more respect than a student from Pitt applying for the same graduate program with a 3.8 GPA. Whether you like it or not, it is largely true, except for special circumstances where the Pitt student took graduate courses (and excelled) and the CMU student took easy courses and performed mediocre. As such, while you can't do anything about this at the moment, one way around it is to leapfrog schools. For example, assuming your end goal is to graduate from Stanford with a PhD (a specific school should never be the end-goal by the way, it should be the value of the program in regards to what you want to learn), one way is to apply straight from Pitt to Stanford. However, an even better way is to go from Pitt to Cornell for your MS, and then Cornell to Stanford for your PhD. That's one way of working the system, and while it's not guaranteed to work, you'd be surprised at how often admissions committees will only look at the last school you attended.
Graduate courses Take graduate courses. You won't regret it. If you truly care about your education enough to apply for graduate school, you'll most likely gain a lot from graduate courses during your undergrad, and it might inspire you to do research. Ideally, you want 2 or 3 graduate courses under your belt before you apply.
Admissions committees You could put a lot of information here, but for the moment, I will just say if your program does not do rolling admissions, the admissions committee will typically split applications by the interest area mentioned in the application (e.g. machine learning), split up the committees, and review from there. Almost every single time, all applications will be randomized, so it does not matter if you apply at the last possible second of the deadline.
Acceptance rates for MS/PhD I've kind of already discussed this above, but I'll elaborate a bit more. PhD acceptance rates range from 3-15%, at least for schools in the "good" tier and above. For an MS, acceptance rates tend to range from 5-30%. It is easier to get into a master's program
Deadlines For the medical field, nearly every medical school operates on rolling admissions. For more technology-focused fields, such as CS, nearly every graduate school will operate on a fixed deadline. You should be thankful for this because it makes the process a bit less stressful. Most of the time, this deadline is either December 1st or December 15th, which is when all application materials (including letters of recommendation) are due. In the Google Sheets documented located under Special Notes, you can find a lot of the deadlines for top graduate schools.
Extracurriculars These aren't really necessary, but it makes you stand out from the crowd. This is especially true, from a research perspective, if you've helped your undergraduate advisor organize a research conference workshop or you were a volunteer at a major research conference. If you've merely attended a research conference, please do not put this on your resume. It will make you look like an amateur. If you were officer of a club during your undergraduate studies (or MS), make sure to list that on your resume because it shows to admissions committees you have the potential to be an excellent communicator, which is more valuable than actually having the ability to do coursework or handle independent research.
Research If you are applying for a PhD, you should have at minimum 1 publication assuming you personally know your potential advisor at the universities you're applying. Otherwise, you should have at least 1 publication, 1 manuscript in progress, and 3 research projects you've worked on with different professors (for the letters of recommendation). If you're applying for an MS with a thesis, this constraint is a bit more relaxed. You won't even need a single publication. One manuscript in progress is nice, but as long as you can show you are passionate about research (i.e. research internship, working in several labs, worked on several projects, maybe made a poster before), then you should be fine. If you're applying for any other degree program, you don't need research on your resume. It's more of an additional benefit.
Statement of purpose This is the most important part of your graduate application for Ph.D. programs. You will want to start early and work on it often. You will want several people to read through it and provide feedback before you submit the final version too. If you're applying for any PhD program, make sure to mention at least 2 or 3 different professors you'd like to work under and connect your research to their research. Other than this section, most of your SoP can be identical for pretty much any school. Add a little personalization to each one, but it's not really that necessary to go overboard. If you've overcome a lot of obstacles in life (e.g. foster child, poor immigrant family, etc.), open your SoP with a brief introduction to that, but don't let it overtake your entire essay.
The main structure of the statement of purpose is the most difficult part. Here is a rough outline of how to formulate it:
- Introduction: Big picture why do you want to do research, why do you need a Ph.D., which advisor/s would you like to work with in the program you are applying to, what area of research would you like to work on, what broad research questions do you want to go after?
- Research experiences: Choose 1-3 research experiences you had. Show what research skills you learned from this experience while explaining your role in the project.
- Teaching/Mentoring experiences: As a Ph.D. student, you will take on many hats. A researcher. A mentor. A teacher. A student. It is beneficial if you express your interest in mentoring and teaching as well as being a researcher. If you have any mentorship or teaching experience (UTA), you can briefly describe them as long as they are related to the flow of your statement.
- Conclusion: Summarize your experiences and skills and how all of this has helped you reach the conclusion that you a Ph.D. is a natural next step for you.
Work experience You should have at minimum 2 internships (for the time being, I'll bundle Summer research projects as an internship). If you have 4, you should be solid. If you're a current MS student applying for a PhD and you have 6+ internships, you're golden (almost nobody has this, so if you do, you are a step ahead of everybody). If you can fit your internship work into your research interests or your academic interests (i.e. for a coursework MS), then that's an added benefit. Trust me, most students in undergrad don't have internships that eventually fit into their graduate school academic interests, so this will give you a leg up in the application process.
Side projects Please, be proactive about side projects. Coming from somebody with a passion for computer vision who studied at Pitt, Pitt CS does not really do a ton of term projects. If you have the opportunity to do a term project during any of your courses, make sure to focus it around your graduate school research/academic interests and slap those side projects on your resume. The admissions committees will be able to see you're passionate. Anecdotally, a significant number of students in the top graduate schools have at least 2 side projects or term projects, from undergrad, related to their field of study.
Special notes
A lot of notes about the top CS graduate schools can be found here: https://docs.google.com/spreadsheets/d/16edutqF4ijmv5pQCpB_ulKsJ-C0jrFjcMxevd8oFaLE/edit?usp=sharing
https://www.thegradcafe.com/survey/index.php?q=Computer+Science - This website is a blessing and a curse (refer to: https://www.reddit.com/r/gradadmissions/comments/acg7ua/gradcafe_is_the_worst_but_i_cant_help_but_check/)
http://www.cs.cmu.edu/~harchol/gradschooltalk.pdf - Recommended read about applying to PhD programs from CMU CS professor
http://csrankings.org/#/index?all - indispensable resource for comparing graduate schools by research output