Skip to content

Instantly share code, notes, and snippets.

@elkorn
Created January 17, 2015 15:59
Show Gist options
  • Save elkorn/8d013d0a60a615d74705 to your computer and use it in GitHub Desktop.
Save elkorn/8d013d0a60a615d74705 to your computer and use it in GitHub Desktop.
PWL
# Clojure
This is a cross-listing of papers related to Clojure, it's core, contrib and popular libraries. Papers noted at Clojure talks, meetups, and conferences can be found here as well.
## Data Structures
* core.rrb-vector
* [RRB-Trees: Efficient Immutable Vectors](http://infoscience.epfl.ch/record/169879/files/RMTrees.pdf)
## Pattern Matching
* core.match
* [Compiling Pattern Matching to good Decision Trees](http://www.cs.tufts.edu/~nr/cs257/archive/luc-maranget/jun08.pdf)
## Clojure/West 2014
* Applicative Functional Programming
* [Backtracking Iterators](https://www.lri.fr/~filliatr/publis/enum2.pdf)
* [Breadth-First Numbering: Lessons from a Small Exercise in Algorithm Design](http://www.cs.tufts.edu/~nr/cs257/archive/chris-okasaki/breadth-first.pdf)
* Testing
* QuickCheck
* [QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs](http://www.cs.tufts.edu/~nr/cs257/archive/john-hughes/quick.pdf)
* [QuickCheck Testing for Fun and Profit](http://people.inf.elte.hu/center/fulltext.pdf)
* Property-Based Testing, best explained in John Hughes own talk at [ClojureWest 2014](https://www.youtube.com/watch?v=zi0rHwfiX1Q&list=PLZdCLR02grLp__wRg5OTavVj4wefg69hM).
* [Calvin: Fast Distributed Transactions for Partitioned Database Systems](http://cs.yale.edu/homes/thomson/publications/calvin-sigmod12.pdf)
* [f4: Facebook’s Warm BLOB Storage System](http://www-bcf.usc.edu/~wyattllo/papers/f4-osdi14.pdf)
* [Xen and the Art of Virtualization](http://www.cl.cam.ac.uk/research/srg/netos/papers/2003-xensosp.pdf)
* [The operating system: should there be one?](http://plosworkshop.org/2013/preprint/kell.pdf)
* [Communicating Sequential Processes](http://www.cs.ucf.edu/courses/cop4020/sum2009/CSP-hoare.pdf)
Important papers relating to time-series data
Time-series data presents specific but very common problems for efficient
analysis, resulting in the need for columnar data stores and iterative
one-pass processing.
The included documents are:
* :scroll: [Operators on Inhomogeneous Time Series] (http://papers.ssrn.com/sol3/papers.cfm?abstract_id=208278) - Gilles O. Zumbach and Ulrich A. Müller
We present a toolbox to compute and extract information from
inhomogeneous (i.e. unequally spaced) time series. The toolbox
contains a large set of operators, mapping from the space of
inhomogeneous time series to itself.
These operators are computationally efficient (time and memory-wise)
and suitable for stochastic processes. This makes them attractive for
processing high-frequency data in finance and other fields. Using a
basic set of operators, we easily construct more powerful combined
operators which cover a wide set of typical applications.
* [Dynamic Hash Tables](http://www.csd.uoc.gr/~hy460/pdf/Dynamic%20Hash%20Tables.pdf)
* [Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms](http://www.research.ibm.com/people/m/michael/podc-1996.pdf)
* [RRB-Trees: Efficient Immutable Vectors](http://infoscience.epfl.ch/record/169879/files/RMTrees.pdf)
## Audio-related Computer Science
[An ethnographic and technological study of breakbeats in Hardcore, Jungle, and Drum & Bass](https://github.com/papers-we-love/papers-we-love/blob/master/audio_comp_sci/an-ethnographic-and-technological-study-of-breakbeats.pdf) by Jason A. Hockman
[An Industrial-Strength Audio Search Algorithm](https://github.com/papers-we-love/papers-we-love/blob/master/audio_comp_sci/shazam-audio-search-algorithm.pdf) by Avery Li-Chun Wang
# Speech Recognition
## External Papers
[A tutorial on hidden Markov models and selected applications in speech recognition](http://people.sabanciuniv.edu/~berrin/cs512/reading/rabiner-tutorial-on-hmm.pdf)
[Weighted Finite-State Transducers in Speech Recognition](http://www.cs.nyu.edu/~mohri/pub/csl01.pdf)
[Decoding speech in the presence of other sources](http://www.ee.columbia.edu/~dpwe/pubs/BarkCE05-sfd-spcomm.pdf)## ![Papers We Love](http://papers-we-love.github.io/images/logo-top.svg)
**Papers We Love** is a community built around reading, discussing and learning more about academic computer science papers. This repository serves as a directory of some of the best papers the community can find, bringing together documents scattered across the web.
Due to [licenses](https://github.com/papers-we-love/papers-we-love#respect-content-licenses) we cannot always host the papers themselves (when we do, you will see a :scroll: emoji next to its title in the directory README) but we can provide links to their locations.
If you enjoy the papers, perhaps stop by a local chapter meetup and join in on the vibrant discussions around them.
### Chapters
Here are our official chapters. Let us know if you are interested in [starting one](https://github.com/papers-we-love/papers-we-love/wiki/Creating-a-PWL-chapter) in your city!
* [New York City](http://www.meetup.com/papers-we-love/)
* [San Francisco](http://www.meetup.com/papers-we-love-too/) || [Meetup list](https://github.com/papers-we-love/papers-we-love/tree/master/_meetups/SanFrancisco)
* [Chicago](http://www.meetup.com/Papers-We-Love-Chicago)
* [London](http://www.meetup.com/papers-we-love-london)
* [Colorado](http://papersweloveco.org)
* [Ohio](http://www.meetup.com/Papers-We-Love-Columbus/)
* [Berlin](http://www.meetup.com/Papers-We-Love-Berlin/)
* [Pune](http://www.meetup.com/Doo-Things)
* [Boston](http://www.meetup.com/Papers-We-Love-Boston/)
* [St. Louis](http://www.meetup.com/Papers-We-Love-in-saint-louis/)
* [Singapore](https://www.facebook.com/groups/paperswelovesg/)
* [Bangalore](http://www.meetup.com/Papers-we-love-Bangalore/)
* [Washington, DC](http://www.meetup.com/Papers-We-Love-DC/)
* [Montreal](http://www.meetup.com/Papers-We-Love-Montreal/)
* [Seattle](http://www.meetup.com/Papers-We-Love-Seattle/)
* [Toronto](http://www.meetup.com/Papers-We-Love-Toronto/)
* [Hamburg](http://www.meetup.com/Papers-We-Love-Hamburg/)
* [Reykjavík](http://www.meetup.com/Papers-We-Love-Reykjavik)
* [Dallas](http://www.meetup.com/Papers-We-Love-Dallas/)
* [Vienna](http://www.meetup.com/Papers-We-Love-Vienna/)
* [Munich](http://www.meetup.com/Papers-We-Love-Munich/)
All of our meetups follow our [Code of Conduct](CODE_OF_CONDUCT.md).
### Past Presentations
View a complete list of [past presentations](https://github.com/papers-we-love/papers-we-love/wiki/Past-Presentations) or check out our [Youtube](http://www.youtube.com/user/PapersWeLove) and [MixCloud](http://www.mixcloud.com/paperswelove/) (audio-only format) channels.
## Search this Repo!
[@polyfractal](https://github.com/polyfractal) indexed this repository with Elastic Search. Find papers [here](http://findpaperswelove.com) !
## Info
We're looking for pull requests related to papers we should add, better organization of the papers we do have, and/or links to other paper-repos we should point to.
### Other Good Places to Find Papers
* [Bell System Technical Journal, 1922-1983](http://alcatel-lucent.com/bstj/)
* [Best Paper Awards in Computer Science](http://jeffhuang.com/best_paper_awards.html)
* [Facebook](https://www.facebook.com/publications)
* [Google Scholar](http://scholar.google.com/citations?view_op=top_venues&hl=en&vq=eng) (choose a subcategory)
* [Microsoft Research](http://research.microsoft.com/apps/catalog/default.aspx?t=publications)
* [Functional Programming Books Review](http://alexott.net/en/fp/books/)
* [MIT's Artificial Intelligence Lab Publications](http://dspace.mit.edu/handle/1721.1/39813)
* [MIT's Distributed System's Reading Group](http://pdos.csail.mit.edu/dsrg/)
* [arXiv Paper Repository](http://arxiv.org/)
* [SciRate](https://scirate.com/)
* [cat-v.org](http://doc.cat-v.org/)
* [y-archive](http://yarchive.net/comp/index.html)
* [netlib](http://www.netlib.org/)
* [Services Engineering Reading List](https://github.com/mmcgrana/services-engineering)
* [Readings in Distributed Systems](http://christophermeiklejohn.com/distributed/systems/2013/07/12/readings-in-distributed-systems.html)
* [Gradual Typing Bibliography](http://samth.github.io/gradual-typing-bib/)
* [Security Data Science Papers](http://www.covert.io/security-datascience-papers/)
* [Research Papers from Robert Harper, Carnegie Mellon University](http://www.cs.cmu.edu/~rwh/papers.htm)
* [Lobste.rs tagged as PDF](https://lobste.rs/t/pdf)
Please check out our [wiki-page](https://github.com/papers-we-love/papers-we-love/wiki/Other-Good-Sources-of-Reading-Material) for links to blogs, books, exchanges that are worth a good read.
### How To Read a Paper
Reading a paper is not the same as reading a blogpost or a novel. Here are a few handy resources to help you get started.
* [How to read an academic article](http://organizationsandmarkets.com/2010/08/31/how-to-read-an-academic-article/)
* [Advice on reading academic papers](http://www4.ncsu.edu/~akmassey/posts/2012-02-15-advice-on-reading-academic-papers.html)
* [How to read and understand a scientific paper](http://violentmetaphors.com/2013/08/25/how-to-read-and-understand-a-scientific-paper-2/)
## Contributing Guidelines
We have a few guidelines in place to keep the repo clean and easy to navigate. We recommend that you follow these conventions in your pull-request for a speedy merge. Note that every pull request we receive must have Two-Thumbs-Up minimum from PWL organizers/collaborators to be merged.
### Follow the group's ethos
We want to help bring academic research closer to practitioners and we strive to:
* **Keep the quality of papers listed high:** Books, blogposts, and/or reference pdfs don't go through the same review process that academic papers do and we won't add them to this repo.
* **Help people understand why a paper is important:** We ask that you include with your commit an update to the directory README with a short justification of why you love this paper (for example: A paper might be interesting because it spawned a new domain, it was exceptionally well-written, or perhaps it was completely wrong about something.)
### Respect content licenses
* **We will only merge pull requests that contain research papers that allow digital distribution.** Papers whose copyright prohibits redistribution will not be accepted; for example [license 1](http://www.acm.org/publications/policies/copyright-policy-v1) from the [ACM digital library](http://www.acm.org/publications/policies/copyright_policy).
* We encourage papers that do not allow digital distribution to be added to a README in the appropriate subject's folder. For example, [the distributed systems README](https://github.com/papers-we-love/papers-we-love/blob/master/distributed_systems/README.md).
### Follow our naming convention
* Directory names are undercased and separated by underscores (example: artificial_intelligence)
* Paper names are undercased and separated by dashes (example: out-of-the-tar-pit.pdf). Use the full title when possible.
### Copyright
The name "Papers We Love" and the logos for the organization are copyrighted, and under the ownership of Papers We Love NYC, all rights reserved. When starting a chapter, please review [our guidelines](https://github.com/papers-we-love/papers-we-love/wiki/Creating-a-PWL-chapter) and ask us about using the logo.
* [Reflections on Trusting Trust](http://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf)
## Information Retrieval
Information retrieval is the activity of obtaining information resources relevant to an information need from a collection of information resources. (Says Wikipedia).
The included documents are
* [Graph of Word and TW-IDF](http://www.lix.polytechnique.fr/~rousseau/papers/rousseau-cikm2013.pdf) - Francois Rousseau & Michalis Vazirgiannis
The traditional IR system stores term-specific statistics (typically
a term's frequency in each document - which we call TF) in an index.
Such a model ignores dependencies between terms and considers a
document's terms to occur independently of each other (and is aptly
called the bag-of-words model). In this paper the authors use a
statistic that uses a graph representation of a document to encode
dependencies between terms and replace the TF statistic with a new
TW statistic based on the graph constructed and achieve
significantly better results that popular existing models. This
paper won a honorable mention at CIKM 2013.
* [The Anatomy of a Large-Scale Hypertextual Web Search Engine](http://infolab.stanford.edu/~backrub/google.html)
* [Coupled 3D Reconstruction of Sparse Facial Hair and Skin](http://www.disneyresearch.com/project/coupled-3d-reconstruction-of-sparse-facial-hair-and-skin/)
* [High-Quality Single-Shot Capture of Facial Geometry](http://www.disneyresearch.com/project/high-quality-single-shot-capture-of-facial-geometry/)
# Stringology
## External Papers
* [A Taxonomy of Suffix Array Construction Algorithms](http://www.cas.mcmaster.ca/~bill/best/algorithms/07Taxonomy.pdf)
- A great introduction to
[suffix arrays](http://en.wikipedia.org/wiki/Suffix_array), but
also a survey paper that is more than the sum of its citations,
clarifying the presentation of all the algorithms with a
unifying framework.
* [D-Expressions: Lisp Power, Dylan Style](http://people.csail.mit.edu/jrb/Projects/dexprs.pdf)
* [Fortifying Macros](http://www.ccs.neu.edu/racket/pubs/icfp10-cf.pdf)
# User Interfaces
[Squeak: a Language for Communicating with Mice](http://ordiecole.com/squeak/cardelli_squeak1985.pdf)
# Computer Architecture
* [Piranha: A Scalable Architecture Based on Single-Chip Multiprocessing](http://barroso.org/publications/isca00.pdf)
# Pattern Matching
* :scroll: [Compiling Pattern Matching to good Decision Trees](../pattern_matching/compiling-pattern-matching-to-good-decision-trees.pdf) by Luc Maranget. Paper address the issue of compiling ML pattern matching to efficient decisions trees.
* :scroll: [Extensible Pattern Matching in an Extensible Language](../pattern_matching/extensible-pattern-matching-extensible-language.pdf) by Sam Tobin-Hochstadt. Paper present a sophisticated pattern matcher for [Racket](http://racket-lang.org/), implemented as language extension using macros.
* :scroll: [Warnings for pattern matching](../pattern_matching/warnings-for-pattern-matching.pdf) by Luc Maranget. Paper examine the ML pattern-matching anomalies of useless clauses and non-exhaustive matches.
[An O(1) algorithm for implementing the LFU cache eviction scheme](https://github.com/papers-we-love/papers-we-love/blob/master/caching/a-constant-algorithm-for-implementing-the-lfu-cache-eviction-scheme.pdf) by Prof. Ketan Shah, Anirban Mitra, Dhruv Matani
[2Q: A Low Overhead High Performance Buffer Management Replacement Algorithm](http://www.vldb.org/conf/1994/P439.PDF) by Theodore Johnson and Dennis Shasha
# Android
## Security
* Referenced by [Two Secure Coding Tools for Analyzing Android Apps](http://blog.sei.cmu.edu/post.cfm/secure-coding-tools-analyzing-android-apps-118) :
* [Analyzing Inter-Application Communication in Android](https://www.eecs.berkeley.edu/~daw/papers/intents-mobisys11.pdf)
* [Effective Inter-Component Communication Mapping in Android with Epicc: An Essential Step Towards Holistic Security Analysis](http://www.cse.psu.edu/~duo114/pubs/octeau-sec13.pdf)
* [FlowDroid: Precise Context, Flow, Field, Object-sensitive and Lifecycle-aware Taint Analysis for Android Apps](http://www.bodden.de/pubs/far+14flowdroid.pdf)
[Architectural Styles and the Design of Network-based Software Architectures (REST) by Roy Fielding](https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf)
# Economics
## Auctions and Bidding
* [Auctions and bidding: A guide for computer scientists](http://www.sci.brooklyn.cuny.edu/~parsons/projects/mech-design/publications/bluffers-final.pdf) by Simon Parsons
# Programming Language Theory
* [Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs](http://www.thocp.net/biographies/papers/backus_turingaward_lecture.pdf)
* [Programming and Reasoning with Algebraic Effects and Dependent Types](http://eb.host.cs.st-andrews.ac.uk/drafts/effects.pdf)
* [Programming Languages: History and Future](http://www.csee.umbc.edu/courses/undergraduate/CMSC331/resources/papers/sammet1972.pdf)
* [Soft Typing](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.24.9333&rep=rep1&type=pdf)
* [Reflections on Trusting Trust](http://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf)
* [Internet Census via Insecure Routers](http://internetcensus2012.bitbucket.org/paper.html)
* [Looking inside the (Drop) box](http://ictc.aeoi.org.ir/sites/default/files/US-13-Prado-SSL-Gone-in-30-seconds-A-BREACH-beyond-CRIME-WP_0.pdf)
* [Making Programs Forget: Enforcing Lifetime For Sensitive Data](https://www.usenix.org/events/hotos11/tech/final_files/Kannan.pdf)
* [Breach: Reviving The Crime Attack](http://breachattack.com/resources/BREACH%20-%20SSL,%20gone%20in%2030%20seconds.pdf)
* [Why Silent Updates Boost Security](http://www.techzoom.net/Papers/Browser_Silent_Updates_%282009%29.pdf)
* :scroll: [Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud](http://research.google.com/pubs/archive/41892.pdf)
### Rendering
* [Digital Video Stabilization and Rolling Shutter Correction using
Gyroscopes](http://graphics.stanford.edu/papers/stabilization/karpenko_gyro.pdf)
This is a really great paper that is both complex and straightforward.
This paper "present a robust, real-time video stabilization and rolling
shutter correction technique based on gyroscopes". I think
this is a great paper because it makes a clever use of a commodity technology
(smartphones' gyroscopes) to make a state-of-the-art improvement to a
central components of phones: video cameras by removing the shakes
and rolling shutter artifacts of a video in real-time.
* [An Improved Illumination Model for Shaded Display](https://www.cs.drexel.edu/~david/Classes/CS586/Papers/p343-whitted.pdf)
* [The Rendering Equation](http://www.cs.rpi.edu/~cutler/classes/advancedgraphics/S08/lectures/kajiya.pdf)
* [GigaVoxels : Ray-Guided Streaming for Efficient and Detailed Voxel Rendering](http://maverick.inria.fr/Publications/2009/CNLE09/CNLE09.pdf) - [Web page](http://maverick.inria.fr/Publications/2009/CNLE09/) - [Project page](http://gigavoxels.imag.fr/) - [Video](https://www.youtube.com/watch?v=HScYuRhgEJw)
### Surface reconstruction
* [Poisson surface reconstruction](http://research.microsoft.com/en-us/um/people/hoppe/poissonrecon.pdf) - [Code](http://www.cs.jhu.edu/~misha/Code/PoissonRecon/Version5.71/)
* [KinectFusion: Real-time 3D Reconstruction and Interaction Using a Moving Depth Camera](http://research.microsoft.com/pubs/155416/kinectfusion-uist-comp.pdf)
### Object modeling
* [3-Sweep: Extracting Editable Objects from a Single Photo](http://www.cs.tau.ac.il/~dcor/articles/2013/3-Sweep-Extracting-Editable-Objects.pdf) - [Video](https://www.youtube.com/watch?v=Oie1ZXWceqM)
### Lighting
* [Light Propagation Volumes in CryEngine 3](http://www.crytek.com/download/Light_Propagation_Volumes.pdf)
### Bump mapping
* [Interactive Horizon Mapping: Shadows for bump-mapped surfaces](http://research.microsoft.com/en-us/um/people/cohen/bs.pdf)
### Interior mapping
* [Interior Mapping: A new technique for rendering realistic buildings](http://www.proun-game.com/Oogst3D/CODING/InteriorMapping/InteriorMapping.pdf)
### Procedural modeling
* Both of these papers are great examples of a non-traditional
application of grammar-driven generation:
- [Procedural Modeling of Buildings](http://www.peterwonka.net/Publications/pdfs/2006.SG.Mueller.ProceduralModelingOfBuildings.final.pdf)
- [Instant Architecture](http://www.peterwonka.net/Publications/pdfs/2003.SG.Wonka.InstantArchitecture.high.pdf)
### Shape grammars
* [Shape Grammars and the Generative Specification of Painting and Sculpture](http://shapegrammar.org/ifip/SGBestPapers72.pdf)
- A seminal paper that lead to many interesting applications in
graphics as well as more broadly in design; see also the
bibliography at [shapegrammar.org](http://shapegrammar.org/).
## Computer Science Fundamentals and History
* [Turing, On computable numbers, with an application to the Entscheidungsproblem](http://www.turingarchive.org/browse.php/B/12) by Alan Turing
* [Mealy, A Method for Synthesizing Sequential Circuits] (http://www3.alcatel-lucent.com/bstj/vol34-1955/articles/bstj34-5-1045.pdf) by George H. Mealy
* :scroll: [Back to the Future - The Story of Squeak, A Practical Smalltalk Written in Itself](https://github.com/papers-we-love/papers-we-love/blob/master/comp_sci_fundamentals_and_history/story-of-squeak-a-practical-smalltalk-written-in-itself.pdf) by Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace & Alan Kay
* :scroll: [Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I](https://github.com/papers-we-love/papers-we-love/blob/master/comp_sci_fundamentals_and_history/recursive-functions-of-symbolic-expressions-and-their-computation-by-machine-parti.pdf) by John McCarthy
* :scroll: [An Axiomatic Basis for Computer Programming](https://github.com/papers-we-love/papers-we-love/blob/master/comp_sci_fundamentals_and_history/axiomatic-basis-computer-programming.pdf) by C. A. R. HOARE
* :scroll: [On the Computational Complexity of Algorithims](http://www.ams.org/journals/tran/1965-117-00/S0002-9947-1965-0170805-7/S0002-9947-1965-0170805-7.pdf) by J. HARTMANIS AND R. E. STEARNS* [Asynchronous Functional Reactive Programming for GUIs](http://people.seas.harvard.edu/~chong/pubs/pldi13-elm.pdf)
* [Push-Pull Functional Reactive Programming](http://conal.net/papers/push-pull-frp/push-pull-frp.pdf)
* [Wormholes: Introducing Effects to FRP](http://haskell.cs.yale.edu/wp-content/uploads/2012/08/Winograd-Cort-Wormholes.pdf)
Robotics
====
[Adaptive Road Following using Self-Supervised Learning and Reverse Optical Flow](http://www.roboticsproceedings.org/rss01/p36.pdf)
[DP-SLAM: Fast, Robust Simultaneous Localization and Mapping Without Predetermined Landmarks](http://people.ee.duke.edu/~lcarin/Lihan4.21.06a.pdf)
[The Dynamic Window Approach to Collision Avoidance](http://www.cs.washington.edu/node/4749)
[Online Trajectory Generation: Basic Concepts for Instantaneous Reactions to Unforeseen Events](http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5350749)
[Probablistic Roadmaps for Path Planning in High-Dimensional Configuration Spaces](http://www.kavrakilab.org/sites/default/files/kavraki1996prm-high-dim-conf.pdf)
[Rapidly-Exploring Random Trees: A New Tool for Path Planning](http://msl.cs.uiuc.edu/~lavalle/papers/Lav98c.pdf)
[RGB-D Mapping: Using Depth Cameras for Dense 3D Modeling of Indoor Environments](http://www.cs.washington.edu/robotics/postscripts/3d-mapping-iser-10-final.pdf)
Reasoning for the new papers:
The dynamic window approach to collision avoidance is an influential
paper for mobile robots. The method is based on a robot's dynamics
rather than higher-level representations of a robot and/or obstacles in
an environment.
The PRM and RRT algorithms are two seminal papers in robot motion
planning. The problem of motion planning scales exponentially with the
degrees of freedom a robot has and the degrees of freedom the obstacles
in an environment have. Thus, planning with high degrees of freedom leads to many problems
such as incompleteness and extremely slow speed. The PRM method was the first to
propose a sampling-based stratey to deal with motion planning and
created a practical method for offline planning of robot manipulators.
The RRT method modified PRM by using a tree structure rather than a
graph so that non-holonomic and other constraints could be considered
when planning.
The Instantaneous Trajectory Generation method is relatively new, but
very important. It allows for extremely fast trajectory generation for
robots of high degrees of freedom (motion states generated within 1
millisecond). It has been used to implement robot sword fighting and
other activities that require fast reaction-based planning. The author
started a business based simply on the work and has shown the
algorithm's success in many robot applications.
### San Francisco Papers We Love Meetups
Our [Meetup Page](http://www.meetup.com/papers-we-love-too)
Here is the list of all meetups and links to their resources. Enjoy!
* [2014 Meetups](2014_meetups.md)
* 2015 - coming soon!
* [Everything You Always Wanted to Know About Synchronization but Were Afraid to Ask](http://sigops.org/sosp/sosp13/papers/p33-david.pdf)
* [Time, Clocks, and the Ordering of Events in a Distributed System](http://www.stanford.edu/class/cs240/readings/lamport.pdf)
* [Heap Architectures For Concurrent Languages Using Message Passing](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.108.1302&rep=rep1&type=pdf)
* [Message Analysis for Concurrent Languages](http://user.it.uu.se/~kostis/Papers/escape.pdf)
* [Finding Race Conditions in Erlang with QuickCheck and PULSE](http://publications.lib.chalmers.se/records/fulltext/125252/local_125252.pdf)
* [The Semantics of x86-CC Multiprocessor Machine Code](http://www.cl.cam.ac.uk/~pes20/weakmemory/popl09.pdf)
*Note: This contribution here is the focus on the rigorous semantics for x86 multiprocessor programs and an axiomatic definition of the memory model. Their definitions and proofs are backed by the [HOL](http://en.wikipedia.org/wiki/HOL_(proof_assistant))(Higher Order Logic) proof assistant.*
* [A Unified Theory of Garbage Collection](http://www.cs.virginia.edu/~cs415/reading/bacon-garbage.pdf)
* [A LISP Garbage-Collector for Virtual-Memory Computer Systems](https://www.cs.purdue.edu/homes/hosking/690M/p611-fenichel.pdf)
* [Incremental Collection of Mature Objects](http://pdf.aminer.org/000/465/194/incremental_collection_of_mature_objects.pdf)
* :scroll: [Incremental Mature Garbage Collection Using the Train Algorithm](https://www.sics.se/~seif/DatalogiII/Book/train.ps)
* [Incremental Garbage Collection: The Train Algorithm](http://www.ssw.uni-linz.ac.at/General/Staff/TW/Wuerthinger05Train.pdf)
* :scroll: The Lisp II Garbage Collector (ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-019.pdf)
* [The Treadmill: Real-Time Garbage Collection Without Motion Sickness](http://home.pipeline.com/~hbaker1/NoMotionGC.html)
* [A Unified Theory of Garbage Collection](http://www.cs.virginia.edu/~cs415/reading/bacon-garbage.pdf)
* [Teaching Garbage Collection without Implementing Compilers or Interpreters](http://faculty.cs.byu.edu/~jay/static/cooper-sigcse2013.pdf)
* [Message Analysis Guided Allocation and Low Pause Incremental GC in a Concurrent Language](http://user.it.uu.se/~kostis/Papers/ismm04.pdf)
* [And Then There Were None: A Stall-Free Real-Time Garbage Collector for Reconfigurable Hardware](http://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon12AndThen.pdf)
* :scroll:
[ScatterAlloc: Massively Parallel Dynamic Memory Allocation for the GPU](http://www.icg.tugraz.at/Members/steinber/scatteralloc-1)
- Presents a useful algorithm as well as considerations relevant to
designing algorithms for GPUs.
* [A Method for Obtaining Digital Signatures and Public-Key Cryptosystems](http://people.csail.mit.edu/rivest/Rsapaper.pdf)
* [Twenty Years of Attacks on the RSA Cryptosystem](https://crypto.stanford.edu/~dabo/papers/RSA-survey.pdf)
* [Communication Theory of Secrecy Systems](communication-theory-of-secrecy-systems.pdf)
## Related Works
### [A Mathematical Theory of Cryptography (1945)](http://www.cs.bell-labs.com/who/dmr/pdfs/shannoncryptshrt.pdf) - Shannon
The original classified memo for Bell Labs that was republished in 1949 as ["Communication Theory of Secrecy Systems"](communication-theory-of-secrecy-systems.pdf).
### [A Mathematical Theory of Communication (1948)](../information_theory/a-mathematical-theory-of-communication-1948.pdf) - Shannon
Shannon said that his wartime insights into communication theory and cryptography developed simultaneously and that "they were so close together you couldn’t separate them". ["Communication Theory of Secrecy Systems"](communication-theory-of-secrecy-systems.pdf) incorporates many concepts and formulations that also appeared in his 1948 paper.
# Testing
## QuickCheck
[QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs](http://www.cs.tufts.edu/~nr/cs257/archive/john-hughes/quick.pdf)
[QuickCheck Testing for Fun and Profit](http://people.inf.elte.hu/center/fulltext.pdf)
Property-Based Testing, best explained in John Hughes own talk at [ClojureWest 2014](https://www.youtube.com/watch?v=zi0rHwfiX1Q&list=PLZdCLR02grLp__wRg5OTavVj4wefg69hM).
# Program Verification
* [Coq: The world’s best macro assembler?](https://research.microsoft.com/en-us/um/people/nick/coqasm.pdf)
#Combinatory Logic
* [Flattening Combinators: Surviving Without Parentheses](http://www.westpoint.edu/eecs/SiteAssets/SitePages/Faculty%20Publication%20Documents/Okasaki/jfp03flat.pdf) by Chris Okasaki* [One VM to Rule Them All](https://www.cs.purdue.edu/homes/gkrichar/papers/onward2013-wuerthinger-truffle.pdf)
- This is an exciting VM implementation that incorporates AST node rewriting and an optimizing compiler. It enables the implementation of, and excellent performance for, a wide range of languages.
# Functional Programming
* :scroll: [Organizing Programs Without Classes](http://cs.au.dk/~hosc/local/LaSC-4-3-pp223-242.pdf)
## Applicative Programming
* [Backtracking Iterators](https://www.lri.fr/~filliatr/publis/enum2.pdf)
* [Breadth-First Numbering: Lessons from a Small Exercise in Algorithm Design](http://www.cs.tufts.edu/~nr/cs257/archive/chris-okasaki/breadth-first.pdf)
## Concatenative Programming
* :scroll: [Concatenative Programming: An Overlooked Paradigm in Functional Programming](https://github.com/dterei/Research-Papers/blob/master/To%20Read/CONCATENATIVE%20PROGRAMMING%0AAn%20Overlooked%20Paradigm%20in%20Functional%20Programming.pdf)
## Imperative Programming - Functional Programming
* [Crossing the Gap from Imperative to Functional Programming through Refactoring](http://dig.cs.illinois.edu/papers/lambdaRefactoring.pdf)
* [Purely Functional Lazy Non-deterministic Programming](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.148.524)
* :scroll: [On the Meanings of the Logical Constants and the Justifications of the Logical Laws](http://www.pps.univ-paris-diderot.fr/~saurin/Enseignement/LMFI/articles/Martin-Lof83.pdf)
If you only read one of these papers, start with the classic Demers, et al paper:
* [Epidemic Algorithms for Replicated Database Maintenance] (http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/parc/techReports/CSL-89-1_Epidemic_Algorithms_for_Replicated_Database_Maintenance.pdf)
# Peer sampling services
Briefly, a peer sampling service is a system that maintains a restricted set (partial view) of the all machines participating in a gossip system.
* [The Peer Sampling Service: Experimental Evaluation of Unstructured Gossip-Based Implementations](http://infoscience.epfl.ch/record/83409/files/neg--1184036295all.pdf)
* [HyParView](http://gsd.di.uminho.pt/jop/pdfs/LPR07b.pdf)
* [SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol](http://www.cs.cornell.edu/~asdas/research/dsn02-swim.pdf)
# Epidemic broadcast
* [Large-Scale Newscast Computing on the Internet ](http://www.soc.napier.ac.uk/~benp/dream/dreampaper17.pdf)
* [Bimodal Multicast](http://www.csl.mtu.edu/cs6461/www/Reading/Birman99.pdf)
* [Efficient Reconciliation and Flow Control for Anti-Entropy Protocols](http://idning-paper.googlecode.com/svn/trunk/reference/ignore/Scuttlebutt_Efficient_reconciliation_and_flow_control_for_anti-entropy_protocols.pdf)
* [Epidemic Broadcast Trees](http://www.gsd.inesc-id.pt/~ler/reports/srds07.pdf)
# Failure Detectors
* [A Gossip-Style Failure Detection Service](http://ecommons.cornell.edu/bitstream/1813/7341/2/98-1687.ps)
* [The ϕ Accrual Failure Detector ](http://ddg.jaist.ac.jp/pub/HDY+04.pdf)
##Biocomputing
Some resources that may assist in understanding papers in this section:
- Polymerase Chain Reaction ( [a short video](http://www.youtube.com/watch?v=2KoLnIwoZKU), [wikipedia](http://en.wikipedia.org/wiki/Pcr))
---------
* [Molecular Computation of Solutions to Combinatorial Problems](http://www.cs.duke.edu/courses/cps296.4/spring04/papers/Adleman94.pdf)
- An interesting and inspiring approach to solving the (NP-complete) Hamiltonian Graph problem.
* [The chemical basis of morphogenesis](http://www.dna.caltech.edu/courses/cs191/paperscs191/turing.pdf)
- How we can generate patterns from reaction-diffusion models and how those models apply in real life situations: cells self-organisation and pattern creation.
- Includes advance mathematical concepts, basic chemistry, basic biology.
- By Alan Turing
# Distributed Systems
## External Papers
* :scroll: [A Note on Distributed Computing](http://www.eecs.harvard.edu/~waldo/Readings/waldo-94.pdf)
* [A simple totally ordered broadcast protocol](http://labs.yahoo.com/files/ladis08.pdf)
* [Above the Clouds: A Berkeley View of Cloud Computing](http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.pdf)
* The Calvin papers:
* [The Case for Determinism in Database Systems](http://cs-www.cs.yale.edu/homes/dna/papers/determinism-vldb10.pdf)
* [Consistency Tradeoffs in Modern Distributed Database System Design](http://cs-www.cs.yale.edu/homes/dna/papers/abadi-pacelc.pdf)
* [Modularity and Scalability in Calvin](http://sites.computer.org/debull/A13june/calvin1.pdf)
* [Calvin: Fast Distributed Transactions for Partitioned Database Systems](http://www.cs.yale.edu/homes/dna/papers/calvin-sigmod12.pdf)
* [Lightweight Locking for Main Memory Database Systems](http://cs-www.cs.yale.edu/homes/dna/papers/vll-vldb13.pdf)
* [Cassandra - A Decentralized Structured Storage System](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.161.6751&rep=rep1&type=pdf)
* [Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications](http://pdos.csail.mit.edu/papers/chord:sigcomm01/chord_sigcomm.pdf)
* [CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data](http://www.ssrc.ucsc.edu/Papers/weil-sc06.pdf)
* [Don’t Settle for Eventual: Scalable Causal Consistency for Wide-Area Storage with COPS](http://www.cs.cmu.edu/~dga/papers/cops-sosp2011.pdf)
* [Dremel: Interactive Analysis of Web-Scale Datasets](http://static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/36632.pdf)
* [F1: A Distributed SQL Database That Scales](http://static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/41344.pdf)
* [HaLoop: Efficient Iterative Data Processing on Large Clusters](http://www.ics.uci.edu/~yingyib/papers/HaLoop_camera_ready.pdf)
* [Hoard: A Scalable Memory Allocator for Multithreaded Applications](http://people.cs.umass.edu/~emery/pubs/berger-asplos2000.pdf)
* [HyperDex: A Distributed, Searchable Key-Value Store](https://cs.uwaterloo.ca/~bernard/hyperdex.pdf)
* [Implementing Fault-Tolerant Services Using the State Machine Approach: A Tutorial](https://www.cs.cornell.edu/fbs/publications/SMSurvey.pdf)
* [Introduction to a System for Distributed Databases SDD-1](http://www.few.vu.nl/~kgr700/sdd1.pdf)
* [Kafka: a Distributed Messaging System for Log Processing](http://research.microsoft.com/en-us/um/people/srikanth/netdb11/netdb11papers/netdb11-final12.pdf)
* [Linearizability: A Correctness Condition for Concurrent Objects](http://cs.brown.edu/~mph/HerlihyW90/p463-herlihy.pdf)
* [Making Reliable Distributed Systems in the Presence of Software Errors](http://www.erlang.org/download/armstrong_thesis_2003.pdf)
* [Managing Update Conflicts in Bayou, a Weakly Connected Replicated Storage System](http://zoo.cs.yale.edu/classes/cs422/2013/bib/terry95managing.pdf)
* [Map-Reduce-Merge: Simplified Relational Data Processing on Large Clusters](http://www.cs.duke.edu/courses/cps399.28/current/papers/sigmod07-YangDasdanEtAl-map_reduce_merge.pdf)
* [MDCC: Multi-Data Center Consistency](https://amplab.cs.berkeley.edu/wp-content/uploads/2013/03/mdcc-eurosys13.pdf)
* [MillWheel: Fault-Tolerant Stream Processing at Internet Scale](http://static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/41378.pdf)
* [Omega: flexible, scalable schedulers for large compute clusters](http://research.google.com/pubs/archive/41684.pdf)
* [Optimistic replication](http://pages.cs.wisc.edu/~remzi/Classes/739/Spring2004/Papers/optimistic-survey.pdf)
* [Orleans: Distributed Virtual Actors for Programmability and Scalability] (http://research.microsoft.com/apps/pubs/default.aspx?id=210931)
* [Paxos Made Live - An Engineering Perspective](http://www.cs.utexas.edu/users/lorenzo/corsi/cs380d/papers/paper2-1.pdf)
* [Practical Byzantine Fault Tolerance and Proactive Recovery](http://www.itu.dk/stud/speciale/bepjea/xwebtex/litt/practical-byzantine-fault-tolerance-and-proactive-recovery.pdf)
* [Pregel: A System for Large-Scale Graph Processing](http://kowshik.github.io/JPregel/pregel_paper.pdf)
* [Replication, History, and Grafting in the Ori File System](http://sigops.org/sosp/sosp13/papers/p151-mashtizadeh.pdf)
* [Resilient Overlay Networks](http://nms.lcs.mit.edu/papers/ron-sosp2001.pdf)
* [Sinfonia: A New Paradigm for Building Scalable Distributed Systems](http://research.microsoft.com/en-us/people/aguilera/sinfonia-aguilera-sosp2007.pdf)
* [Sparrow: Distributed, Low Latency Scheduling](http://people.csail.mit.edu/matei/papers/2013/sosp_sparrow.pdf)
* [The Byzantine Generals Problem](http://www.andrew.cmu.edu/course/15-749/READINGS/required/resilience/lamport82.pdf)
* :scroll: [The Chubby Lock Service for Loosely-Coupled Distributed Systems](http://static.googleusercontent.com/media/research.google.com/en/us/archive/chubby-osdi06.pdf)
* [The Dangers of Replication and a Solution](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.2707&rep=rep1&type=pdf)
* [The Part-Time Parliament](http://research.microsoft.com/en-us/um/people/lamport/pubs/lamport-paxos.pdf)
* [There Is More Consensus in Egalitarian Parliaments](https://www.cs.cmu.edu/~dga/papers/epaxos-sosp2013.pdf)
* [Towards a Next Generation Data Center Architecture: Scalability and Commoditization](http://research.microsoft.com/pubs/79348/presto27-greenberg.pdf)
* [Transactional Client-Server Cache Consistency: Alternatives and Performance](http://www.cs.berkeley.edu/~franklin/Papers/p315-franklin.pdf)
* [Unicorn: A System for Searching the Social Graph](http://db.disi.unitn.eu/pages/VLDBProgram/pdf/industry/p871-curtiss.pdf)
* [Unikernels: Library Operating Systems for the Cloud](http://anil.recoil.org/papers/2013-asplos-mirage.pdf)
* [Untraceable Electronic Mail, Return Addresses, and Digital Pseudonyms](http://www.cs.utexas.edu/~shmat/courses/cs395t_fall04/chaum81.pdf)
* [Viewstamped Replication: A New Primary Copy Method to Support Highly-Available Distributed Systems](http://www.pmg.csail.mit.edu/papers/vr.pdf)
* [VL2: A Scalable and Flexible Data Center Network](http://research.microsoft.com/pubs/80693/vl2-sigcomm09-final.pdf)
## Related Works
### [“On the Electrodynamics of Moving Bodies” (1905) — Einstein](../historical/physics/on-the-electrodynamics-of-moving-bodies.pdf)
By solving the [asymmetries](http://en.wikipedia.org/wiki/Moving_magnet_and_conductor_problem) that arise in Maxwell’s equations, Einstein’s 1905 paper set the stage for current distributed systems work by demonstrating that there is no absolute frame of reference and by providing an upper bound on the speed of communication.
## Artificial Intelligence
[Analysis of Three Bayesian Network Inference Algorithms:Variable Elimination, Likelihood Weighting, and Gibbs Sampling](https://github.com/papers-we-love/papers-we-love/blob/master/artificial_intelligence/3-bayesian-network-inference-algorithm.pdf) by Rose F. Liu, Rusmin Soetjipto
Important machine learning papers
## External Papers
* [Top 10 algorithms in data mining](http://www.cs.uvm.edu/~icdm/algorithms/10Algorithms-08.pdf) - While it is difficult to identify the top 10, this paper contains 10 very important data mining/machine learning algorithms
* [A Few Useful Things to Know about Machine Learning](http://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf) - Just like the title says, it contains many useful tips and gotchas for machine learning
* [Random Forests](http://oz.berkeley.edu/~breiman/randomforest2001.pdf) - The initial paper on random forests
* [Traits: A Mechanism for Fine-Grained Reuse](http://scg.unibe.ch/archive/papers/Duca06bTOPLASTraits.pdf)
# Physics
* :scroll: [On the attraction of two perfectly conducting plates](on-the-attraction-of-two-perfectly-conducting-plates.pdf)
# Haskell
* :scroll: [Tackling the Awkward Squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell](../haskell/tackling-the-awkward-squad-monadic-input-output-concurrency-exceptions-and-foreign-language-calls-in-haskell.pdf) by Simon Peyton Jones
* :scroll: [Making a Fast Curry: Push/Enter vs. Eval/Apply for Higher-order Languages](../haskell/making-a-fast-curry-push-enter-versus-eval-apply-for-higher-order-languages.pdf) by Simon Marlow and Simon Peyton Jones. A classic... describes well the execution model GHC uses for Haskell, and catches the brilliant authors in a design pivot from original intuition to new conclusions based on empirical data.
* :scroll: [A Poor Man's Concurrency Monad](../haskell/a-poor-mans-concurrency-monad.pdf) by Koen Claessen. Paper describes how without adding any primitives to the language, you could define a concurrency monad transformer in Haskell.
# Experimental Algorithmics
Experimental algorithmics (sometimes also called empirical algorithmics) is the area within computer science that uses empirical methods to study the behaviour of algorithms.
It can be used in the analysis of algorithms [(Wikipedia)](http://en.wikipedia.org/wiki/Empirical_algorithmics).
## Included Papers
* [A Theoretician's Guide to the Experimental Analysis of Algorithms](http://davidsjohnson.net/papers/experguide.pdf) (David S. Johnson): An exceptionally well-written guide to correctly evaluating algorithms by experimental analysis. The techniques described in this paper do not only apply to theoreticians although the title might lead one to believe so. The examples used in this paper and specifically the method of listing straight-forward principles illustrated by pit-falls and pet peeves make for an excellent must-read for everyone intending to publish experimental algorithm results.
# Gamification
## External Papers
* [Defining Gamification - A Service Marketing Perspective](http://www.rolandhubscher.org/courses/hf765/readings/p17-huotari.pdf)
* [Design Requirements for Technologies that Encourage Physical Activity](http://www.katherineeveritt.com/papers/p457-consolvo.pdf)
* [Exploring the Potential of Gamification Among Frail Elderly Persons](http://gamification-research.org/wp-content/uploads/2011/04/12-Gerling.pdf)
* [From Game Design Elements to Gamefulness: Defining “Gamification”](http://dl.dropboxusercontent.com/u/220532/MindTrek_Gamification_PrinterReady_110806_SDE_accepted_LEN_changes_1.pdf)
* [MoviPill: Improving Medication Compliance for Elders - Using a Mobile Persuasive Social Game](http://www.ic.unicamp.br/~oliveira/doc/Ubicomp2010_MoviPill.pdf)
* [Removing Gamification from an Enterprise SNS](http://www.jennthom.com/papers/gamification.pdf)
* [Bimodal Multicast](http://www.csl.mtu.edu/cs6461/www/Reading/Birman99.pdf)
* :scroll: [A Mathematical Theory of Communication](http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf)
* [Differential Privacy](http://www.msr-waypoint.com/pubs/64346/dwork.pdf)
- How do we quantify the exposure an individual faces from being
included in a statistical dataset? How do we anonymize aggregated
data in a way that has formal guarantees?
## Clustering Algorithms
[On the resemblance and containment of documents](http://gatekeeper.dec.com/ftp/pub/dec/SRC/publications/broder/positano-final-wpnums.pdf) (Andrei Z. Broder)
# Categories
- android
- api_design
- artificial_intelligence
- audio_comp_sci
- biocomputing
- caching
- clojure
- clustering_algorithms
- combinatory_logic
- comp_sci_fundamentals_and_history
- computer_architecture
- computer_graphics
- computer_vision
- concurrency
- cryptography
- data_compression
- data_replication
- data_structures
- datastores
- design
- digital_currency
- distributed_systems
- economics
- ethics
- experimental_algorithmics
- functional_programming
- functional_reactive_programming
- gamification
- garbage_collection
- gossip
- haskell
- historical
- information_retrieval
- information_theory
- logic_and_programming
- machine_learning
- macros
- memory_management
- networks
- new_paradigms
- operating_systems
- pattern_matching
- physics
- plt
- processes
- program_verification
- robotics
- security
- smalltalk
- speech_recognition
- sports_analytics
- stringology
- testing
- time_series
- user_interfaces
- virtual_machines
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment