As a Stanford-based research blog, it is very fitting that we will start our shared-tips project with Don Knuth. We will split his advice to (at least) three posts (too much wisdom for one). The first is on doing research.
I think the art of doing research consists largely of asking questions,
and sometimes answering them. Learn how to repeatedly pose miniquestions
that represent special cases of the big questions you are hoping to solve.
When you begin to explore some area, you take baby steps at first, building
intuition about that territory. Play with many small examples, trying to
get a complete understanding of particular parts of the general situation.
In that way you learn many properties that are true and many properties
that are false. That gives guidance about directions that are fruitful
versus directions to avoid.
Eventually your brain will have learned how to take larger and larger steps.
And shazam, you’ll be ready to take some giant steps and solve the big problem.
But don’t stop there! At this point you’ll be one of very few people in the
world who have ever understood your problem area so well. It will therefore
be your responsibility to discover what else is true, in the neighborhood
of that problem, using the same or similar methods to what your brain
can now envision. Take your results to their “natural boundary” (in a sense
analogous to the natural boundary where a function of a complex variable
ceases to be analytic).
My little book Surreal Numbers provides an authentic example of research
as it is happening. The characters in that story make false starts and
useful discoveries in exactly the same order as I myself made those false starts
and useful discoveries, when I first studied John Conway’s fascinating
axioms about number systems — his amazingly simple axioms that go
significantly beyond real-valued numbers.
(One of the characters in that book tends to succeed or fail by brute force
and patience; the other is more introspective, and able to see a bigger
picture. Both of them represent aspects of my own activities while doing
research. With that book I hoped to teach research skills “by osmosis”,
as readers observe a detailed case study.)
Surreal Numbers deals with a purely mathematical topic, not especially close
to computer science; it features algebra and logic, not algorithms.
When algorithms become part of the research, a beautiful new dimension
also comes into play: Algorithms can be implemented on computers!
I strongly recommend that you look for every opportunity to write programs
that carry out all or a part of whatever algorithms relate to your research.
In my experience the very act of writing such a program never fails to
deepen my understanding of the problem area.