Get started with computer science papers


One of the best ways to learn and improve in your field is doing something on your own, either as a part of your job or a weekend project. If you can't do that, the next best thing is to read. In this post, we'll introduce you to some of interesting papers on open source, large scale projects. Reading white papers is a skill in its own, but as almost anything else, it can be learnt.

In this article i'll list 5 white papers. All these papers are based on tools or techniques that most of software developers have come across on some point in time in their careers. At least I think these papers are approachable and as long as you have some programming background, these papers should make perfect sense to you.

Cassandra - A Decentralized Structured Storage System

Cassandra is a distributed storage system for managing very large amounts of structured data spread out across many commodity servers. Since it was launched in 2010, Cassandra has consistently been one of renowned large scale storage system to search, store and manage large volumes of data. This paper is written by creators of Cassandra, Avinash Lakshman and Prashant Malik from Facebook. The paper offers a high level overview of Cassandra architecture, data model and inner workings.

Link to Paper: PDF

Simple testing can prevent most critical failures

Large production systems fail on a regular basis. Authors of the paper offer a viewpoint that most of these failures could have been avoided by performing simple testing on error handling code. Authors present three simple rules from the bugs that have lead to some of the catastrophic failures, and developed a static checker, capable of locating these bugs. They make the case that over 30% of the catastrophic failures would have been prevented with the static checker.

Link to Paper: PDF

Designing Scalable Software for Multicore Processors

Scalability is often thought of implementation property instead of the interface a system offers. This paper presents a new approach to scalability that starts at a higher level: the software interface. This makes reasoning about scalability possible before an implementation exists and before the necessary hardware is available to measure the implementation’s scalability. It can highlight inherent scalability problems, leading to alternate interface designs.

Link to Paper: PDF

No silver bullet

Software projects that may look simple in beginning can get marred in missed schedules, over blown budgets and flawed products. The author in this paper makes the case that managers and other stakeholders should stop looking for a silver bullet that fixes all the problems. Instead they offer specific guidelines that when adopted in right context can help manage the complexity.

Link to Paper: PDF

Simple, Fast, and Practical non-blocking and blocking concurrent queue algorithms

In this paper, authors offer algorithms for blocking and non-blocking queues that are simple, fast, and practical. Queues are one of the most popular data structures - performance of a queue used in a distributed system makes a big impact on overall throughput.

Link to Paper: PDF

Further reading

In this post we took a look at some interesting white papers. If this post sparked your interest in computer science papers, refer to this GitHub repository called Papers we love, it is one of most comprehensive collections of white papers on software. Papers we love also runs this community of people interested in reading papers. You can look for a local chapter here.