Skip to content

Conquering the Fear of Reading Research Papers: Computer Science Research Papers for Non-Computer Scientists

August 26, 2009

Any non-mathematician, non-computer scientist layperson who has approached programming languages originally spawned in academia, such as Haskell or Scheme, has no doubt been intimidated by the academic rigor and density of many research papers on such subjects. Even such papers labeled “gentle,” as “A Gentle Introduction to Haskell” [1], can turn out to be less “gentle” than expected for those not familiar with the field.

Although I myself do have a background in computer science, as a patent translator, and not a mathematician, computer scientist, or programmer, I tend to approach such papers as more of an amateur programming language theory hobbiest and writer. Having tried to read a number of such papers, I have discovered that although many of them can be difficult to approach, some tend to be more approachable than others.

In particular, most recently, I was rather surprised to encounter a rather lengthy research paper on the history of one such programming language, Simula, which, although detailed, nevertheless turned out to be surprising approachable in not assuming advanced technical knowledge of the field (although it still required great attention to detail): “Compiling SIMULA: A Historical Study of Technological Genesis” [2].

This paper, rather than focusing solely on the technical development of the language, conducts a sociotechnical analysis of the broader historical background surrounding the Simula project. There are no formulas or even code snippets; instead, even though the paper is a research paper published in the IEEE Annals of the History of Computing, it is written as a history paper which just happens to be about the historical background of a programming language. Even more surprising, according to the endnote of the paper, the author, Jan Rune Holmevik, at the time of publication, was a graduate student in history at the University of Trondheim, Norway, and the paper itself “was written as part of [his] dissertation thesis in history Hovudfag [3] at the University of Trondheim” (page 36). In other words, this is a detailed research paper on a programming language, published in an academic journal, which does not assume any ability to program.

Until reading this paper, I had assumed that rigorous research papers on computer science published in academic journals were either written by mathematicians or computer scientists, or at least assumed a background in either mathematics or computer science to read. While this paper is definitely thoroughly researched, documented, and described, and approaches its topic in excruciating detail, it does not assume any background in either mathematics or computer science.

In other words, one need not necessarily be a mathematician or a computer scientist to write, much less read, a research paper on computer science; in fact, there are even some very thorough and detailed research papers on computer science published in academic journals which do not assume any background in either mathematics or computer science, such as this paper.

This discovery came as a revelation.

If it is possible to write a research paper without a background in either mathematics or computer science, then it must definitely also be possible to read at least some such papers. Furthermore, this is most likely not the only such research paper.

In fact, so far, I have encountered a number of computer science research papers which similarly require no or very little background in mathematics or computer science. Here is a list of some other interesting, yet approachable, research papers which (1) are either devoid of, or substantially devoid of, mathematical formulae; (2) are either devoid of, or substantially devoid of, code snippets; and (3) are either devoid of, or substantially devoid of, technical content assuming a background in mathematics or computer science:

i) “The Structure and Interpretation of the Computer Science Curriculum” [4]. By Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi.
Published in the Journal of Functional Programming in 2004, this paper discusses the motivation and design rationale for the book How to Design Programs [5] by comparision and contrast with the book Structure and Interpretation of Computer Programs [6].

ii) “Haskell: Batteries Included” [7]. By Duncan Coutts, Isaac Potoczny-Jones, and Don Stewart. Published in Proceedings of the first ACM SIGPLAN symposium on Haskell (2008).
This paper outlines the motivation for and structure of the Haskell Platform, a “Haskell for the masses” versioned packaging system of Haskell and included libraries. Although this paper does not specifically assume familiarity with mathematics or computer science, it does make use of such technical terminology as “libraries,” “packages,” “source code,” and “package description file.”

