A few good computer science papers
These papers were recommnended by SWS faculty as both influential and
well-written. Take a look at them to see how they present their ideas.
Look at the abstracts, organization, and conclusions. See
how and where they present the related work. Look at how they
give examples, or present the intuition, before they give the technical
details. See how they present and discuss code, algorithms,
rules, or theorums.
The papers are orgnized by the general area of software systems
Program Verification
Symbolic Reasoning
Type Systems
Distributed Systems
Area: verification
Calysto: Scalable and
Precise Extended Static Checking
Domagoj Babic and Alan J. Hu
ICSE 2008
http://doi.acm.org/10.1145/1368088.1368118
Notes: In this
paper, look at the literature review, which clearly explains the hole in the
research that Calysto fills. Note that
at the end of section 1, there is one sentence that says what the rest of the
paper is about, but no section by section outline. See also the last paragraph of section 3,
which has a good explanation of future work.
Lazy
Abstraction
Thomas
Henzinger, Ranjit Jhala, Rupak Majumdar
POPL 2002
http://mtc.epfl.ch/~tah/Publications/lazy_abstraction.pdf
Notes: In the abstract, pervious work is given in
the first sentence. The rest of the
abstract is about the paper content, and provides good detail. The details of the paper start in section 2
with an example, which helps make the method of lazy abstraction more concrete.
Throughout the paper, look for the examples that are use to motivate the
intuitive idea.
An
Automata-Theoretic Approach to Automatic Program Verification
Moshe Vardi
and Pierre Wolper
LICS 1986
http://www.cs.rice.edu/~vardi/papers/lics86.pdf.gz
Notes: This paper was very influential in opening up a new
research area. The abstract is very concise. They clearly
state their research goals on the second page. In the same
paragraph, they dismiss tableu models and propose using propositional
temporal logic. They end the introduction with a summary of their
work - applying model checking to finite-state programs and then
probablistic programs. In general, they sketch their theories and
arguments, and leave fuller explanations to a longer paper. See
if you think they provide enough information to follow their argument.
Area: Symbolic Reasoning
Graph Based
Algorithms for Boolean Function Manipulation
Randal
Bryant
IEEE
Transactions on Computers 1986
http://www.cs.cmu.edu/~bryant/pubdir/ieeetc86.pdf
Notes: There are
3 paragraphs in the introduction before getting to the point of the
paper. The third paragraph clearly states a problem with previous
work (the problem with analyzing Boolean functions), that their work
helps address (their algorithm is more efficient). There is a short
literature review at the end of section 1. Also, their notation
conventions are given in the introduction. You can decide whether
or not you like this. In section 3, they start their discussion with
examples, which they graphically represent. They put some of the
technical details in an Appendix.
Area: Type Systems
Manifest
types, modules, and separate compilation
Xavier Leroy
POPL 1994
http://gallium.inria.fr/~xleroy/publi/manifest-types-popl.pdf
Notes: The general ideas are presented in section 2
before they are formalized in sections 3.
The first two paragraphs of section 4 explain the goal of the section,
which is to compare the expressiveness of the
variant of SML presented with the standard SML module system. As this
comparison is not straightforward, Leroy is explicit about the assumptions and
simplifications he makes. Look at the
related work section in the Conclusion, which is very brief.
From System F to Typed Assembly Language
Greg Morrisett, David Walker, Karl Crary, and Neal Glew
POPL 1998
http://www.eecs.harvard.edu/~greg/cs255sp2004/morrisett98tal.pdf
Notes: This is a good introduction to a variety of ideas in programming
languages. It also won the most influential POPL award at 10
years in 2008. The first sentence of the abstract is a very high-level overview of the
whole paper. There is no background information, and the abstract
works very well. The last sentence of the abstract is about impact or
utility. I like the way this paper does citations. Many CS papers just
give the number of the citation from the bibliography, which is very
hard to read in-line in the text, as the reference isn't transparent.
This paper gives authors' last names, which I find much easier to read
and more information. Of course, this takes space. The overview
section 1.1 has a paragraph about ideas and then a paragraph with the
layout of the paper. It also mentions the technical report and says
what extra information is in there. This seems like a good location to
say there's a technical report. The sections of the paper map very
clearly onto the categories in Figure 1, and each section is introduced
with a brief paragraph about where it is in the process, see the first
paragraph of section 4 for a nice example. This really helps the
reader make their way through the paper. Notice also how the syntax
tables get explained in-line in the text, for example the 4th paragraph
of section 5.1 which line by line comments on Figure 6. This is a
middle-ground between exhaustively explaining each rule and just
putting the rules in the figure and not discussing them. Think about
the advantages of each of these strategies and why this choice works
here.
Theorems for Free!
Philip Wadler
FPCA 1989
http://homepages.inf.ed.ac.uk/wadler/papers/free/free.ps
Notes: The frame model section is quite hard to understand, but
the earlier parts which explain the basic idea of free theorems and
give various examples are very clear. This is also a paper that's
frequently cited. The abtract is very short - is this
effective? In
terms of style, this paper shows the personality of the author.
It's
very engaging from the beginning, as he starts out with a parlour trick
example. But he also says that the point of the paper is to
explain
how the trick works so the reader isn't expected just to tag along with
an interesting example without knowing the point up front. This is a
very effective way to get the reader interested in reading more.
The
roadmap, or forward references, are integrated throughout the
introduction - see the paragraph beginning "the result that allows,"
which means that the roadmap can be integrated in with content.
Also,
the introduction gives some information about why theorem generation is
interesting, i.e. applications. Towards the end of the
introduction,
there's a paragraph on literature review, followed by the main
contribution, future work, and a more standard road map. The narrative
arc is from engaging anecdote to implications to a more traditional
organization of an introduction at the end which is a segue to the more
technical parts of the paper. One other note on style, the author likes
to address the readers, see for example section 2 "Cognoscenti will
recognize...," section 3.5 "You will immediately guess...," or section
3.7 "a little thought shows..." This is a conversational
style that
some readers find engaging and interesting. Others find it
off-putting, particularly when the author makes assumptions about what
the reader may or may not know. Think about how you feel about
this
style.
Area: Distributed Systems
Manageability,
Availability and Performance in Porcupine: A Highly Scalable Internet Mail
Service
Yasushi Saito, Brian Bershad, and Hank Levy.
17th ACM Symposium on Operating
Systems Principles, Dec 1999
http://www.ysaito.com/sosp.ps
Notes: The abstract is short; it starts with the key idea,
describes a few details, and ends with the key contribution.
There is no extraneous background/introductory information.
In general, this paper provides little background and goes
straight to the details - see if you like that.