I am looking for papers which are easy to understand, papers which are for undergraduates. I often stumble upon papers which require lots of reading to do and soon I have dug into a recursive rabbit hole. I would like to know about papers which have minimal citations/dependencies and only require knowledge of CS basics.
A good example of such paper would be Bitcoin. You don't need to be a CS wizard to understand the paper. Plus, you can ignore the math part and yet appreciate the beauty of Bitcoin.
Some other examples: Bit Torrent, TOTP RFC.
This is the list I used 27 years ago(1) when I taught at Stanford. It's a mix of what the previous guy (Bob Hagmann of Xerox PARC) used, what I read at Wisconsin, with a sprinkling of Sun's stuff. In looking this over, it's missing some of the Sun stuff, here are some links, some good papers here especially those that start with "v" (if the formatting in any of these looks wonky let me know, I have the troff source for a bunch of these and had to format it just now to get pdfs, might have screwed something up):
and to toot my own horn, some stuff I did at Sun (and after)
http://mcvoy.com/lm/papers/SunOS.vfs_arch.pdf http://mcvoy.com/lm/papers/SunOS.vm_arch.pdf http://mcvoy.com/lm/papers/SunOS.vm_impl.pdf http://mcvoy.com/lm/papers/SunOS.shlib.pdf http://mcvoy.com/lm/papers/SunOS.tfs.pdf
And the Stanford list:
http://mcvoy.com/lm/papers/SunOS.ufs_clustering.pdf http://mcvoy.com/lm/papers/SunOS.nvram.pdf (proposal, never built) http://mcvoy.com/lm/papers/lmbench-usenix.pdf http://mcvoy.com/lm/papers/splice.pdf (hand waving, somewhat built in Linux)
(1) Jesus, I'm old. Feels like yesterday I was teaching there.
"Reflections on Trusting Trust" by Ken Thompson is one of my favorites, and fairly self contained.
Most papers by Jon Bentley (e.g. "A Sample of Brilliance") are also great reads and usually pretty short.
I'm a frequent contributor to Fermat's Library (https://fermatslibrary.com), which posts an annotated paper (CS, Math and Physics mainly) every week. In the annotations you will usually find a concise piece of knowledge that helps you understand some part of the paper without having to spend a long time in the "recursive rabbit hole". For instance, in the Bitcoin paper, there is an annotation with a succinct explanation of the essential cryptography concepts (Hash functions, Public Key Cryptography, Signatures) you need to know to understand the paper. And the nice thing is that if you feel so inclined, you can add your own annotations and make the paper easier to grasp for the next person who reads it :)
- Reflections on Trusting Trust (Annotated Version) - http://fermatslibrary.com/s/reflections-on-trusting-trust
- A Sample of Brilliance (Annotated Version) - http://fermatslibrary.com/s/a-sample-of-brilliance
- Bitcoin: A Peer-to-Peer Electronic Cash System - https://fermatslibrary.com/s/bitcoin
I'm a grad student and I spend a lot of my time reading CS papers.
It is amazing that you want to start reading CS papers and I highly encourage it. However, if you don't have a CS degree I think papers might be remarkably off-putting (they usually are even to early grad students). I suggest you start with textbooks instead. Papers suffer from not being rewritten once they are published, hence from a pedagogical point of view, they are usually not explained as well as they could be after digesting them for many many years. Another problem is that most papers contain multiple ideas some of which rise and shine and the other ones die (often for good reasons). It is not easy to spot which is which without knowing about the wider context, which you naturally lack as a beginner.
If you insist on reading papers, however, at least don't read them in linear order. A good section order is abstract -> intro -> conclusion -> related work (because it uses comparisons which help) -> background -> evaluation (if exists!) -> technical chapters (those are usually best read in linear order). If there are proofs read them only if you must! If the proof is presented in the paper that is a good indication that it contains multiple subtle points which are tough to understand even if you are an experienced researcher.
Lamport's 'Time, Clocks and the Ordering of Events in a Distributed System'. Very readable and, if you are new to distributed systems, really fast way to get a useful new mental model.
I'm surprised no one has mentioned "the morning paper" (https://blog.acolyer.org/) yet. Some papers are more advanced but a lot I found are definitely approachable. You can subscribe to the mailing list and get a new paper every day, along with the author's summary!
That aside, I'm very impressed how he can keep up with this rhythm.
I like Pugh's paper on skip lists , Shannon's "Mathematical Theory of Communication" , and these two might be a stretch but I also like Rong's "Word2vec Parameter Learning Explained"  and Levy & Goldberg's "Word2vec Explained" . In any case use the recommended papers to learn paper reading skills e.g look at references when you don't understand a concept, find an introductory textbook to clarify a proof method, write a summary to make your understanding concrete. Good Luck!
"Why functional programming matters" by John Hughes was recommended reading in my first year undergraduate program in Gothenburg.
It's more of a "position paper" than a "research paper", I suppose, so there's no theorems or proofs or anything.
I love Fermat's Library http://fermatslibrary.com/
It provides a good selection of classics annotated with the purpose of guiding you through the paper.
There's also the seminal Bitcoin paper http://fermatslibrary.com/s/bitcoin
I really like 'Hints for Computer System Design', Butler Lampson . He passes on useful experience without demanding much in preparation from the reader.
1. On Computable Numbers, with an Application to the Entscheidungsproblem by Alan Turing
2. A Mathematical Theory of Communication by Claude Shannon
3. Recursive Functions of Symbolic Expressions and Their Computation by Machine by John McCarthy.
4. Bitcoin: A Peer-to-Peer Electronic Cash System by Satoshi Nakamoto
5. Reflections on Trusting Trust by Ken Thompson
6. Time, Clocks, and the Ordering of Events in a Distributed System by Leslie Lamport
7. As We May Think by Vannevar Bush
8. The Anatomy of a Large-Scale Hypertextual Web Search Engine by Sergey Brin and Lawrence Page
I suggest Alan Turning's 1950 Computing Machinery and Intelligence. Many of the ideas first written in this paper are commonly referenced. It's good to have read the primary source. Do machines think? If you know what a theoretical Turning Machine is you'll have all the prerequisite knowledge. If not you can skip over that part. Do they still teach Turning Machines in Highschool?
Pixar published a lot of great, groundbreaking graphics papers in their early days. (They still do, but as the field is more mature now there's a lot more background reading required.)
For example, I think this one on their rendering pipeline REYES (Render Everything You Ever Saw) is pretty readable, and gives a great overview of how they rendered stuff like Red's Dream, in the years leading up to Toy Story: http://graphics.pixar.com/library/Reyes/paper.pdf
(Edit to add: in fact, just check out the overviews at http://graphics.pixar.com/library/ which are much better than I can describe here)
I suggest that the undergrads be encouraged to go to Arxiv and browse papers, try to work through them and see the range of papers.
The reason for this is that many papers aren't all that well written and well argued. Many are, to be sure, but it will get undergrads to understand what is clear, what is not.
It will also ensure that they are not intimidated by papers and the math on them. They should know they can dive into one and learn something and come out the other end.
But if you want specific recommendations, I find that the HCI (Human Computer Interaction) papers are very readable. Maybe its the people drawn to the field?
Here is just a random example:
Look for survey papers in the fields you are interested in. These papers are written exactly for your situation - to provide a glimpse of the field assuming little prior knowledge.
regarding: >>Plus, you can ignore the math part and yet appreciate the beauty of Bitcoin
you can appreciate the beauty of car and even be a mechanic without physics, chemistry, and mathematics (!), but to understand cars...
Shannon's "A Mathematical Theory of Communication" is one of the most accessible and profound papers in the field: http://math.harvard.edu/~ctm/home/text/others/shannon/entrop...
Great collection here: https://github.com/papers-we-love/papers-we-love
It’s hard reading random papers like that without deeply understanding the problem they are trying to solve. Sometimes understanding the true problem is more difficult than the solution in the papers.
What I would suggest instead as a learning exercise is to pick a domain you want to tackle and reinvent the wheel by implementing it. while doing so you’ll naturally find yourself digging into research papers. The advantage here is that during implementation you’d have understood the problem and the context much better and can relate to what the authors are discussing and trying to solve. Instead of moving backwards from solution to problem.
Margaret Martonosi at Princeton runs a Great Moments in Computing Course where students read a through a number of papers that describe, well, great moments in computing.
Link to a recent syllabus is here: http://mrmgroup.cs.princeton.edu/cos583/syllabusS15.pdf
The papers in it are all well-worth reading and are mostly accessible (with some effort) to a first-year grad student (i.e., anyone with an undergraduate degree in CS or something related.)
PS. Don't make the mistake of reading easy papers just because they're easy to read.
* Augmenting Human Intellect (Engelbart, 1962) 
* Architectural Styles and the Design of Network-based Software Architectures (aka REST from ch. 5) (Fielding, 2000) 
I feel like battling with complexity is an important part of growing as a programmer, and it doesn't require any domain knowledge. To that end:
No Silver Bullet - for two ways to think of complexity https://blog.acolyer.org/2016/09/06/no-silver-bullet-essence...
Not really a paper, but a turing award lecture The Emperor's old clothes - https://blog.acolyer.org/2016/09/07/the-emperors-old-clothes...
My favorites when I was a undergrad:
Architectural Styles and the Design of Network-based Software Architectures (the paper that invented REST):
Solving the Dating Problem with the SENPAI Protocol:
The Byzantine Generals Problem's only prereq is familiarity with basic mathematical notation and a willingness to read carefully. The paper is seminal; it articulates a major computer security concern, the concern that rogue nodes in a network may lie in their communications.
Congestion avoidance and control, by Van Jacobson looks at how TCP, the fundamental protocol behind the internet, works (or didn't work to begin with). It's a pretty easy paper to digest without too many dependencies, especially if you skip the maths (which is explained intuitively anyway). And it's a fascinating read. I highly recommend it!
Look for older papers. They are for various reasons often much easier to read. Here is one example from 1997: https://cadxfem.org/inf/Fast%20MinimumStorage%20RayTriangle%... It's only seven pages and the math is simple for someone to understand with basic linear algebra knowledge. Despite that, it has been cited thousands of times.
Kind of off-topic, but the world is really hurting for something like a distributed version of Zotero; a standardized format for collecting, distributing, and collaborating on reference lists. It's a shame that the Zotero team has no plans to make the Zotero sync protocol itself distributed or self-hostable, because in my (probably naive) opinion it would be a real killer application for both universities and private researchers. If I had enough money to fund this development myself I'd gladly do it, and if someone else kicked off the project I'd also gladly donate.
The only free-as-in-freedom-ish alternative to Zotero I know of is JabRef plus a browser extension like JabFox and either a manual WebDAV/Rsync synchronization solution or Bibsync, which hasn't had been updated in 3 years. And it still lacks the collaboration utility of a Zotero public library.
The Raft paper  is a great read but context of distributed systems and the importance of consensus algorithms is probably a prerequisite. Once you understand the context, it's a nice read that it small enough to contain within your mind in one or two reads.
Best Paper Awards in Computer Science (since 1996) http://jeffhuang.com/best_paper_awards.html
Papers I Read https://shagunsodhani.in/papers-I-read/
The general idea is that you better off reading review papers, they are more approachable: https://www.journals.elsevier.com/computer-science-review/mo...
Or you could start with something you already knew, but in the form of a research paper to see if you could figure that out with just reading the paper. It's reading from the source: You understand the quirks and the intent of the original author.
For example, the Needleman-Wunsch algorithm should be something you already knew -- try reading the original paper: http://www.sciencedirect.com/science/article/pii/00222836709...
I would say none! Research papers are usually not written to be understood by an undergraduate student. Besides, older papers may be hard to read because they were written in a very different context. IMHO, it's better to find well-written, pedagogical and contemporary textbooks on the topic you find interesting.
It sounds very basic, but I highly recommend 'The Annotated Turing' to any beginner in Computer Science. It's a walk through Turing's original 36-page paper on Turing Machines, and requires only high school level math to understand. I picked it up early in my CS undergrad and it blew my mind. I suddenly understood what a computer was.
Edsger W. Dijkstra Archive
Classics and very good reading. Some of the papers are hand written.
"Structural Regular Expressions" by Rob Pike: http://doc.cat-v.org/bell_labs/structural_regexps/se.pdf
This is the foundation of the text editor 'sam', see here: http://sam.cat-v.org
Pretty much everything in the cat-v.org rabbit hole is worth digging into IMO.
Quicksort by Hoare: https://watermark.silverchair.com/050010.pdf?token=AQECAHi20...
Notation as a Tool of Thought, Iverson: http://www.eecg.toronto.edu/~jzhu/csc326/readings/iverson.pd...
The dynamodb paper is pretty approachable and provides alot of context.
The ethereum white paper is also quite straightforward to read. https://github.com/ethereum/wiki/wiki/White-Paper
Harry Lewis at Harvard maintains a master list https://docs.google.com/spreadsheets/d/1wS6O7-ZoFL7Cfjgt-kdh...
He is teaching an online class (for credit) in the Spring that reviews an interesting subset. You don't have to be enrolled to take the class. https://www.extension.harvard.edu/academics/courses/classics...
http://www.sciencedirect.com/science/article/pii/01676423879... It is incredible how so many concepts are clearly explained in so few pages (30). It is the foundation of caml light language that gave birth to ocaml. It explains lambda calculus, semantic of ML family languages, SECD machine, how to perform demonstration in CS. IMHO, it requires at least 5 days to fully understand it if everything is new for you.
2 classics that don't require a whole lot of backgrond are:
- An Axiomatic Basis for Computer Programming by C. A. R. Hoare
- The Next 700 Programming Languages by P. J. Landin
The most recent paper I've read is:
- Storage strategies for collections in dynamically typed languages - Bolz, Diekmann, Tratt
I blog about some papers I've read on my blog , and these three papers I've mentioned have their own post, where I summarize key ideas of the papers. Take a look if you're interested.
For networking, two classics are:
The Design Philosophy of the DARPA Internet Protocols
End-to-end arguments in system design
Turing Awards: http://amturing.acm.org/lectures.cfm. Maybe start with Karp.
Also Jim Gray “why do computers stop and what can be done about it” http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.59.65...
The TCP RFC!
Easy to read. This article explains the difference between CS Topics such as Artificial Intelligence, Machine Learning, and Deep Learning:
I'd mention the morning papers (acolyer.org), also mentioned.
But why are you interested in papers? To improve your programming? To attempt to implement? Or for mostly intellectual stimulation?
If it is for programming, I'd strongly suggest certain books instead. e.g. Programming Pearls by Jon Bentley.
What do you consider to be basic CS? e.g. would knowledge of A* or dynamic programming be considered basic CS? And are you just looking for possibly interesting papers (even if written by completely random people nobody's heard of), or more well-known ones?
What paper do you mean for Bitcoin? The original white paper from Satoshi? I loved the bit torrent paper. I'd add the paper on HMMs and NFS. My list of favorite papers :) The oldies used to be better. Kinda sad really.
Google's classic papers on PageRank, MapReduce, BigTable and GFS.
I find WorryDream Refs by Bret Victor to be a very inspiring collection: http://worrydream.com/refs/
a while back on HN someone posted this link https://github.com/papers-we-love/papers-we-love and it's really good, it covers many of the other reccomendations here.
It also has a community built around it so you can meetup with others interested in the same thing http://paperswelove.org/
For databases the redbook (readings in databases) is a great resource - http://www.redbook.io/
Stephen Wolfram, A New Kind Of Science
A Relational Model of Data for Large Shared Data Banks by Edgar F. Codd [Turing Award Winner]
This is the seminal paper that laid the foundation for RDBMS systems.
At my university (NUS) the CS program had a research paper reading program, where sophomores were tasked to read and summarize a well known paper and this was one of the most popular.
I think this is an essential read: http://usingcsp.com/
Found this through Rich Hickey, and really enjoyed it:
Out of the Tar Pit – Moseley & Marks 2006
my 2 favorites:
Weiser’s original Ubiquitous Computing paper.
TCP RFC. 86?
oops I was gonna suggest bitcoin
Playing Atari with deep q learning :)
Maybe instead of papers you need textbooks?
Before reading computer science papers work on first principles using teachyourselfcs.com
links of some of the classic papers for you & HN Community https://blog.acolyer.org/2016/09/05/on-the-criteria-to-be-us...