iii) “Teaching Programming Languages in a Post-Linnaean Age” [8]. By Shriram Krishnamurthi. Published in First SIGPLAN Workshop on Undergraduate Programming Language Curricula in 2008.
This paper claims that programming languages should be viewed as aggregations of features, rather than languages defined by taxonomies, and asserts that the term “paradigm” is ill-defined and should play no role in classifying programming languages. The book also addresses the issue of the split between textbooks that are “rich in mathematical rigor but low on accessibility, and those high on accessibility but lacking rigor (and, often, even wrong),” and offers an alternative.

iv) “The Early History of Smalltalk” [9]. By Alan C. Kay. Published in History of Programming Languages: The second ACM SIGPLAN conference on History of programming languages in 1993.
This paper describes the historical background behind the evolution of Smalltalk, a pure object-oriented language. It also, in part, describes the visit of Steve Jobs, Jeff Raskin, and others of then Apple, Inc. to the Xerox PARC laboratory, which led to the subsequent development of the Macintosh user interface, based on the Smalltalk user interface.

v) “Design Principles Behind Smalltalk” [10]. By Daniel H. H. Ingalls. Published in BYTE Magazine, August 1981.
This paper is a non-technical exposition of the design principles behind the Smalltalk-80 programming system. Illustrated with descriptive figures, the paper focuses not just on the programming language issues behind Smalltalk as a language of description, but also the user interface issues behind Smalltalk as a language of interaction. In particular, the paper describes how the research, in two- to four-year cycles, has paralleled the scientific method in repeatedly making an observation, formulating a theory, and making a prediction that can be tested, and summarizes key concepts as one- to two-sentence nutshell statements.

Lastly (but not leastly), the following paper, although containing a significant number of code snippets and assuming some background in computer science, is sufficiently interesting to be worthy of special mention; the first few sections of it can be safely read by a reader unfamiliar with the subject matter:

vi) “A History of Haskell: Being Lazy With Class” [11]. By Paul Hudak, John Hughes, Simon Peyton Jones, and Philip Wadler. Published in The Third ACM SIGPLAN History of Programming Languages Conference (HOPL-III) in 2007.
This paper provides a very interesting description of the motivation and historical background of the functional programming language Haskell. In particular, the paper describes the influence of a precursor to Haskell, Miranda (pages 3 to 4); mentions how Gerry Sussman and Guy L. Steele briefly considered the idea of introducing lazy evaluation in Scheme (page 3); provides a timeline of the development of Haskell (page 7), and then proceeds on to describe the syntax and semantics (pages 11 to 28), implementations and tools (pages 28 to 35), and applications and impact (pages 35 to 46). I sometimes return back to this paper when I feel frustrated with the dryness of many other papers on Haskell, since this is one of the few papers on the language which conveys a sense of the excitement surrounding the birth and early development of the language; many other papers on Haskell tend to focus solely on technical issues, without discussing the role of human beings in the context.

As pointed out in Holmevik [2], programming languages do not “evolve in a technical or scientific vacuum” (page 35). This point is often ignored in many other papers about Haskell; luckily, it is dealt with in depth in this paper.

In my experience, becoming accustomed to reading research papers is a gradual, rather than instantaneous, process: After reading a number of such papers, one tends to become used to reading them; to recognize that failure to understand the content is not necessarily the fault of the reader, but often that of a wolly exposition that either fails to describe prerequisites to the content, or does not describe them adequately; and that the best research papers are not necessarily those that describe the most difficult content, but those that offer the most readily understandable exposition of the material to the intended target audience.

One must understand that many research papers are not necessarily written to be easy to read, but to fulfill a specific need, such as a part of a requirement for a degree, and are hence qualitatively different from most textbooks, which tend to be written so as to be easy to understand for a broader audience. Hence, it is actually quite normal for a research paper of mediocre quality to be written in such a way as to expect the reader to fill in the prequisite content, which may be assumed but not stated. (Of course, the best research papers tend to fill in any prerequisite content.)

Often, the best researchers are not the best writers; many of them cannot understand why a topic which is of trivial difficulty to them can possibly be of non-trivial difficulty for another reader. A reader aware of this fact can often approach research papers with a better plan for mastering the content therein.

