返回信息流一个朋友 她小学时就全家移民美国了 住在Pittsburgh 她考入哈佛后回国了一段时间 当时认识她的
现在她申请到了MIT的PhD 在博客里发了一系列CS Grad School的分享
帖来分享一下
这是一条镜像帖。来源:北邮人论坛 / go-abroad / #89874同步于 2008/8/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
GoAbroad机器人发帖
[转帖]CS Grad School
zixu1986
2008/8/14镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
CS Grad School Part 1: Deciding to Apply
As a result of talking to various people (/undergraduate seniors) who are figuring out what to do with their lives, I have made the arbitrary, unilateral decision that I will write a series of blog posts at you about how, why, where, etc. etc. etc. I applied to grad school.
Some more reliable resources. When I was applying I found it helpful to hear what other people who had applied had to say.
* Professor Harchol at CMU has a famous talk about who should apply to grad school, what to expect, etc. It is good to read for any undergraduate who thinks they might be interested in an academic career.
* Philip Guo, a grad student at Stanford, has a nice overview of what it means to be a graduate student, apply to graduate school, etc. He also discusses the application process.)
About me: I completed my undergraduate education in computer science at Harvard June 2008 and this fall (2008) I am starting a graduate program at MIT. I am interested in programming languages and compilers. My academic advisor was Prof. Margo Seltzer, my research advisor was Prof. Greg Morrisett.
DISCLAIMER: I may not have applied to grad school for the right reasons, but thus far I am happy. I may be happy because I have yet to begin my graduate program, but I can't predict the future and I have free time now, so...
Why I applied: Ever since I was a tiny Jean, I knew I wanted to do something when I grew up. Why this? Doing something was better than doing nothing, and committing myself to doing something didn't lock me down to a thing I might not like. Because of my short attention span, my one requirement was that the something was interesting. Sometime in early in my undergraduate career, this requirement alone led me to study computer science. Sometime later, the poor Boston climate contributed to the development of my goal to live in California. These two life requirements alone led me to spend a summer working at Google in Santa Monica. This was one of the more defining experiences of my life.
At Google, I realized the following, in order of importance:
1. I love California,
2. I love Google,
3. I am interested in making the world a better place by working on programming languages and tools, and
4. I should try to go to graduate school.
How I came to realize 1 is obvious. I loved Google because it was efficient, had badass programming tools, and because it had a very academic atmosphere where people were curious and loved what they worked on. I realized 3 because there were many times when I became frustrated with the current state of the art and had many discussions with my coworkers about it. (3 had been a developing passion for much of my life.) I realized 4 because my coworkers, most of whom had either gone to grad school and finished or gone to grad school and dropped out, all seemed to be of the opinion that graduate school was the place to go--and you can always drop out if you want to. These realizations, combined with my discovery that there was pretty awesome programming languages research going on at UC Berkeley, led me to develop the goal that I should continually apply to UC Berkeley until I was accepted, at which point I would drop everything and attend.
My decisions to apply to grad school and to apply to grad school right away (instead of working and then applying) were motivated by the following things:
1. For my interests in programming languages/tools, academia seems like a better place than grad school for doing exciting innovation. In industry, very few places get to spend a lot of time innovating their tools.
2. I didn't really want to spend the Rest of My Life working and doing the same thing day after day. Academia seems like a much more exciting place to be.
3. I had grown up pretty much at Carnegie Mellon University around a lot of CS grad students. Since that was all I knew, I probably figured I would become one someday.
4. GRE scores last for five years, so I figured I would take them while I was still in school.
5. I was in a good point in my life where I had professors who still remembered my name and a registrar's office still had a copy of my transcript with easy access. I figured that applying to grad school would at least get me to get these materials together.
My decision of which graduate schools to apply to was motivated by the following:
1. Because of my love of California and because of the cool research at Berkeley, I applied to UC Berkeley.
2. For similar reasons, I applied to Stanford.
3. Because MIT is cool, I applied to MIT.
4. Because CMU, Penn, and UW do cool languages research, I applied there as well. This was mostly because my advisor, Greg Morrisett, said it was a good idea. I tried to tell him that all I really wanted to do was to go to California, but he said I might change my mind once I visited the schools. (He was partially correct, but then again in any useful system that is the best you can do.)
I didn't apply anywhere else because these were the schools where I would consider going rather than going to Google. (I had a full-time offer from Google at the time I applied.) I didn't apply to any other companies because I was pretty happy with Google.
For reference, you may want to look at the US New rankings. The "top 4" CS grad schools are generally acknowledged to be MIT, Berkeley, Stanford, and CMU. UW follows just afterward, and then other schools (like UPenn) are known to be very good in specific subject areas. If you are very sure what you want to do, then it is good to go somewhere known to be good in that area, but if you are less certain it is better to go somewhere more generally good.
CS Grad School Part 2: Standardized Tests
The GRE, or the Great Required Exam, is what it sounds like--except not Great. For computer science grad students, the general test is required and the subject test is highly recommended.
General exam: As of the time I took the exam September 2007, the GRE general test had three parts: math, verbal, and analytical (in which you write a really short essay). It is generally a computer-based test, which means that during the math and verbal sections the questions you get depend on the questions you've answered correctly so far. It also means that you can't return to your previously answered questions. This is meant to throw you off, but if you are confident and prepared for such a test you should be fine. There are also paper versions of the GRE general test that are offered a couple of times a year and require registering years (probably months) in advance. I recommend sucking it up and taking the computer-based exam.
I don't have much to say about the content of the GRE general test, except:
1. Math matters,
2. Verbal doesn't matter, and
3. Writing may matter, but we are agnostic.
The math is SAT/high-school level math; if you are applying to a top CS school you should try to get an 800. Getting an 800 on the GRE is easier (in some senses) than getting an 800 on the SAT because they allow more wrong answers or something like that. The verbal score actually matters nothing, I believe, but I read through a vocabulary book because I hate doing poorly on things. (The vocabulary is quite a bit more advanced than that on the SAT, but the questions are the same structure. I spent 2-ish weeks going through a Kaplan vocabulary book and the corresponding exercises and got 750 out of 800.) The way I recommend preparing for this exam is acquiring a GRE book and going through a couple of practice exams to make sure you know what the test is about. When you register for the GRE they will send you a CD with a couple of practice exams. For this reason, I recommend registering early.
Subject test: A subject test in computer science, math, or physics is strongly recommended when applying to most top CS PhD programs. An important thing to note is that strongly recommended != required. I believe the only thing for which the score was required was for the National Department of Defense Fellowship, which is hard to get and which I didn't get. (This means that Berkeley, Stanford, MIT, UPenn, UW, CMU, and the NSF fellowship did not require it.) One of my professors, Radhika Nagpal, gave me this advice: look over a practice test and take the exam if you think you'll do well. You don't want schools to have anything to worry about, and a low score could cause them to worry. Following this advice, I didn't do a whole lot to prepare for the exam, took the exam, got an unsatisfactory score and withheld it from all schools except the one fellowship that required it. I ended up getting into all of my schools and getting the NSF fellowship, providing proof that the subject test score is actually not required.
I must note, however, I had the luxury of having recommenders who were known in the CS community and could vouch for the fact that I knew things. I think if you did not major in computer science, are coming from a less well-known institution, or have questionable grades your CS GRE score counts a lot more. The day before I took the exam, I discovered this study guide by a guy who did not major in computer science and felt like his subject test score of 800 convinced the admissions committees that he knew things. (I suggest taking a look at the study guide; I didn't discover it until far too late.)
CS Grad School Part 3: Fellowships
I put fellowship applications before the actual applications themselves because the deadlines are sooner. You should figure out where you are applying for school, what you're applying for, and that kind of thing before you apply for fellowships. (The NSF and Hertz deadlines were in November when I applied in 2007.)
Philip Guo has a nice summary of the three main fellowships available, the National Science Foundation Graduate Research Fellowship (NSF GRF), the National Defense Science and Engineering Graduate Fellowship (NDSEGF), and the Hertz Fellowship. The NSF, which provides a stipend of 30,000 a year for three years, is given to the most people and favors women and minority groups in fields in computer science. The NDSEGF is slightly more money, given to fewer people, and harder to get. The Hertz is the most money, given to the smallest number of people, and the hardest to get. :)
When I applied to graduate schools, I applied for all three fellowships and was awarded the NSF. I was declined for the NDSEGF and the Hertz, although I did get a second-round interview for the Hertz. I will write mostly about my NSF application, but I will also describe my Hertz interview because this information may be helpful for you.
NSF. For the NSF fellowship, you are required to write a personal statement, a statement of research experience, and a research proposal for a project you would pursue in graduate school. I was given the very helpful advice that I should make my essays clear and concise, as the readers would likely to be skimming. My materials are below:
* Personal statement - I write about my life goals as they are relevant to my graduate pursuits and how I came to develop them.
* Research experience - this was fairly straight forward. One helpful editor told me to provide enough background for understanding each research experience.
* Proposed research - I described my undergraduate senior thesis. The project does not necessarily have to be a project you for sure plan to pursue in graduate school; you just need to show that you have thought about a large-scale project, the reasons for pursuing it, and what impact it may have. One good piece of advice I got was to make the problem as clear as possible as early as possible.
Hertz. As my Hertz materials were quite similar, I will not post them. The Hertz fellowship is much more selective: you submit your paper materials for review in hopes of getting a second-round interview (given to 25% of applicants), the results of which get submitted as part of your file. If you make it past the second round interviews, they eat you. (I believe you might get another interview, and then perhaps the fellowship.)
The Hertz second-round interview is an hour long and with someone who has previously received the Hertz fellowship. My interviewer asked me about my experiences, peppering in questions to make sure I knew what I was talking about. My interviewer took me by surprise by asking me about protein folding--I was interviewing as a potential CS grad student, but I had done some research in computational biology. Other examples of fact-checking: when I said I liked compilers, my interviewer asked me to describe the compilation process, data structures involved, etc. The interview concluded with general questions (linear algebra, how would you tell apart jars of two different substances using kitchen supplies, etc.).
CS Grad School Part 4: Applications
I applied to, and was admitted to, (in alphabetical order) Carnegie Mellon University, MIT, Stanford, University of California Berkeley, University of Pennsylvania, and University of Washington.
Applications tend to be due in December/January. It is important to figure out which applications are rolling. (I did not realize UPenn was rolling until I submitted the application. Applying earlier does give you an advantage in these situations, especially if you are concerned about your application. In the case of Penn, I believe you also find out earlier if you apply earlier.)
The three important parts of the application are the personal statement, the academic transcript, and the recommendations. How much each part matters depends on the person, but my take on it is: a strong personal statement can help a lot; a weak personal statement could hurt some; a strong transcript doesn't hurt; a weak transcript won't necessarily kill you; strong recommendations can get you in; weak recommendations will get you ignored.
Personal statement. This is what allows the admissions committee to see you as a person and picture you on their campus. (Also, by the time you apply the personal statement is the only thing you can spend a lot of time on, so you might as well. If nothing else, you should signal to the schools that you care enough about them to spend some time on your applications.)
I have posted my personal statement for CMU because I Texed it and it looks nice. (By the way, I believe fully in the power of presentation and recommend you Tex whatever you can whenever you can.)
I was given the following advice about writing my personal statement:
* Whoever reads it might be skimming, so make sure you have strong topic sentences for each paragraph and that you can read through each of them to get the full picture.
* In the same vein, get to the point quickly. Be concise.
* Make sure you explain:
o Why you want to be a grad student.
o Why you would make a good grad student, with supporting evidence from the facts of your life.
o What you want to do in grad school. Be clear enough so they can picture you doing whatever it is you want to do at their school.
In terms of how much you school-specific details you should include, it depends on how much you have to say about the school. One of my professors, Radhika Nagpal, told me that if you really want to go to a school and are excited about working with professors X, Y, and Z, you should say so. If you are applying to a school because you think it is nice but don't have that much to say, you do not have to say more than a sentence or two. The schools understand that you are applying to many schools (and possibly jobs as well) and they will also be competing with other things to get you as a student.
Transcript. If you are still early enough in your undergraduate career to do something about this, don't worry about your grades as much as the courses you take and how well you do in them. (Prof. Harchol's talk discusses why grades are less important than you might think.)
If there are rough patches in your transcripts, you should probably address them in your personal statement and ask your recommenders to explain them if they are in a position to do so.
Recommendations. These are also an important part of your application, as your recommenders vouch for what you say you can do in your personal statement. Most schools ask for three; schools receiving many applications (such as Berkeley) may limit the number of recs to three.
I was fortunate enough to have three recommenders who knew me well and are well-known in the CS community: Prof. Margo Seltzer, my former professor and academic advisor since freshman year, Prof. Greg Morrisett, my former professor and research advisor, and Prof. Radhika Nagpal, who taught me in two courses and who taught a course for which I was the teaching fellow. I was advised to get letters from non-Harvard professors, so I also asked Dr. Dennis Wall, for whom I worked as a computational biology research intern, and Dominic Mazzoni, with whom I worked at Google. When I was only permitted three recommendations, I asked Profs. Morrisett and Nagpal and Dr. Wall.
I had been given the following advice about selecting/asking for recommendations:
* Choose recommenders who can say useful things about you. Choosing a famous professor who doesn't know you isn't going to do much. However, it does help to choose professors who are known in your fields of interest. Talk to your advisor (and recommenders) to see who they suggest do your recommendations--they might know better than you who would write a better rec for you.
* Ask your recommenders well in advance (at least a month is optimal).
* Give your recommenders an idea of what you want them to say. Tell them what it is you are applying for, what qualities they are looking for (this is more relevant for fellowships, I guess), and what the rest of your application looks like. I tried to finish all of my essays a couple of weeks in advance to give my recommenders enough time to read them before writing my recs.
CS Grad School Part 5: School Visits
You should begin hearing back from schools in February. I heard back from my first schools--Penn, UW, and Berkeley--on February 6. After asking around I conclude that they do not tell people at the same time, and when they tell people depends on when they decide to admit you and how much funding they have. I heard that how CMU (and probably other schools) do it is they admit the people they definitely know they can fund and then they wait to either hear about more funding to hear from students going to other schools before admitting other people.
School visits are usually in late February/March and are a great opportunity for visiting the campus, talking to professors, talking to grad students, and escaping your native climate. Schools will cover the expenses of these visits up to a certain amount (not guaranteed to cover all costs!), so it is important to book your tickets (and ask about accomodations) as soon as you hear from the schools. (Most schools reimburse you for booking your own tickets, and only CMU offered to do the booking for me.)
Some advice I have compiled about school visits:
* One of my professors told me to make a spreadsheet with qualities I'm looking for in each school, but one of my other professors told me that there is no good way to rationalize the decision so I should go with my gut feeling. I did the latter, mostly because I have never found spreadsheets to be useful and because I had a good idea of what I wanted in a school.
* You may not get a whole lot of time with professors, so it is good to look up some information on the school and the professors' work beforehand so you can ask informed questions.
* Not all professors you talk to expect that you have looked up their work etc. Given time constraints, focus on the professors you think you'll want to work with.
Overview of school visits. These are really fun times when you have scheduled time to meet with professors and current graduate students, you are given good food and drink, and you are generally shown a good time because the schools want to convince you to go there. This is a fun time in your life because it is likely that you'll run into other prospective grad students at more than one school and it's a little bit like one big traveling party.
The schools I visited, in chronological order of my visits:
University of Pennsylvania. UPenn has an extremely strong programming languages group of Benjamin Pierce, Stephanie Weirich, and Steve Zdancewic. They are also very good in things like computer vision and natural language processing (I am told). Their very-goodness is also a new development, as they acquired many Bell Labs (New Jersey) people when that disintegrated. The Penn visit involved many meetings with professors, a poster session, a nice dinner with professors and grad students, a bar crawl, an exclusive Frieda Kahlo exhibit, and probably other things. Penn might have been the only place where they had me meeting exclusively with professors (except MIT), and for a long time (half hour, hour?) each. Everyone was very nice and working on cool things. One of the main reasons I decided not to go there was because I wasn't ready to commit the rest of my life to the flavor of theoretical programming languages theyw ere do research they were doing there. (Penn, CMU, Harvard, and UW are the three places in the states where you'll find the theoretical, POPL/ICPF, theorem-proving kind of PL research.)
MIT. I loved MIT's visit weekend. The first day had various tours, then a dinner with the faculty, then things around Boston. The second day they had a representative sample of the faculty give three-minute long presentations and then allowed the rest of the day for meetings with professors. These were short (20 minutes?) and with a large number of professors. I liked MIT's atmosphere because it was quirky, fast-paced, and had a good sense of humor.
Stanford. Stanford has a much more corporate atmosphere than the other schools. Their research is very applied--people often start companies from the research. The professors were surprisingly nice and seemed to know my name before I got there, which is always a good sign. The grad students there seem like they are treated very well. The visit weekend also included a fun trampoline jumping event. Some of the reasons I chose not go to Stanford: it is very west-coast and corporate, there isn't much of a grad student presence on campus (people treat it like a job and often work from home), and I met Philip Guo, a grad student who had done his undergrad at MIT and convinced me that I would love MIT.
Berkeley. Berkeley was the reason I applied to grad school, and during my visit weekend I concluded that Berkeley (the place) is indeed heaven on earth. UC Berkeley also had a great vibe, with its lush green campus and diverse student body. The professors there were also doing great PL research. The main reasons I didn't go to Berkeley was because I felt like MIT was a better personality fit--despite my love for California, I think I am more of an east-coast academic, whatever that means. I also felt like Berkeley's department was much bigger than MIT, probably because there is a lot of collaboration between professors. While this is the reason many people choose to go to Berkeley, I found MIT to be more personal for the reason that professors have their small empires which they tend to with care (in some situations).
UW. This was probably the most fun visit weekend because they are quite generous with the alcohol. (Other grad students I have met have said the same thing.) The grad students at UW seem very happy and to like what they are doing. Two reasons I did not go to UW: Seattle is really far north (and so there is very little light in the winter), and in terms of PL guys they only had Dan Grossman because Craig Chambers was on leave at Google.
CMU. I was very tired by this visit weekend and it was also close to the due date of my thesis, so I didn't spend very long here. Fortunately, I had grown up in Pittsburgh across the street from CMU so I know a bit about Pittsburgh and the area surrounding CMU. CMU has a great CS department; CMU is based around is department, which is an amazing thing if you are into that. CMU's PL group is also basically the department, which is like a candy store if you are a PL nerd. Despite this, the draw of CMU and its PL group did not outweigh my desire to not live in Pittsburgh anymore. (I had lived in Pittsburgh for thirteen years, from the ages of five to seventeen. It is a little small for me to return there anytime soon. It is, however, a great city because 1) it is great for raising small children and 2) the graduate stipend goes a long way because of lower costs of living.) Thus, I disappointed my advisor and did not choose CMU.