djfish's studio
12/30/2008
THE C PRIMER C's reserved words
THE C PRIMER history of C language
CPL (Combined Programming Language) Cambridge and the University of London, 1963
BCPL (Bsic Combined Programming Language) Martin Richards,Cambridge, 1967
B Ken Thompson,Bell Labs, 1970
C Dennis Ritchie,Bell Labs, 1972
THE C PRIMER tips
2.default output file name is a.out.
3.cc compile .c .o files.
THE C PRIMER roman numerals
/*print an Arabic number in Roman numberals*/
roman(arabic)
int arabic;
{
arabic =romanize(arabic, 1000, 'M');
arabic =romanize(arabic, 500, 'D');
arabic =romanize(arabic, 100, 'C');
arabic =romanize(arabic, 50, 'L');
arabic =romanize(arabic, 10, 'X');
arabic =romanize(arabic, 5, 'V');
romanize(arabic, 1, 'I');
putchar('\n');
}
/* Print the character c as many times as here are j's in the number i,then return i minus the j's.*/
romanize(i,j,c)
char c;
int i,j;
{
while(i>=j)
{
putchar(c);
i=i-j;
}
return(i);
}
12/28/2008
helicopter defination
12/19/2008
How to do Research[zt]
MASSACHUSETTS INSTITUTE OF TECHNOLOGY
ARTIFICIAL INTELLIGENCE LABORATORY
AI Working Paper 316 October, 1988
How to do Research
At the MIT AI Lab
by
a whole bunch of current, former, and honorary
MIT AI Lab graduate students
David Chapman, Editor
Version 1.3, September, 1988.
Abstract
This document presumptuously purports to explain how to do research . We give heuristics that
may be useful in picking up the specific skills needed for research (reading, writing, programming) and for understanding
and enjoying the process itself (methodology, topic and advisor selection, and emotional factors).
Copyright 1987, 1988 by the authors.
A.I. Laboratory Working Papers are produced for internal circulation, and may contain information that is, for
example, too preliminary or too detailed for formal publication. It is not intended that they should be considered
papers to which reference can be made in the literature.
Contents
1. Introduction
2. Reading AI
3. Getting connected
4. Learning other fields
5. Notebooks
6. Writing
7. Talks
8. Programming
9. Advisors
10. The thesis
11. Research methodology
12. Emotional factors
Endnote
What is this?
Who's it for?
How do I use it?
- Section 2 is about getting grounded in AI by reading. It points at the most important
journals and has some tips on how to read.
- Section 3 is about becoming a member of the AI community: getting connected
to a network of people who will keep you up to date on what's happening and what you need to read.
- Section 4 is about learning about fields related to AI. You'll want to
have a basic understanding of several of these and probably in-depth understanding of one or two.
- Section 5 is about keeping a research notebook.
- Section 6 is about writing papers and theses; about writing and using comments on drafts;
and about getting published.
- Section 7 is about giving research talks.
- Section 8 is about programming. AI programming may be different from the sorts
you're used to.
- Section 9 is about the most important choice of your graduate career, that of your
advisor. Different advisors have different styles; this section gives some heuristics for finding one who will
suit you. An advisor is a resource you need to know how to use; this section tells you how.
- Section 10 is about theses. Your thesis, or theses, will occupy most of your time
during most of your graduate student career. The section gives advice on choosing a topic and avoiding wasting
time.
- Section 11 is on research methodology. This section mostly hasn't been written
yet.
- Section 12 is perhaps the most important section: it's about emotional factors
in the process of research . It tells how to deal with failure, how to set goals, how to get unstuck, how to avoid
insecurity, maintain self-esteem, and have fun in the process.
This document is still in a state of development; we welcome contributions and comments. Some sections are very
incomplete. [Annotations in brackets and italics indicate some of the major incompletions.] We appreciate
contributions; send your ideas and comments to Zvona@ai.ai.mit.edu.
2. Reading AI
Many researchers spend more than half their time reading. You can learn a lot more quickly from other people's
work than from doing your own. This section talks about reading within AI; section 4
covers reading about other subjects.
The time to start reading is now. Once you start seriously working on your thesis you'll have less
time, and your reading will have to be more focused on the topic area. During your first two years, you'll mostly
be doing class work and getting up to speed on AI in general. For this it suffices to read textbooks and published
journal articles. (Later, you may read mostly drafts; see section 3.)
The amount of stuff you need to have read to have a solid grounding in the field may seem intimidating, but
since AI is still a small field, you can in a couple years read a substantial fraction of the significant papers
that have been published. What's a little tricky is figuring out which ones those are. There are some bibliographies
that are useful: for example, the syllabi of the graduate AI courses. The reading lists for the AI qualifying exams
at other universities---particularly Stanford---are also useful, and give you a less parochial outlook. If you
are interested in a specific subfield, go to a senior grad student in that subfield and ask him what are the ten
most important papers and see if he'll lend you copies to Xerox. Recently there have been appearing a lot of good
edited collections of papers from a subfield, published particularly by Morgan-Kauffman.
The AI lab has three internal publication series, the Working Papers, Memos, and Technical Reports, in increasing
order of formality. They are available on racks in the eighth floor play room. Go back through the last couple
years of them and snag copies of any that look remotely interesting. Besides the fact that a lot of them are significant
papers, it's politically very important to be current on what people in your lab are doing.
There's a whole bunch of journals about AI, and you could spend all your time reading them. Fortunately, only
a few are worth looking at. The principal journal for central-systems stuff is Artificial Intelligence,
also referred to as ``the Journal of Artificial Intelligence'', or ``AIJ''. Most of the really important papers
in AI eventually make it into AIJ, so it's worth scanning through back issues every year or so; but a lot of what
it prints is really boring. Computational Intelligence is a new competitor that's worth checking out.
Cognitive Science also prints a fair number of significant AI papers. Machine Learning is the
main source on what it says. IEEE PAMI is probably the best established vision journal; two or three interesting
papers per issue. The International Journal of Computer Vision (IJCV) is new and so far has been interesting.
Papers in Robotics Research are mostly on dynamics; sometimes it also has a landmark AIish robotics paper.
IEEE Robotics and Automation has occasional good papers.
It's worth going to your computer science library ( MIT 's is on the first floor of Tech Square) every year
or so and flipping through the last year's worth of AI technical reports from other universities and reading the
ones that look interesting.
Reading papers is a skill that takes practice. You can't afford to read in full all the papers that come to
you. There are three phases to reading one. The first is to see if there's anything of interest in it at all. AI
papers have abstracts, which are supposed to tell you what's in them, but frequently don't; so you have to jump
about, reading a bit here or there, to find out what the authors actually did. The table of contents, conclusion
section, and introduction are good places to look. If all else fails, you may have to actually flip through the
whole thing. Once you've figured out what in general the paper is about and what the claimed contribution is, you
can decide whether or not to go on to the second phase, which is to find the part of the paper that has the good
stuff. Most fifteen page papers could profitably be rewritten as one-page papers; you need to look for the page
that has the exciting stuff. Often this is hidden somewhere unlikely. What the author finds interesting about his
work may not be interesting to you, and vice versa. Finally, you may go back and read the whole paper through if
it seems worthwhile.
Read with a question in mind. ``How can I use this?'' ``Does this really do what the author claims?'' ``What
if...?'' Understanding what result has been presented is not the same as understanding the paper. Most of the understanding
is in figuring out the motivations, the choices the authors made (many of them implicit), whether the assumptions
and formalizations are realistic, what directions the work suggests, the problems lying just over the horizon,
the patterns of difficulty that keep coming up in the author's research program, the political points the paper
may be aimed at, and so forth.
It's a good idea to tie your reading and programming together. If you are interested in an area and read a few
papers about it, try implementing toy versions of the programs being described. This gives you a more concrete
understanding.
Most AI labs are sadly inbred and insular; people often mostly read and cite work done only at their own school.
Other institutions have different ways of thinking about problems, and it is worth reading, taking seriously, and
referencing their work, even if you think you know what's wrong with them.
Often someone will hand you a book or paper and exclaim that you should read it because it's (a) the most brilliant
thing ever written and/or (b) precisely applicable to your own research . Usually when you actually read it, you
will find it not particularly brilliant and only vaguely applicable. This can be perplexing. ``Is there something
wrong with me? Am I missing something?'' The truth, most often, is that reading the book or paper in question has,
more or less by chance, made your friend think something useful about your research topic by catalyzing a line
of thought that was already forming in their head.
3. Getting connected
You, too, can be a cool people. Here are some heuristics for getting connected:
- There's a bunch of electronic mailing lists that discuss AI subfields like connectionism or vision. Get yourself
on the ones that seem interesting.
- Whenever you talk about an idea you've had with someone who knows the field, they are likely not to give an
evaluation of your idea, but to say, ``Have you read X?'' Not a test question, but a suggestion about something
to read that will probably be relevant. If you haven't read X, get the full reference from your interlocutor, or
better yet, ask to borrow and Xerox his copy.
- When you read a paper that excites you, make five copies and give them to people you think will be interested
in it. They'll probably return the favor.
- The lab has a number of on-going informal paper discussion groups on various subfields. These meet every week
or two to discuss a paper that everyone has read.
- Some people don't mind if you read their desks. That is, read the papers that they intend to read soon are
heaped there and turn over pretty regularly. You can look over them and see if there's anything that looks interesting.
Be sure to ask before doing this; some people do mind. Try people who seem friendly and connected.
- Similarly, some people don't mind your browsing their filing cabinets. There are people in the lab who are
into scholarship and whose cabinets are quite comprehensive. This is often a faster and more reliable way to find
papers than using the school library.
- Whenever you write something yourself, distribute copies of a draft of it to people who are likely to be interested.
(This has a potential problem: plagiarism is rare in AI, but it does happen. You can put something like ``Please
do not photocopy or quote'' on the front page as a partial prophylactic.) Most people don't read most of the papers
they're given, so don't take it personally when only a few of the copies you distribute come back with comments
on them. If you go through several drafts---which for a journal article you should---few readers will read more
than one of them. Your advisor is expected to be an exception.
- When you finish a paper, send copies to everyone you think might be interested. Don't assume they'll read it
in the journal or proceedings spontaneously. Internal publication series (memos and technical reports) are even
less likely to be read.
- The more different people you can get connected with, the better. Try to swap papers with people from different
research groups, different AI labs, different academic fields. Make yourself the bridge between two groups of interesting
people working on related problems who aren't talking to each other and suddenly reams of interesting papers will
flow across your desk.
- When a paper cites something that looks interesting, make a note of it. Keep a log of interesting references.
Go to the library every once in a while and look the lot of them up. You can intensively work backward through
a ``reference graph'' of citations when you are hot on the trail of an interesting topic. A reference graph is
a web of citations: paper A cites papers B and C, B cites C and D, C cites D, and so on. Papers that you notice
cited frequently are always worth reading. Reference graphs have weird properties. One is that often there are
two groups of people working on the same topic who don't know about each other. You may find yourself close to
closure on searching a graph and suddenly find your way into another whole section. This happens when there are
different schools or approaches. It's very valuable to understand as many approaches as possible---often more so
than understanding one approach in greater depth.
- Hang out. Talk to people. Tell them what you're up to and ask what they're doing. (If you're shy about talking
to other students about your ideas, say because you feel you haven't got any, then try talking to them about the
really good---or unbelievably foolish---stuff you've been reading. This leads naturally into the topic of what
one might do next.) There's an informal lunch group that meets in the seventh floor playroom around noon every
day. People tend to work nights in our lab, and so go for dinner in loose groups. Invite yourself along.
- If you interact with outsiders much---giving demos or going to conferences---get a business card. Make it easy
to remember your name.
- At some point you'll start going to scientific conferences. When you do, you will discover fact that almost
all the papers presented at any conference are boring or silly. (There are interesting reasons for this that aren't
relevant here.) Why go to them then? To meet people in the world outside your lab. Outside people can spread the
news about your work, invite you to give talks, tell you about the atmosphere and personalities at a site, introduce
you to people, help you find a summer job, and so forth. How to meet people? Walk up to someone whose paper you've
liked, say ``I really liked your paper'', and ask a question.
- Get summer jobs away at other labs. This gives you a whole new pool of people to get connected with who probably
have a different way of looking at things. One good way to get summer jobs at other labs is to ask senior grad
students how. They're likely to have been places that you'd want to go and can probably help you make the right
connections.
4. Learning other fields
- Take a graduate course. This is solidest, but is often not an efficient way to go about it.
- Read a textbook. Not a bad approach, but textbooks are usually out of date, and generally have a high ratio
of words to content.
- Find out what the best journal in the field is, maybe by talking to someone who knows about it. Then skim the
last few years worth and follow the reference trees. This is usually the fastest way to get a feel of what is happening,
but can give you a somewhat warped view.
- Find out who's most famous in the field and read their books.
- Hang out with grad students in the field.
- Go to talks. You can find announcements for them on departmental bulletin boards.
- Check out departments other than MIT 's. MIT will give you a very skewed view of, for example, linguistics
or psychology. Compare the Harvard course catalog. Drop by the graduate office over there, read the bulletin boards,
pick up any free literature.
Now for the subjects related to AI you should know about.
- Computer science is the technology we work with. The introductory graduate courses you are required to take
will almost certainly not give you an adequate understanding of it, so you'll have to learn a fair amount by reading
beyond them. All the areas of computer science---theory, architectures, systems, languages, etc.---are relevant.
- Mathematics is probably the next most important thing to know. It's critical to work in vision and robotics;
for central-systems work it usually isn't directly relevant, but it teaches you useful ways of thinking. You need
to be able to read theorems, and an ability to prove them will impress most people in the field. Very few people
can learn math on their own; you need a gun at your head in the form of a course, and you need to do the problem
sets, so being a listener is not enough. Take as much math as you can early, while you still can; other fields
are more easily picked up later.
- Cognitive psychology mostly shares a worldview with AI, but practitioners have rather different goals and do
experiments instead of writing programs. Everyone needs to know something about this stuff. Molly Potter teaches
a good graduate intro course at MIT .
- Developmental psychology is vital if you are going to do learning work. It's also more generally useful, in
that it gives you some idea about which things should be hard and easy for a human-level intelligence to do. It
also suggests models for cognitive architecture. For example, work on child language acquisition puts substantial
constraints on linguistic processing theories. Susan Carey teaches a good graduate intro course at MIT .
- ``Softer'' sorts of psychology like psychoanalysis and social psychology have affected AI less, but have significant
potential. They give you very different ways of thinking about what people are. Social ``sciences'' like sociology
and anthropology can serve a similar role; it's useful to have a lot of perspectives. You're on your own for learning
this stuff. Unfortunately, it's hard to sort out what's good from bad in these fields without a connection to a
competent insider. Check out Harvard: it's easy for MIT students to cross-register for Harvard classes.
- Neuroscience tells us about human computational hardware. With the recent rise of computational neuroscience
and connectionism, it's had a lot of influence on AI. MIT 's Brain and Behavioral Sciences department offers good
courses on vision (Hildreth, Poggio, Richards, Ullman) motor control (Hollerbach, Bizzi) and general neuroscience
(9.015, taught by a team of experts).
- Linguistics is vital if you are going to do natural language work. Besides that, it exposes a lot of constraint
on cognition in general. Linguistics at MIT is dominated by the Chomsky school. You may or may not find this to
your liking. Check out George Lakoff's recent book Women, Fire, and Dangerous Things as an example of
an alternative research program.
- Engineering, especially electrical engineering, has been taken as a domain by a lot of AI research , especially
at MIT . No accident; our lab puts a lot of stock in building programs that clearly do something, like
analyzing a circuit. Knowing EE is also useful when it comes time to build a custom chip or debug the power supply
on your Lisp machine.
- Physics can be a powerful influence for people interested in perception and robotics.
- Philosophy is the hidden framework in which all AI is done. Most work in AI takes implicit philosophical positions
without knowing it. It's better to know what your positions are. Learning philosophy also teaches you to make and
follow certain sorts of arguments that are used in a lot of AI papers. Philosophy can be divided up along at least
two orthogonal axes. Philosophy is usually philosophy of something; philosophy of mind and language are
most relevant to AI. Then there are schools. Very broadly, there are two very different superschools: analytic
and Continental philosophy. Analytic philosophy of mind for the most part shares a world view with most
people in AI. Continental philosophy has a very different way of seeing which takes some getting used to. It has
been used by Dreyfus to argue that AI is impossible. More recently, a few researchers have seen it as compatible
with AI and as providing an alternative approach to the problem. Philosophy at MIT is of the analytical sort, and
of a school that has been heavily influenced by Chomsky's work in linguistics.
5. Notebooks
Read back over your notebook periodically. Some people make a monthly summary for easy reference.
6. Writing
There's a lot of reasons to write.
- You are required to write one or two theses during your graduate student career: a PhD and maybe an MS, depending
on your department.
- Writing a lot more than that gives you practice.
- Academia runs on publish-or-perish. In most fields and schools, this starts in earnest when you become a professor,
but most graduate students in our lab publish before they graduate. Publishing and distributing papers is good
politics and good publicity.
- Writing down your ideas is the best way to debug them. Usually you will find that what seemed perfectly clear
in your head is in fact an incoherent mess on paper.
- If your work is to benefit anyone other than yourself, you must communicate it. This is a basic responsibility
of research . If you write well more people will read your work!
- AI is too hard to do by yourself. You need constant feedback from other people. Comments on your papers are
one of the most important forms of that.
Anything worth doing is worth doing well.
- Read books about how to write. Strunk and White's Elements of Style gives the basic dos and don'ts.
Claire Cook's The MLA's Line By Line (Houghton Mifflin) is about editing at the sentence level. Jacques
Barzun's Simple and Direct: A Rhetoric for Writers (Harper and Row, 1985) is about composition.
- When writing a paper, read books that are well-written, thinking in background mode about the syntactic mechanics.
You'll find yourself absorbing the author's style.
- Learning to write well requires doing a lot of it, over a period of years, and getting and taking seriously
criticism of what you've written. There's no way to get dramatically better at it quickly.
- Writing is sometimes painful, and it can seem a distraction from doing the ``real'' work. But as you get better
at it, it goes faster, and if you approach it as a craft, you can get a lot of enjoyment out of the process for
its own sake.
- You will certainly suffer from writer's block at some point. Writer's block has many sources and no sure cure.
Perfectionism can lead to writer's block: whatever you start to write seems not good enough. Realize that writing
is a debugging process. Write something sloppy first and go back and fix it up. Starting sloppy gets the ideas
out and gets you into the flow. If you ``can't'' write text, write an outline. Make it more and more detailed until
it's easy to write the subsubsubsections. If you find it really hard to be sloppy, try turning the contrast knob
on your terminal all the way down so you can't see what you are writing. Type whatever comes into your head, even
if it seems like garbage. After you've got a lot of text out, turn the knob back up and edit what you've written
into something sensible.
- Perfectionism can also lead to endless repolishing of a perfectly adequate paper. This is a waste of time.
(It can also be a way of semideliberately avoiding doing research .) Think of the paper you are writing as one
statement in a conversation you are having with other people in the field. In a conversation not everything goes
perfectly; few expect that what they say in a single utterance will be the whole story or last word in the interchange.
- Writing letters is good practice. Most technical papers would be improved if the style was more like a letter
to a friend. Keeping a diary is also a way to practice writing (and lets you be more stylistically experimental
than technical papers). Both practices have other substantial benefits.
- It's a common trap to spend more time hacking the formatter macrology than the content. Avoid this. LaTeX is
imperfect, but it has most of the macrology you want. If that's not enough, you can probably borrow code from someone
else who has wanted to do the same thing. Most sites (including MIT ) maintain a library of locally-written extensions.
- Know what you want to say. This is the hardest and most important factor in writing clearly. If you write something
clumsy and can't seem to fix it, probably you aren't sure what you really want to say. Once you know what to say,
just say it.
- Make it easy for the reader to find out what you've done. Put the sexy stuff up front, at all levels of organization
from paragraph up to the whole paper. Carefully craft the abstract. Be sure it tells what your good idea is. Be
sure you yourself know what it is! Then figure out how to say it in a few sentences. Too many abstracts tell what
the paper is generally about and promise an idea without saying what it is.
- Don't ``sell'' what you've done with big words or claims. Your readers are good people; honesty and self-respect
suffice. Contrariwise, don't apologize for or cut down your own work.
- Often you'll write a clause or sentence or paragraph that you know is bad, but you won't be able to find a
way to fix it. This happens because you've worked yourself into a corner and no local choice can get you out. You
have to back out and rewrite the whole passage. This happens less with practice.
- Make sure your paper has an idea in it. If your program solves problem X in 10 ms, tell the reader why
it's so fast. Don't just explain how your system is built and what it does, also explain why it works and
why it's interesting.
- Write for people, not machines. It's not enough that your argument be correct, it has to be easy to follow.
Don't rely on the reader to make any but the most obvious deductions. That you explained how the frobnitz worked
in a footnote on page seven is not a justification when the reader gets confused by your introducing it without
further explanation on page twenty-three. Formal papers are particularly hard to write clearly. Do not
imitate math texts; their standard of elegance is to say as little as possible, and so to make the reader's job
as hard as possible. This is not appropriate for AI.
- After you have written a paper, delete the first paragraph or the first few sentences. You'll probably find
that they were content-free generalities, and that a much better introductory sentence can be found at the end
of the first paragraph of the beginning of the second.
Writing useful comments on a paper is an art.
- To write really useful comments, you need to read the paper twice, once to get the ideas, and the second time
to mark up the presentation.
- If someone is making the same mistake over and over, don't just mark it over and over. Try to figure out what
the pattern is, why the person is doing it, and what they can do about it. Then explain this explicitly at length
on the front page and/or in person.
- The author, when incorporating your comments, will follow the line of least resistance, fixing only one word
if possible, or if not then one phrase, or if not then one sentence. If some clumsiness in their text means that
they have to back up to the paragraph level, or that they have to rethink the central theme of a whole section,
or that the overall organization of the paper is wrong, say this in big letters so they can't ignore it.
- Don't write destructive criticism like ``garbage'' on a paper. This contributes nothing to the author. Take
the time to provide constructive suggestions. It's useful to think about how you would react to criticism of your
own paper when providing it for others.
- Make sure it is readable. Papers are rejected because they are incomprehensible or ill-organized as often as
because they don't have anything to say.
- Circulate drafts for a while before sending it in to the journal. Get and incorporate comments. Resist the
temptation to hurry a result into publication; there isn't much competition in AI, and publication delays will
outweigh draft-commenting delays anyway.
- Read some back issues of the journal or conference you are sub mit ting to to make sure that the style and
content of your paper are appropriate to it.
- Most publications have an ``information for authors,'' a one page summary of what they want. Read it.
- The major conferences choose prize papers on the basis of excellence both of content and presentation from
among those accepted. Read them.
- It's often appropriate to send a short, early report on a piece of work to a conference and then a longer,
final version to a journal.
- Papers get rejected---don't get dejected.
- The reviewing process differs greatly between journals and conferences. To get quick turn-around time, conferences
must review quickly. There is no time for contemplation or for interaction. If you get bounced, you lose. But with
a journal, you can often argue with the editor, and with the referee through the editor.
- Referees should be helpful. If you get an obnoxious referee report, you should complain to the program chair
or editor. Don't expect much feedback from conference referee reports. But from journals, you can often get excellent
suggestions. You don't have to do all of them, but if you don't you should explain why, and realize that it may
take further negotiation. In any case, no matter which side of the reviewing process you are on, be polite. You
are going to be working with the people whose papers you review as part of a community for the rest of your professional
life.
- MIT AI Lab Memos are generally of publishable or near-publishable quality. De facto, Technical Reports are
almost always revised versions of theses. Working Papers can be and often are very informal. They are a good way
to get a lot of copies made of a paper you'd want to send to a bunch of colleagues anyway. You publish one of these
internal documents by getting a form from the Publications Office (just off the eighth floor playroom) and getting
two faculty members to sign it.
7. Talks
Some ways to learn and practice speaking:
- Patrick Winston has a great short paper on how to give talks. He also gives a lecture based on it every January
which simultaneously illustrates and describes his heuristics.
- If you feel you are a bad speaker, or if you want to be a good one, take a course on public speaking. An intro
acting class is also useful.
- If your advisor's students have regular research meetings, volunteer to talk about your stuff.
- The MIT AI lab has a series of semiformal talks known as the Revolving Seminar. Volunteer to give one if you
have something worth turning into an AI memo or a conference paper.
- Learn enough about the Lab's various robotics projects so when your relatives or friends from out of town come
you can give them a tour and a little 60 second talk in front of each robot about it. (Your relatives and non-AI
friends will usually love this; they won't be so impressed by the intricacies of your TMS.)
- Since revising a talk is generally much easier than revising a paper, some people find that this is a good
way to find the right way to express their ideas. (Mike Brady once remarked that all of his best papers started
out as talks.)
- Practice the talk in an empty room, preferably the one in which you will deliver it. Studies of context effects
in memory suggest that you will remember what you are going to say better if you have practiced in the room you
deliver in. Practice runs let you debug the mechanics of a talk: what to say during each slide, moving overlays
around smoothly, keeping notes and slides synchronized, estimating the length of the entire talk. The less time
you spend fumbling around with your equipment, the more time you have left to communicate.
- Practicing with a mirror or tape or video recorder is another alternative. The lab has all three. They might
help debug your voice and body language, too.
- For a relatively formal talk---especially your Oral Exam---do a practice run for half a dozen friends and have
them critique it.
- Watch the way other people give talks. There are a lot of talks given by people visiting MIT . Attending such
talks is a good way to get a taste of areas you aren't so familiar with, and if the talk turns out to be boring,
you can amuse yourself by analyzing what the speaker is doing wrong. (Going to a seminar is also a way to cure
the mid-afternoon munchies...)
- Cornering one of your friends and trying to explain your most recent brainstorm to him is a good way both to
improve your communication skills, and to debug your ideas.
Some key things to remember in planning and delivering a talk:
- You can only present one ``idea'' or ``theme'' in a talk. In a 20 minute or shorter talk the idea must be crystal
clear and cannot have complicated associated baggage. In a 30 or 45 minute talk the idea can require some buildup
or background. In an hour talk the idea can be presented in context, and some of the uglies can be revealed. Talks
should almost never go on for more than an hour (though they often do).
- The people in the audience want to be there; they want to learn what you have to say. They aren't just waiting
for an excuse to attack you, and will feel more comfortable if you are relaxed.
- Take at least one minute per overhead. Some people vary in their rate, but a common bug is to think that you
can do it faster than that and still be clear. You can't.
- Don't try to cram everything you know into a talk. You need to touch on just the high points of your ideas,
leaving out the details.
- AI talks are usually accompanied by overhead transparencies, otherwise known as ``slides''. They should be
kept simple. Use few words and big type. If you can't easily read your slides when you are standing and they are
on the floor, they're too small. Draw pictures whenever possible. Don't stand in front of the screen. Don't point
at the overhead if it is possible to point directly at the screen. If you must point at the overhead, don't actually
touch the transparency since you will make it jerk around.
8. Programming
- a truth maintenance system,
- a means-ends planner,
- a unification rule system,
- a few interpreters of various flavors,
- an optimizing compiler with flow analysis,
- a frame system with inheritance,
- several search methods,
- an explanation-based learner,
9. Advisors
At MIT there are two kinds of advisors, academic advisors and thesis advisors.
Different advisors have very different styles. Here are some parameters to consider.
- How much direction do you want? Some advisors will hand you a well-defined thesis-sized problem, explain an
approach, and tell you to get to work on it. If you get stuck, they'll tell you how to proceed. Other advisors
are hands-off; they may give you no help in choosing a topic at all, but can be extremely useful to bounce ideas
off of once you find one. You need to think about whether you work better independently or with structure.
- How much contact do you want? Some advisors will meet with you weekly for a report on your progress. They may
suggest papers to read and give you exercises and practice projects to work. Others you may not talk to more than
twice a term.
- How much pressure do you want? Some advisors will exert more than others.
- How much emotional support do you want? Some can give more than others.
- How seriously do you want to take your advisor? Most advisors will suggest thesis topics fairly regularly.
Some can be depended on to produce suggestions that, if carried out diligently, will almost certainly produce an
acceptable, if perhaps not very exciting thesis. Others throw out dozens of off-the-wall ideas, most of which will
go nowhere, but one in ten of which, if pursued with vision, can result in ground-breaking work. If you choose
such an advisor, you have to act as the filter.
- What kind of research group does the advisor provide? Some professors create an environment in which all their
students work together a lot, even if they are not all working on the same project. Many professors get together
with their all their students for weekly or biweekly meetings. Will that be useful to you? Are the advisor's students
people you get along with? Some students find that they construct important working relationships with students
from other research groups instead.
- Do you want to be working on a part of a larger project? Some professors divide up a big system to be built
into pieces and assign pieces to individual students. That gives you a group of people that you can talk to about
the problem as a whole.
- Do you want cosupervision? Some thesis projects integrate several areas of AI, and you may want to form strong
working relationships with two or more professors. Officially, you'll have just one thesis supervisor, but that
doesn't have to reflect reality.
- Is the advisor willing to supervise a thesis on a topic outside his main area of research ? Whether or not
you can work with him or her may be more important to both of you than what you are working on. Robotics faculty
at MIT have supervised theses on qualitative physics and cognitive modeling; faculty in reasoning have supervised
vision theses. But some faculty members are only willing to supervise theses on their own area of interest. This
is often true of junior faculty members who are trying to build tenure cases; your work counts toward that.
- Will the advisor fight the system for you? Some advisors can keep the department and other hostile entities
off your back. The system works against certain sorts of students (notably women and eccentrics), so this can be
very important.
- Is the advisor willing and able to promote your work at conferences and the like? This is part of his or her
job, and can make a big difference for your career.
- Read the Lab's research summary. It gives a page or so description of what each of the faculty and many of
the graduate students are up to.
- Read recent papers of any faculty member whose work seems at all interesting.
- Talk to as many faculty members as you can during your first semester. Try to get a feel for what they are
like, what they are interested in, and what their research and supervision styles are like.
- Talk to grad students of prospective advisors and ask what working for him or her is like. Make sure you talk
to more than one student who works with a particular advisor as each advisor has a large spectrum of working styles
and levels of success in interaction with his or her students. You could be misled either way by a single data
point. Talk to his or her first year advisees and his seventh year advisees too.
- Most or all faculty member's research group meetings are open to new grad students, and they are a very good
way of getting an idea of what working with them is like.
10. The thesis
Choosing a topic is one of the most difficult and important parts of thesis work.
- A good thesis topic will simultaneously express a personal vision and participate in a conversation with the
literature.
- Your topic must be one you are passionate about. Nothing less will keep you going. Your personal vision is
your reason for being a scientist, an image or principle or idea or goal you care deeply about. It can take many
forms. Maybe you want to build a computer you can talk to. Maybe you want to save the world from stupid uses of
computers. Maybe you want to demonstrate the unity of all things. Maybe you want to found colonies in space. A
vision is always something big. Your thesis can't achieve your vision, but it can point the way.
- At the same time, science is a conversation. An awful lot of good people have done their best and they're written
about it. They've accomplished a great deal and they've completely screwed up. They've had deep insights and they've
been unbelievably blind. They've been heros and cowards. And all of this at the same time. Your work will be manageable
and comprehensible if it is framed as a conversation with these others. It has to speak to their problems and their
questions, even if it's to explain what's wrong with them. A thesis topic that doesn't participate in a conversation
with the literature will be too big or too vague, or nobody will be able to understand it.
- The hardest part is figuring out how to cut your problem down to a solvable size while keeping it big enough
to be interesting. ``Solving AI breadth-first'' is a common disease; you'll find you need to continually narrow
your topic. Choosing a topic is a gradual process, not a discrete event, and will continue up to the moment you
declare the thesis finished. Actually solving the problem is often easy in comparison to figuring out what exactly
it is. If your vision is a fifty-year project, what's the logical ten-year subproject, and what's the logical one-year
subproject of that? If your vision is a vast structure, what's the component that gets most tellingly to its heart,
and what demonstration would get most tellingly to the heart of that component?
- An important parameter is how much risk you can tolerate. Often there is a trade-off between the splashiness
of the final product and the risk involved in producing it. This isn't always true, though, because AI has a high
ratio of unexplored ideas to researchers.
- An ideal thesis topic has a sort of telescoping organization. It has a central portion you are pretty sure
you can finish and that you and your advisor agree will meet the degree requirements. It should have various extensions
that are successively riskier and that will make the thesis more exciting if they pan out. Not every topic will
fit this criterion, but it's worth trying for.
- Some people find that working on several potential thesis projects at once allows them to finish the one that
works out and abandon the ones that fail. This decreases the risk. Others find that the substantial thrashing overhead
this engenders is too high, and choose a single topic before starting any work in earnest.
- You may only be interested in a particular subfield, in which case your thesis topic search is narrowed. You
may find, though, that there's no faculty member who can supervise a topic in that field whom you are comfortable
working with. You may also find that there doesn't seem to be a natural topic to work on in that field, whereas
you have good ideas about something else.
- Choosing a Master's topic can be harder than choosing the PhD topic, because it has to be done before you know
very much and before you've built much self-confidence.
- One parameter of PhD topic choice is whether to continue working in the same subfield as your Master's, perhaps
extending or building on that work, or to switch to another subfield. Staying in the same field simplifies things
and probably will take one to two years off the total time to graduation, especially if a PhD-sized topic becomes
obvious during the course of the Master's work. But it may leave you ``typecast'' as someone who does shape-from-shading
or circuit analysis; changing fields gives you breadth.
- Topics can be placed in a spectrum from flakey to cut-and-dried. Flakier theses open up new territory, explore
previously un research ed phenomena, or suggest heuristic solutions to problems that are known to be very hard
or are hard to characterize. Cut-and-dried theses rigorously solve well-characterized problems. Both are valuable;
where you situate yourself in this spectrum is a matter of personal style.
- The ``further work'' sections of papers are good sources of thesis topics.
- Whatever you do, it has to have not been done before. Also, it's not a good idea to work on something that
someone else is doing simultaneously. There's enough turf out there that there's no need for competition. On the
other hand, it's common to read someone else's paper and panic because it seems to solve your thesis problem. This
happens most when you're halfway through the process of making your topic specific and concrete. Typically the
resemblance is actually only superficial, so show the paper to some wise person who knows your work and ask them
what they think.
- Not all MIT AI Lab theses are about AI; some are hardware or programming language theses. This is OK.
11. Research methodology
[This section is weak. Please contribute!]
12. Emotional factors
- Setting your sights too high leads to paralysis. Work on a subproblem to get back into the flow.
- You can get into a positive feedback loop in which doubts about your ability to do the work eat away at your
enthusiasm so that in fact you can't get anything done. Realize that research ability is a learned skill, not innate
genius.
- If you find yourself seriously stuck, with nothing at all happening for a week or more, promise to work one
hour a day. After a few days of that, you'll probably find yourself back in the flow.
- It's hard to get started working in the morning, easy to keep going once you've started. Leave something easy
or fun unfinished in the evening that you can start with in the morning. Start the morning with real work---if
you start by reading your mail, you may never get to something more productive.
- Fear of failure can make work hard. If you find yourself inexplicably ``unable'' to get work done, ask whether
you are avoiding putting your ideas to the test. The prospect of discovering that your last several months of work
have been for naught may be what's stopping you. There's no way to avoid this; just realize that failure and wasted
work are part of the process.
- Read Alan Lakien's book How to Get Control of Your Time and Your Life, which is recommended even
by people who hate self-help books. It has invaluable techniques for getting yourself into productive
action.
Endnote
About this document ...
This document was generated using the LaTeX2HTML
translator Version 98.1p1 release (March 2nd, 1998)
Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
The command line arguments were:
latex2html mitAIResearch.tex.
The translation was initiated by Evangelos Milios on 1999-08-30