Lastly, if I might add a personal expectation, I tend to enjoy reading papers that acknowledge that a programming language is an artifact resulting from a complex interplay of many different human desires, needs, and expectations surrounding its birth, and does not develop in a social vacuum. Computers do not design programming languages; people do. Therefore, discussing a programming language as if it were merely a logical extension of prior developments in syntax and semantics ignores a significant factor in its evolution. I have found that the best research papers tend to be those that, while providing a rigorous treatment of the subject material, do not assume any prerequite material not normally possessed by the intended target audience; acknowledge that some readers may not be as intelligent as the author and may find certain points that seem trivial to the author to be non-trivial; provide sufficient elucidation to cope accordingly; and discuss the human issues surrounding the design and evolution of the language.

[1] Hudak, Paul. “A Gentle Introduction to Haskell, Version 98.” New York, NY: ACM SIGPLAN Notices 27:5 (1992): 1-52. <http://portal.acm.org/ft_gateway.cfm?id=130698&type=pdf&coll=GUIDE&dl=GUIDE&CFID=50053868&CFTOKEN=12610081>. An updated, free 1998 version is also available at <http://www.haskell.org/tutorial/>.

[2] Holmevik, Jan Rune. “Compiling SIMULA: A Historical Study of Technological Genesis.” Washington, D.C.: Annals of the History of Computing 16:4 (1994): 25-36. <http://www.idi.ntnu.no/grupper/su/publ/simula/holmevik-simula-ieeeannals94.pdf>.

[3] Regarding the term “Hovudfag,” Holmevik writes (page 36, footnote), “Hovudfag may be regarded as the Norwegian equivalent to a master’s degree, although it carries considerably more workload and normally takes two to three years to complete.”

[4] Felleisen, Matthias, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. “The Structure and Interpretation of the Computer Science Curriculum.” Cambridge: Journal of Functional Programming 14:4 (2004): 365-378. <http://www.cs.brown.edu/~sk/Publications/Papers/Published/fffk-htdp-vs-sicp-journal/>.

[5] Felleisen, Matthias, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. How to Design Programs. Cambridge, MA: The MIT Press, 2003. <http://www.htdp.org/>.

[6] Abelson, Harold and Gerald Jay Sussman with Julie Sussman. Structure and Interpretation of Computer Programs, Second Edition. Cambridge, MA: The MIT Press and New York: McGraw-Hill, 1996. <http://mitpress.mit.edu/sicp/full-text/book/book.html>.

[7] Coutts, Duncan, Isaac Potoczny-Jones, and Don Stewart. “Haskell: Batteries Included.” Victoria, BC, Canada: Proceedings of the first ACM SIGPLAN symposium on Haskell (2008): 125-126.<http://www.cse.unsw.edu.au/~dons/papers/haskell31-coutts.pdf>.

[8] Krishnamurthi, Shriram. “Teaching Programming Languages in a Post-Linnaean Age.” Cambridge, MA: First SIGPLAN Workshop on Undergraduate Programming Language Curricula (2008): 81-83. <http://www.cs.brown.edu/~sk/Publications/Papers/Published/sk-teach-pl-post-linnaean/>.

[9] Kay, Alan C. “The Early History of Smalltalk.” Cambridge, Massachusetts: History of Programming Languages: The second ACM SIGPLAN conference on History of programming languages (1993): 69-95. <http://portal.acm.org/citation.cfm?id=154766.155364&coll=GUIDE&dl=GUIDE&CFID=45415434&CFTOKEN=84716013>. Also available at <http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html>.

[10] Ingalls, Daniel H. H. “Design Principles Behind Smalltalk.” BYTE Magazine, August 1981. <http://www.fit.vutbr.cz/study/courses/OMP/public/software/sqcdrom2/Documents/DesignPrinciples/DesignPrinciples.html>.

