FAQs and Advice for Students
by
Tao
Xie
Questions by CSC 326 students for industry panelists
Tao Xie's advice portal
Drop Tao Xie an email to discuss your questions
- What
would you recommend for students with not so stellar GPA¡¯s
to do to compete with those students who do have good GPA¡¯s? Or how can
a student with good GPA further improve his/her background?
Although
GPA is very important for an undergraduate student or a master student, GPA
doesn't decide everything and other factors matter too. You need to
stand out one or more things to attract attention of job recruiters for
job hunting or admission committees for graduate school application.
There are different ways for you to grow highlight points. Below are
some sample ideas for further improving a student's background. - Do industrial internships or coop to gain industrial experience. Try different channels to find internship
opportunities. For students who have research experiences, here is a
list of research labs, which may have competitive summer internship programs.
- Get
involved in open source project development. You can yourself join
various open source project development depending on your interests,
and you can also start your own open source projects. Open source
development experience would further enhance your background. You can
also apply and join the Google Summer of Code program (you are getting paid there too!). I served on the mentoring team of 2008 Google of Summer of Code Java Pathfinder project
and participated in the student selection/mentoring process. Talk to me
if you are applying Google Summer of Code and would like to learn how to
increase your chance of being selected in the program.
- Try
every opportunity to gain research experiences with some sample
opportunities below (the info listed below is mostly applicable for
undergraduate students):
- NCSU has a web for undergraduate research.
It has a small-grant program for undergraduates to apply (a faculty
advisor needs to be identified by undergraduates when applying).
- Some
faculty members may have undergraduate research funding to support
undergraduate research. For example, you can approach faculty members
of your interest to see whether they have extra effort and/or funding
to support/advise undergraduate research to be carried out by you.
- You can also apply for some summer research programs listed at the NCSU undergraduate research web.
- NIST has a competitive summer internship fellowship program. Talk to me if you have interest in applying; my research group has intensive collaboration with NIST researchers.
- Many
agencies and labs have undergraduate student summer programs. Do some
search yourself, here are some samples (after my googling): DIA, CIA, NSA, DOE, NASA
- For undergraduate women and underrepresented groups, consider to apply the CDC/CRA-W DREU summer program. Here is an IBM Research program for Research Internship for Black, Hispanic, and Native American Students. For a freshman underrepresented student, consider to apply Google¡¯s Computer Science Summer Institute (CSSI). See here for a list of other Google scholarships.
- Consider to apply to our NCSU STARS program.
- Various
industry people indicated that they wish to have been equipped better
with good technical communication skills at school. Besides taking
courses, how can I improve my technical communication skills?
There
are two main parts of technical communication: technical writing and
technical presentation. Writing clearly and effectively is challenging
but very important. Technical writing is different from writing for NY
Times. Many students don't have problems with grammar but don't do well
in organizing thoughts/flows logically or conveying strong arguments
convincingly. The most needed is good technical writing STYLE there.
You can get advice from those who are familiar with writing courses
offered at NCSU on what courses to take in terms of improving writing
styles. I attended a writing style course at my PhD program,
significantly improving my technical writing skills (now I not only
learn the rationales of writing in the right styles but also can
teach my students on why and how to write to convey the technical
content effectively in their writing). In that course, a book by Joseph
M. Williams was used: "Style: Lessons in Clarity and Grace". You may browse or read it but note that it is not very easy to read. Another easier-to-read book by Joseph M. Williams is "Style: Toward Clarity and Grace" as a pre-reading before you read the first book. Another free online booklet is "Elements of Style", which is very easy to read. In terms of organizing thoughts to have strong arguments, a book "The Pyramid Principle: Present Your Thinking So Clearly That the Ideas Jump Off the Page and into the Reader's Mind"
may be worth browsing. Its book price is high and written for business
people; I don't recommend you to buy it (unless you really find it a
best fit to you) but suggest you to have a look at a copy borrowed from
libraries. Other places for finding more advice include my slides on common technical writing issues, and my large collection of advice on technical writing and presentation as well as Englishing learning advice. Some slides of my research skills talk are also related to communication skills.
- How to better prepare programming questions for job/internship interviews?
To prepare programming interview questions, I would recommend the book of "Programming Interviews Exposed: Secrets to Landing Your Next Job". It
includes various example programming questions. Some companies such as
Microsoft and Google tend to ask these types of questions. Many other
companies also follow this interview practice. Some typical
programming question is to ask you to write some code on white board
such as removing one element from a linked list (in C). Then you would
be asked to write some test data to test your code (e.g., the element
to be removed in in the head/tail of the linked list, ...). One
common tip is to think aloud in your thinking process. Then even if you
cannot solve the problem, the interviewer can still know and appreciate
your thinking progress towards the solution. In addition, the
interviewer can also give you hints when you think aloud.
Knowing
only Java is not sufficient. Many companies would expect you to know at
least some knowledge and concepts about C++, especially those unique OO
features in C++. The quick intro to C++
prepared by a professor at the University of Washington is a very good
one to
have a quick look before job interviews. While being at graduate
school, I read it every time before I went to Microsoft Research for
interviews of a summer internship position. Even you know about C++.
This quick intro is very good for refreshing your memory for C++
concepts.
Some links on my job hunting advice collection include some more programming interview questions.
- Is it better to go to graduate school or get experience
working in industry?
Many factors can determine whether you would choose to go to graduate
school or go to industry after getting your BS (really case by case). Don't feel that you must get experience
of working full-time in industry before you go to graduate school (it is often difficult to go
back to graduate school after you work full-time). In the end of my
first year of my PhD program after doing a summer internship at Aavaya Labs Research, I
did consider to take a leave from my PhD program after I get my master
degree (in the middle of my PhD program) and work in industry for some
time before continuing the rest of my PhD program. I was advised by various senior
people that I should continue my PhD program and wrap it up. Indeed,
for some people, it may be better to have working experience to better prepare
for graduate school.
Graduate schools such as a master program or PhD
program can prepare students to grow one's skill/capability to another level (not just
technology knowledge but also general skills). There are various fellowship programs
for you to apply as financial aids to pursue your MS/PhD degree. Note
that in many places (including NCSU CSC), comparing to a PhD student, a
master student may have much lower chance of getting TA/RA financial
aids from the department or faculty members. In various places
(including NCSU CSC), a master student can transfer to the PhD program,
with strong recommendation/support of a faculty member as the advisor. As an undergraduate student, as described above,
you are strongly encouraged to get some undergraduate research
experiences, which can also help you know better whether you would
pursue a master or PhD degree after you get your BS.
Besides our very good NCSU CSC graduate program, our NCSU also has a very good,
unique Master of Science in Analytics (MSA) program.
It is a one-year intensive master program, preparing students with
various crucial analytical skills, highly demanded by the job market.
Talk to the program director Dr. Michael Rappa on more details. Various CSC faculty members teach in that program including myself.
Maintained by Tao
Xie