Showing posts with label advice. Show all posts
Showing posts with label advice. Show all posts

Friday, July 26, 2019

What advice would you give to a young woman in high school considering computer science?

Subject: Question: Young women in computer science
To: Keith Winstein <keithw@...>
Date: Fri, 26 Jul 2019 08:47:14 -0400


I am a senior at XYZ High School in Pennsylvania and the only young woman taking our AP computer science courses. My principal wants my thoughts on increasing computer science interest level among young women. I am asking a number of professors the following question:

What advice would you give to a young woman in high school considering computer science?

If you can spare a few minutes to respond via email, it would be greatly appreciated.  


Thank you.



Subject: Re: Question: Young women in computer science
From: Keith Winstein <keithw@...>
Date: Fri, 26 Jul 2019 12:53:10 -0700

I guess I would say "welcome"!! I hope you find computer science rewarding and look forward to reading your contributions to the field over time. There are so many diverse ways to be a computer scientist and to do computer science. I hope your early years in the field end up exposing you broadly and sparking your interest.

One thing I would say is that it's valuable to find good mentors, people you look up to and whose examples you can try to "live up" to and from whom you can learn as much as possible. A lot of undergraduates unfortunately become fixated on their own classmates, and worry about trying to "keep up" with these people or "catch up" to their level of preparation. In the grand scheme of things, these people are not so important -- in my experience, it's more valuable to have goals, and mentors and heroes who embody those goals and serve as an example for you to try to "live up" to over the many years of your (hopefully long) education and career. Of course it may take you a while to figure out what kind of person you want to become and who you want to look up to. :-)


And a different interview about graduate school here: https://cs.stanford.edu/~keithw/interview-2015-guo-wu-winstein.html