[11] Hudak, Paul, John Hughes, Simon Peyton Jones, and Philip Wadler. “A History of Haskell: Being Lazy With Class.” San Diego, CA: The Third ACM SIGPLAN History of Programming Languages Conference (HOPL-III) (2007): 12-1 – 12-55, 2007. <http://research.microsoft.com/en-us/um/people/simonpj/papers/history-of-haskell/history.pdf>.

About these ads
7 Comments
  1. “a programming language is an artifact resulting from a complex interplay of many different”

    Any time humans are involved, you are virtually guaranteed of this.

    • >“a programming language is an artifact resulting from a complex interplay of many different”
      >
      >Any time humans are involved, you are virtually guaranteed of this.

      Indeed. The problem is that many writers of research papers either do not realize this, or seem not to consider it significant.

  2. The HOPL papers on Haskell and C++ along with the R*RS mailing lists + comp.lang.scheme all serve as good references for examples of that interplay.

  3. Ricardo P. Salvador permalink

    Hi Benjamin!

    I search the Squeak plugin for Firefox too and I receive this link from Antonio Moreno (Squeakpolis):

    http://squeak.educarex.es/Squeakpolis/uploads/48/SqueakPluginInstaller.exe

    I seems not to work but I am trying continuously.

    I hope it work in your context!

    Ricardo.

    • That’s not the one that I use. I am very particular about the Squeak image that I use, and am very careful not to overwrite it, since each image saves the entire state of the environment.

      Try the installation file for “Dec 08, 2005,” available from the “Internet Archive Wayback Machine,” instead (and be sure to create a copy of the installed image immediately and use that copy instead of the original, lest you overwrite it):

      Internet Archive Wayback Machine (choose the installation file for “Dec 08, 2005″):
      http://web.archive.org/web/*/http://www.squeakland.org/installers/SqueakPluginInstaller.exe

      Please let me know if it works.

    • Incidentally, after some additional research, I discovered that the following page seems to list a cached directory of all previous versions of the Squeak Web site by date (beyond six months ago):

      Internet Archive Wayback Machine
      http://web.archive.org/web/*/http://www.squeakland.org/

      Furthermore, from the above URL, it is then possible to obtain a particular version of Squeak for a particular OS by the following procedure:

      0) If you get frustrated with the following process, don’t care about the list of installers, and just want to download a particular installer for the Squeak version of “Dec 08, 2005″ (my favorite version) directly, here are the URL’s for the direct downloads of the Squeak Plugin installers for that version of Squeak for Windows and Max OS X 10.x:

      Windows installer for Squeak version of “Dec 08, 2005″:
      http://web.archive.org/web/20051208045446/http://www.squeakland.org/installers/SqueakPluginInstaller.exe

      Max OS X 10.x installer for Squeak version of “Dec 08, 2005″:
      http://web.archive.org/web/20051208045446/http://squeakland.org/installers/Squeakland.10.x.x.dmg

      Be forewarned! If you use this shortcut, you may get your desired installer immediately, but you will not learn anything about how to use the Internet Archive Wayback Machine. Please read the following instructions to learn how to use the Internet Archive Wayback Machine for downloading other versions of Squeak for other OS’s.

      1) Click on a date (e.g., “Dec 08, 2005″). This brings up the cached Squeak home page for that date; e.g., the page pointed to by the URL “http://web.archive.org/web/20051208045446/http://squeakland.org/index.html.”

      2) Sometimes, it is possible to navigate directly to the cached download page for the cached version of the home page by clicking directly on the “Download Squeak” link. In this case, the download page is displayed (although the download icon detected for your OS appears to be missing from the left column, sometimes it is actually just a broken icon with a working link; in that case, hovering the mouse pointer to the left of a download description on a broken icon will change the shape of the mouse pointer and display the hidden link in the bottom-left corner of the browser; clicking the mouse on the hidden link will then download the actual cached installer; otherwise, if the icon is completely missing, then clicking on the hyperlinked text for your OS on the download page (e.g., “Max OS X 10.x”) should work; sometimes, the icon may not work, and you may need to download the installer by clicking on the hyperlinked text, instead; e.g., on “Download Squeak” (for Windows) or “Max OS X 10.x” (for Mac OS X 10.x.y)).

      Sometimes, however, the links on the home page for that date point to cached addresses for that date which have not been redirected to the cached Web pages; in that case, in order then to proceed to a cached Web page for that date (as opposed to a possibly changed current page at the same address for the present date), it is then necessary to rewrite the URL for the link on the cached home page to point to the link at the cached version of the linked page.

      For example, if the link has not been redirected properly, then in order to proceed to the cached version of the Web page for “Download Squeak” from the cached version of the Squeak home page, first, click on the link to “Download Squeak.” This leads to “http://www.squeakland.org/plugin/installers/win-std.html”, which results in the following “404 Not Found” error:

      > Not Found
      >
      > The requested URL /plugin/installers/win-std.html was not found on this server.
      > Apache/2.0.52 (Red Hat) DAV/2 PHP/5.1.4 Resin/3.0.8 Server at http://www.squeakland.org Port 80

      However, it is still possible to arrive at the cached version of the download page for “Dec 08, 2005″ by prepending the URL for the Wayback redirect in front of the previous URL. That is, copy the “http://web.archive.org/web/20051208045446/” portion of the cached “http://web.archive.org/web/20051208045446/http://squeakland.org/index.html” URL for the home page, and paste it in front of the “http://www.squeakland.org/plugin/installers/win-std.html” URL that resulted in the “404 Not Found” error, resulting in the following adjusted URL:

      http://web.archive.org/web/20051208045446/www.squeakland.org/plugin/installers/win-std.html (if you use Windows)
      or
      http://web.archive.org/web/20051208045446/www.squeakland.org/plugin/installers/mac-x-std.html (if you use Mac OS X 10.x.y)

      (Sometimes repeated attempts may be necessary for this process to work, since the Internet Archive Wayback Machine is sometimes flaky. However, this procedure will eventually work if repeated from the beginning.)

      Voila! The cached download page! However, at first, the download icon detected for your OS appears to be missing from the left column. Actually, sometimes it is actually just a broken icon with a working link; in that case, hovering the mouse pointer to the left of a download description on a broken icon will change the shape of the mouse pointer and display the hidden link in the bottom-left corner of the browser; clicking the mouse on the hidden link will then download the actual cached installer; otherwise, if the icon is completely missing, then clicking on the hyperlinked text for your OS on the download page (e.g., “Max OS X 10.x”) should work; sometimes, the icon may not work, and you may need to download the installer by clicking on the hyperlinked text, instead; e.g., on “Download Squeak” (for Windows) or “Max OS X 10.x” (for Mac OS X 10.x.y).

      3) (optional) If you wish to see a list of all cached installers for that version of Squeak, instead of just the version detected for your particular OS, then replace either the “plugin/installers/win-std.html” (if you use Windows) or the “plugin/installers/mac-x-std.html” (if you use Mac OS X 10.x.y) portion of the URL with the following string:

      detect.html

      For example, for this version, replace either of the above-mentioned download URL’s with the following URL:

      http://web.archive.org/web/20051208045446/www.squeakland.org/detect.html

      Voila! Now you have a list of all available cached downloads for that particular cached version of Squeak!

      Therefore, if you use Mac OS X 10.x.y instead of Windows, then you have the option of downloading the Mac OS X 10.x.y version of the installer instead from the following listed URL:

      http://web.archive.org/web/20051208045446/www.squeakland.org/plugin/installers/mac-x-std.html

      Enjoy!

Trackbacks & Pingbacks

  1. Conquering the Fear of Reading Research Papers: Computer Science Research Papers for Non-Computer Scientists « Virtually Squeaking: Adventures in Squeak, Croquet, and Open Cobalt

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: