Well, let's start at the beginning. The fall of 2002 is the start
of my 5th year here. Since you're reading this, I'll assume you're new
here. So, lemme give you some useless tidbits of advice for your grad
school tenure. Naturally, these are just my opinions and not necessarily
those of the department, or any sane person for that matter.
- Learn Emacs -- Take some time now to learn emacs,
and you'll be happier later on. If you haven't heard of it,
emacs is an extraordinarily powerful editor that provides
support for editing just about anything you can imagine.
I use it for editing
source code, reading mail, reading news, writing papers, and
even running other programs. Emacs can also do a lot more.
Here's a pathetically short list of keystrokes to get you
started.
- In the parlance of emacs, a
C-x
means to hold down the control
key, and hit the `x' key. M-x
means to hit (but not hold down)
the meta key, typically Escape, and then hit `x'.
- Start emacs by typing, appropriately enough, `emacs' at
command prompt. You could also use `xemacs' which some
people prefer (I don't, but hey, that's my opinion).
As of the time of this writing, `emacs' will bring up
GNU Emacs version 20.3, which is a little old. I'd
recommend using `emacs-21' which brings up GNU Emacs
21.1.2, which is much newer (and prettier).
C-x C-c exits emacs.
C-x C-f opens another file to edit.
C-x b
changes to another buffer. One of the more common
mistakes that beginners make is assuming that you have to
start up emacs for each file you edit. You only need one
copy of emacs running, and just visit different
files as you need.
C-g causes emacs to stop doing
the current command. When in doubt, hit
C-g a few times to make emacs
get back to a known state.
C-h t
starts a tutorial that I highly recommend you go through
- Learn vi -- another text editor. There are alot of
people who jump up and down and claim that you should only learn
emacs or only learn vi. Personally, I think those people have some
serious problems if they get that obsessive about their text editors.
In any event, why would I tell you to learn two different editors?
My preference when editing text is to use vi for small, quick changes
and use emacs for any editing that will take a while. Of course your
preference may differ, but you won't know that unless you try both.
The quick lesson: vi has two modes, a command mode and an insert
mode. In command mode, you, strangely enough, issue commands
to the editor. These commands include moving the cursor up a line,
finding some bit of text, etc. In insert mode, you actually, you
know, insert text. This is an odd paradigm for text editing. You're
probably used to editors, such as emacs,
that allow you to issue commands and insert text at the same time.
To get into command mode, hit the escape key. Once in command mode,
you can do the following:
i changes the mode to insert.
j moves down one line.
k moves up one line.
h moves the cursor left one character.
l moves the cursor right one character.
:w writes the text file
:q quits out of vi
:wq writes the file and then quits vi.
Most versions of vi permit you to use the arrow keys to move around.
I find this annoying as any movement of my hands off the home row
slows down my typing. You'll find that after you learn vi, the
hjkl keys become second nature, to the point that you don't even
consider what keys you're actually hitting, you just do it. (In order
to write this tidbit, I actually had to stop and look at what key
I was hitting.) Naturally, vi can do alot more.
- Don't annoy the secretaries -- This is just general
advice that you should follow anywhere. If you doubt this, consider
who has the real power in the department. The chair? Ha! the
assistant to the chair? Wrong again. It's the secretaries. I
see that vacant look on your face that just screams out to be
enlightened. Very well. Who
touches every single piece of paper that goes or comes into the
department? Yup, the secretaries. Big deal I hear you say.
Well, what do those pieces contain? Let's see... there's
your paycheck information, you registration, that grant proposal,
copies of your answers on the prelims, etc. Get
the picture yet? Just thank your lucky stars that Pat, Fran and
Vicky happen to be nice and will help you. Still, I know I'm
not going to run off and annoy them anytime soon.
- Make every effort to meet your office hours
-- Seriously. Do you
have any idea how damn annoying it is to want help and then
find that the TA has decided to skip out on his/her office
hours? Any idea? No, of course not because if
you did, then you wouldn't even think
of skipping them. Nonetheless, occassionally a TA skips his/her
hours. If you can't be there because of some outstanding
commitment (conference, etc) then give your students
as much notice as you can. If some emergency comes up,
well, these things happen and people understand. Just don't
go skipping your office hours because you thought no one would
show up, or you were too busy with homework, etc.
- Get involved in research early -- I don't have
the statistics handy, but I would hazard a guess that the
average amount of time a grad student is here is close to 6
years. If you take 3 courses a semester, you could clear all
the course requirements within 2.5 years. So what's the rest of
the time? Research.
If you want to shorten that time, then get
started earlier. Sounds easy right? I wish it was.
Start thinking about
possible areas that interest you and what faculty are involved
in those areas. Sit in on a couple of the SIG talks. You're
required to attend one SIG group each semester, but you can also
go to any of the talks in any SIG group that interest you.
Once you've got an idea of what topics interest you,
talk to the
faculty involved. They can give you an overview of the specific
research they do, and perhaps even have a small project you
could work on for a little bit. You may not get RA funding
right away, but you do get an idea of whether or not you like
the area. That alone is worth alot. The last thing you want
is to be doing research in an area you later decide you
hate. Yes, you could change areas later, but you could lose a
lot of time depending on how far along in the process you are.
If everything goes well, within 2 or 3 semesters you probably
have picked your research advisor and are working on topics.
It may be slow going at first while you're taking classes, but
once the classes are done, you'll get through pretty quick and
be out of here in less than 5 years.
- Take time for yourself -- Seems like
a cliche. Yuck. But it's true. There will be times that you're
working 60-80 hours a week, maybe more (I've gotten past the 80
hour mark once or twice. It's not fun).
It happens.
You could find yourself in the position of taking 3 classes,
having TA duties and doing some research. Do whatever you
have to get through it, but don't forget to take some time away
from all the work. Even if that time is spent staring at a wall,
while listening to Pink Floyd or the Grateful Dead, or out with
other grad students, it'll help.
- I'd recommend against taking 601 (theory of computation)
and 621 (Algorithms) together in the same
semester unless you happen to be particularly math inclined.
Some grads can pull it off, but most of us will find either one
of those courses challenging enough.
- In the same vein, I'd also recommmend against taking 672
(Compilers) with any other programming intensive class like
681 (AI). You'll have enough programming in 672 (or 681) to
keep you busy.
- Get to know some of the indentured servants
-- err, umm, I meant "grad students" and not indentured servants.
Yeah, that's it (especially if you're facutly reading this).
Now, I know this one is asking alot. Computer science doesn't
exactly attract the most extroverted people. I, for one, am
way on the introverted side. Still it wouldn't hurt you to
at least know some of the grad students so you can say "Hi" when
you happen to run into them. At the very least, your tenure
here will be a little more pleasant. You may also find people to
work with in the various classes you have, to study for prelims
with, etc.
- If you're wondering, yes you can do more than one master's degree
while you're here. I know, I'm doing it (I'm having a fling with
physics). Just remember that doing this will add to your time
here. For some (like me) that doesn't matter. For others it may.
- LaTeX -- Before I say anything else about this,
let's be absolutely clear about you pronounce "LaTeX".
I can't do the correct critical marks, but it goes like this:
"la - tech", got it? The "a" is short. The emphasis tends to
be on the second syllable. Ok, got the right pronunciation
for this. I dont' want to hear anyone saying "lA - techs",
as in the source of rubber.
Glad we got that cleared up. What is LaTeX? It's a typesetting
system used to format papers, books, etc. It's vaguely similar
to HTML in that you provide various tags that tell LaTeX what
to do, such as bolding text, etc. LaTeX, however, is much more
powerful than just bolding text. You can type set tables,
math symbols, easily handle bibliographies, etc.
The cool thing is that you just type. You
don't worry about what the final document will look like, as
LaTeX will handle all those messy details. The importance of
LaTex and the reason you need it, is that most published
papers are written in LaTeX. Sooner or later, you will have
to deal with it, so you might as well take some time now.
By the way, if you get the chance, pull down AUCTeX,
a package for emacs (you did learn emacs right?) that makes
using LaTeX a lot easier.
- SIG groups -- Ok, here's the deal with
the SIG (Special Interest Group) groups (yes, the G in SIG mean
group, so I don't know why we usually append "groups" after
SIG. It seems redundant, but then, so are my parenthetical
remarks). What are they? Basically, colloqiums. They bring
in speakers, either faculty, grad students, or industry
researchers to talk about their research.
Each SIG group focuses on a particular
area of research, such as program analysis, AI, theory,
symbolic computation, etc. They provide a good opportunity
to learn what others are doing in a particular field.
You are required to register for one SIG group
each semester you are here. It may be the same SIG group each
semester, or it can different ones, it doesn't matter.
Furthermore, just because you are in SigAI doesn't mean you
can't attend a talk in SigPACT. In fact, you're encouraged to
attend talks in other groups if the area interests you (see
the above point about getting started early). I won't go into
the various groups here. There will be a department colloquium
early in the semester where the powers that be for each group
will give you an overview.