Some advice you may want to read: Justine Sherry's (https://people.eecs.berkeley.edu/~justine/advice.pdf) or Michael Ernst's (https://homes.cs.washington.edu/~mernst/advice/) or Jennifer Rexford's (https://www.cs.princeton.edu/~jrex/advice.html). The basic truth is that "imposter syndrome" is very common (among both men and women), and it can be helpful to recognize that.

The second thing I would say is that there are a lot of great events for women in computer science, and a lot of people I know really enjoy and are inspired by attending them! So, attend the Grace Hopper Celebration (https://ghc.anitab.org/), both while you're in high school and continuing in college, at least if you can make it and if it looks interesting to you. (This is probably the biggest one.) Consider attending an ACM-W event or starting an ACM-W chapter (https://women.acm.org/category/celebrations/).

The third thing I would say is to read a lot of books. Computer science is a broad field, and there are so many ways to experience and enjoy and contribute to it. It's helpful to have some exposure to different parts of the field. Some of the great ones include:
  • Hofstadter, "Godel, Escher, Bach" (can be a life-changing book)
  • Hofstadter, "Metamagical Themas" (also a really fun read if you liked G.E.B.)
  • Gardner, "aha! Gotcha" -- fun book about paradoxes
  • "How to Design Programs," and do the assignments (free online: https://www.htdp.org/)
  • Abelson and Sussman, "Structure and Interpretation of Computer Programs," also free online
  • Levy, "Hackers: Heroes of the Information Revolution" by Steven Levy (this is a fun story about the history of "hackers" and a bit about Silicon Valley)
  • Steiglitz, "A Digital Signal Processing Primer: With Applications to Digital Audio and Computer Music" -- this was a life-changing book for me when I read it the summer before college. Computer science (and EECS) is about more than just programming!
  • Sipser, "Introduction to the Theory of Computation" -- this is a junior-level textbook but you might be ready for it and enjoy it -- it's a great book
Number four, read these famous (and semi-depressing?) essays that every high-school student should read:
Good luck, and please feel free to get in touch again if I can be helpful,
Keith

Wednesday, February 1, 2017

Advice on the CS faculty interview

Here is a bunch of advice that people gave me on interviewing for an assistant professorship in CS in 2014 that proved helpful at the time. Please take all of this with a grain of salt (I have never been on a tenure-track faculty hiring committee).
  1. Enjoy it! It's a lot of fun to visit these places and get acquainted with a bunch of interesting people you would probably never talk to. You will keep bumping in to these people throughout your career.

  2. Michael Ernst's advice is good: https://homes.cs.washington.edu/~mernst/advice/academic-job.html . Also read my interview with Eugene and Phil Guo: http://pgbovine.net/PhD-interview-eugene-wu-keith-winstein.htm

  3. For the talk: Give MANY practice talks before your first real interview. Take advantage of any offers to sit and watch a practice talk. Giving the same practice talk multiple times to the same audience is not crazy -- you can take feedback, incorporate it, and then give the talk again. Consider videotaping your practice talk and then watching the video. If you can schedule yourself to give a talk somewhere that doesn't matter as much (e.g. a conference, or maybe a lower-ranked school) before the higher-stakes interviews, do it.

  4. Remember that the talk is for a broad CS audience, and the theorists and AI people may have some strange questions based on their own disciplines or experience or what connections they see or don't see. It's good to be prepared for those questions before you get them for the first time at a higher-stakes place, because if you can give an erudite answer off the cuff to some question about a connection to something in somebody else's field (because you've heard it before!) it will make you look like a genius.

  5. Pitching the talk to the audience takes some care. At some schools, you will have an audience of people who really know your area and want to ask tough questions. At some schools, there's really nobody who's an expert, and people just want to get a sense of, "Is this an exciting person with an exciting *future* agenda?" Try to figure out what kind of audience you have in each place [and be ready to switch modes as necessary]. Don't neglect the "future agenda" part of your talk.

  6. Get the $60 Logitech R800 with the built-in timer and 5-minute vibrate warning and the green laser pointer. Practice your talk with the timer and vibrator for timing. Make sure you have a general sense of what the timer is supposed to be at at various points in your talk, so you know if you have to speed up or slow down. Really do aim to finish in 45-50 minutes (including questions in the middle), and be prepared that some places may want less than that.

  7. Have backup presentation options. Make sure you can connect your laptop to the projector at each place. Carry all the dongles necessary. Carry your presentation on a USB thumb drive in various formats (PDF, PowerPoint, whatever) just in case. At Princeton, a colleague had trouble connecting his laptop to the screen and had to delay his talk by 20 minutes and people left before it began and there were no questions and he didn't get an offer. Don't let that happen to you.

  8. Give yourself some rest time in the schedule if you can. If you can avoid it, try not to do two interviews the same week.

  9. It can be overwhelming (especially the places that schedule you for two full days of 30-minute or 45-minute interviews plus three dinners). It's not crazy to take the list they give you and make index cards of the people you'll be meeting with. For each person, do two things: (a) write 3-6 words on the card that help you remember, "who is this / what is their deal?" Trust me, you are liable to forget when it's the 4th graph theorist you're meeting with at School X. (b) Read the CV and be prepared, if there's a lull in the conversation, to bring up, "Hey, here's a problem that youand I could collaborate on." Sometimes this might require going back six years in their publication history to find something you can talk about, but that's okay and people love that stuff. Remember that they are evaluating you as a possible (future) colleague, more than on the basis of your past work.

  10. Soon after you're done with the interview, send everybody you met with a simple two or three-sentence thank-you email, just saying you appreciated meeting with them and enjoyed your visit and maybe that you liked meeting with their students. A lot of people don't do this (unless they are already faculty somewhere) but the pros definitely do it.

  11. At the dinner(s), remember that you are still being evaluated. Limit alcohol and messy foods.

  12. Try to meet with PhD students at every place you interview. (It's fine to ask to put this on your schedule if it's not there in the first version.) You'll enjoy getting a feel for the place through them. Also: at some schools, the Ph.D. students have approximately zero influence (e.g., MIT in my experience) and at some schools, the Ph.D. students have a surprisingly large influence (e.g. Stanford!). You'll never know this in general so just assume the Ph.D. students have lots of influence. From what I can tell, the #1 Ph.D. student evaluation criterion is, "Will this person be a good/kind/helpful advisor?"

  13. Be prepared to discuss how your work relates or is independent from other people at the institution. E.g., if some faculty member is thinking, "What does she add when we already have Professors X/Y/Z?", it could be helpful to situate yourself relative to other people at the institution and show familiarity with their work (and be able to explain it to a nonspecialist).

Sunday, February 7, 2016

Stock advice for undergraduates interested in doing a Ph.D. in computer science

Thank you for getting in touch! As you may know, Ph.D. students at Stanford are admitted by a department committee, and students usually rotate with three advisors during their first year, so that students are not beholden to any individual faculty member. I encourage you to apply in the fall (not just to us -- also consider MIT, U.C. Berkeley, U.C. San Diego, UCLA, U. Washington, Cornell, Carnegie Mellon, U. Illinois, Princeton, ETH Zurich, EPFL, University College London, Georgia Tech, U. Texas at Austin, Columbia, NYU, Tsinghua, etc.). If you are admitted, I would be happy to meet with you about the possibility of working together.

In the meantime, here is some stock advice for people thinking about doing a Ph.D. in computer science:

  • Read some of the essays that people have written about "what grad school in CS is like." I did an interview on this with my friend Eugene Wu (https://cs.stanford.edu/~keithw/interview-2015-guo-wu-winstein.html), and our friend Adam Marcus (https://marcua.net/writing/gradschool-guide/) also wrote a guide after finishing his PhD. Our other friend Phil Guo also wrote a depressing book about his (not-so-good, but also not horrible) time in grad school at Stanford (available to Stanford students upon request -- Phil has had this removed from the Internet), and he ultimately ended up in a great job where he seems happy and productive (and now tenured) too.

  • Read some of the advice for grad-school applicants, e.g. Michael Ernst's (https://homes.cs.washington.edu/~mernst/advice/) and Jennifer Rexford's (https://www.cs.princeton.edu/~jrex/advice.html) and Justine Sherry's (http://www.eecs.berkeley.edu/~justine/advice.pdf) and
    Mor Harchol-Balter's (https://www.cs.cmu.edu/~harchol/gradschooltalk.pdf) and Andy Pavlo's (https://www.cs.cmu.edu/~pavlo/blog/2015/10/how-to-write-a-bad-statement-for-a-computer-science-phd-admissions-application.html).
     
  • Think real carefully about "Why do you want to go to grad school?" Do you want to use computational thinking to help people in a tangible way? Or do you want to learn about computer science for its own sake, as a quest for knowledge? Do you think you would enjoy a teaching-focused job, or an industrial research job, and these require a Ph.D.? All of these can be great answers, but they are different. What projects or independent activities have you done (things nobody told you to do) that you enjoyed or found satisfying? How can you aim to best continue that? (By contrast, "I did well in undergrad and would like to continue my education" is not a good reason to start a Ph.D. in computer science!)
     
  • Consider taking time off between undergrad and grad school, or at least deferring for a year after you are accepted. Depending on the subfield, the people that do this often have a real leg up, because they can bring a nontraditional perspective to the table. There's little benefit in being "smarter" than everybody else in the group if all that means is that you are saying something first that somebody else was going to say anyway 90 seconds later. It's better to be the one contributing ideas (about new problems worthy of attack OR ways to solve them) or a point of view that wasn't going to get contributed at all. And the people who have exposed themselves to more diverse environments often have had more time to understand themselves and what kind of environment they need to build around themselves (advising, style of work) to be happy and productive. Depending on your advisor's style and the culture of the department, grad school can be almost a totally unstructured and self-directed environment (quite different from undergrad) so you really don't want to go into it as a sort of default. (If you are saying to yourself, "but I don't know what I would do during that year off," that is not a good reason to make grad school become your default! By contrast, if you are saying, "but I am in theory or another mathematically inclined subfield and literally the only way to get better at it is to keep doing it; there is nothing the outside world has to offer me," then maybe you are right -- theorists often do seem to adhere to this kind of thinking.)
     
  • Start thinking about how to demonstrate (by December of the year when you plan to apply) to your letter writers that you have the initiative/resourcefulness/creativity/grit and can see a project through to completion even over obstacles. (Ideally, by participating in a research project that submits a paper for publication.) The letters of recommendation do matter a lot, probably more than anything else in the application, and the letters will ideally be from people that the readers can trust are well-calibrated to speak to your promise at doing CS research.
     
  • Try to get on whatever mailing lists you need to to start attending the research talks at your college or university. (Some of this might be harder in the age of Zoom/economic collapse, but still...) This can vary based on what type of college you are attending, but if you are at a research university, there can be a lot of these: departments or research groups may have seminar series/colloquia, and then every doctoral student is going to have a public defense, and every job candidate who wants to be a professor is going to do a public "job talk," and at some places, every junior-faculty member who wants to get tenure has to do a "tenure talk," etc. These are almost always just open to anybody who wants to come.

Best regards,
Keith