“Science can amuse and fascinate us all, but it is engineering that changes the world.” — Isaac Asimov
Papers
Engineering is an ever-evolving field where staying updated with the latest research and methodologies is critical. Here’s a curated list of some of the best engineering papers across various disciplines, which have not only shaped the way we think about engineering but also have practical applications that can help engineers in their daily work. I’ve included a brief description of each paper and a link for you to explore further.
- The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary
- By Eric S. Raymond
This paper explores the contrasting software development models: the centralized “Cathedral” model and the decentralized “Bazaar” model. It’s a must-read for software engineers, especially those working in open-source projects, to understand the value of community-driven development.
Read here
- By Eric S. Raymond
- MapReduce: Simplified Data Processing on Large Clusters
- By Jeffrey Dean and Sanjay Ghemawat
This seminal paper from Google introduces MapReduce, a programming model that enables scalable processing of vast amounts of data on distributed systems. A critical read for anyone interested in data engineering or distributed systems.
Read here
- By Jeffrey Dean and Sanjay Ghemawat
- A Mathematical Theory of Communication
- By Claude E. Shannon
Considered the foundation of information theory, this paper has influenced fields from telecommunications to computer science. It introduces the concept of entropy in information, crucial for engineers working in signal processing, cryptography, and data compression.
Read here
- By Claude E. Shannon
- Go To Statement Considered Harmful
- By Edsger W. Dijkstra
In this influential critique, Dijkstra challenges the use of “go to” statements in programming, advocating for structured programming. This paper is fundamental to understanding the evolution of software engineering best practices.
Read here
- By Edsger W. Dijkstra
- End-to-End Arguments in System Design
- By Jerome H. Saltzer, David P. Reed, and David D. Clark
This paper introduces the end-to-end principle, which is a key design principle in computer networks and system architecture. Engineers working with distributed systems or network protocols will find this paper invaluable.
Read here
- By Jerome H. Saltzer, David P. Reed, and David D. Clark
- The Fifth Generation Project: History and Promise
- By Edward Feigenbaum and Pamela McCorduck
This paper discusses Japan’s ambitious Fifth Generation Project, which aimed to develop intelligent systems through parallel computing and artificial intelligence. While the project itself didn’t fully succeed, it spurred interest and research in AI.
Read here
- By Edward Feigenbaum and Pamela McCorduck
- Design Patterns: Elements of Reusable Object-Oriented Software
- By Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
Often referred to as the “Gang of Four” paper, this work introduces fundamental design patterns used in object-oriented programming. This paper is essential reading for any software engineer who wants to write clean, maintainable code.
Read here
- By Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
- Paxos Made Simple
- By Leslie Lamport
If you’re into distributed systems, Paxos is one of the key consensus algorithms you need to understand. This paper simplifies the understanding of Paxos, a challenging but foundational concept in ensuring fault tolerance in distributed computing.
Read here
- By Leslie Lamport
- Microservices: The Journey So Far and Challenges Ahead
- By Rajkumar Buyya and Amir Vahid Dastjerdi
This paper provides a comprehensive review of the microservices architecture, its benefits, and the challenges engineers face when implementing it. A crucial read for software engineers working on cloud-native applications and modern distributed architectures.
Read here
- By Rajkumar Buyya and Amir Vahid Dastjerdi
- The Case for the Reduced Instruction Set Computer (RISC)
- By David A. Patterson and Carlo H. Sequin
This influential paper made the case for RISC architecture, which forms the foundation of many modern processors, including those in smartphones and IoT devices. Engineers working in hardware design or low-level software development should definitely dive into this.
Read here
- By David A. Patterson and Carlo H. Sequin
- The Google File System
- By Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung
The Google File System (GFS) introduced a scalable, distributed file system that underpins much of Google’s infrastructure. It’s a key paper for understanding large-scale data storage and processing systems.
Read here
- By Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung
- SEI CERT C Coding Standard: Rules for Developing Safe, Reliable, and Secure Systems
- By Carnegie Mellon Software Engineering Institute
This paper provides rules for developing secure and reliable software systems in C, one of the most commonly used programming languages in embedded systems, operating systems, and high-performance computing.
Read here
- By Carnegie Mellon Software Engineering Institute
These papers are an excellent starting point for any engineer looking to deepen their understanding of core concepts in software engineering, hardware design, distributed systems, AI, and beyond. While some of them can be challenging, they offer insights that have shaped entire fields and remain relevant in the ever-changing world of engineering.
Happy reading!