A Comprehensive Reading List for Programmers and Computer Science Enthusiasts
Table of Contents
- Computer Science and Programming
- Mathematics and Logic
- Philosophy and Social Sciences
- Science and Technology
- Fiction
- Non-Fiction
- Religion and Spirituality
- Reading List
- Metrics Frameworks: Prometheus, Cortex, Grafana
- Logging: Elasticsearch, Logstash, Filebeat, Kibana
- Distributed Tracing: OpenTelemetry, OpenTracing, Jaeger
- Profiling: JVM, go pprof
- Cloud-Native technologies: Kubernetes, Docker, Istio, AWS
- Languages: Golang, Ruby/Python, Java/Kotlin, Javascript/Typescript
- Automated correlation and anomaly detection
- Site performance tracking and management
- Building robust distributed systems
- Coding Exercises
- Metrics Frameworks: Prometheus, Cortex, Grafana
- Logging: Elasticsearch, Logstash, Filebeat, Kibana
- Distributed Tracing: OpenTelemetry, OpenTracing, Jaeger
- Profiling: JVM, go pprof
- Cloud-Native technologies: Kubernetes, Docker, Istio, AWS
- Languages: Golang, Ruby/Python, Java/Kotlin, Javascript/Typescript
- SPLASH 2023 Conference Presentations
- "Advancements in Neural Network-Based Program Synthesis"
- "Decentralized Systems: Challenges and Opportunities"
- "Human-Centric Design in Programming Languages"
- "Quantum Computing: Programming Paradigms and Language Design"
- "Secure Software Development: Beyond the Basics"
- "Green Computing: Sustainable Software Development"
- "Explainable AI: Bridging the Gap between Developers and Machine Learning Models"
- "Programming for Augmented and Virtual Reality Applications"
- "The Intersection of IoT and Programming Languages"
- "Responsible AI: Ethics and Bias in AI Development"
Computer Science and Programming
JavaScript
- JavaScript: The Good Parts by Douglas Crockford
- JavaScript: The Definitive Guide by David Flanagan
- Third-Party Javascript by Ben Vinegar and Anton Kovalyov
- Maintainable JavaScript by Nicholas C. Zakas
- Programming JavaScript Applications by Eric Elliott
- Test-Driven JavaScript Development by Christian Johansen
- JavaScript Patterns by Stoyan Stefanov
- Secrets of the Javascript Ninja by John Resig and Bear Bibeault
- Eloquent JavaScript: A Modern Introduction to Programming by Marijn Haverbeke
- Effective JavaScript by David Herman
- JavaScript Web Applications by Alex MacCaw
- Even Faster Web Sites: Performance Best Practices for Web Developers by Steve Souders
Functional Programming and Lambda Calculus
- An Introduction to Functional Programming through Lambda Calculus by Greg Michaelson
- The Reasoned Schemer by Daniel P. Friedman, William E. Byrd, and Oleg Kiselyov
Clojure
- The Joy of Clojure: Thinking the Clojure Way by Michael Fogus and Chris Houser
- Programming Clojure by Stuart Halloway and Aaron Bedra
- ClojureScript: Up and Running by Stuart Sierra and Luke VanderHart
- Clojure in Action by Amit Rathore
Scala
- Programming in Scala by Martin Odersky, Lex Spoon, and Bill Venners
- Functional Programming in Scala by Paul Chiusano and Rúnar Bjarnason
Other Programming Languages
- Learn You a Haskell by Miran Lipovača
- The Well-Grounded Rubyist by David A. Black
- Rails 3 in Action by Ryan Bigg and Yehuda Katz
- Rails 4 in Action by Ryan Bigg, Yehuda Katz, Steve Klabnik, and Rebecca Skinner
Computer Science Concepts
- Purely Functional Data Structures by Chris Okasaki
- Think Complexity by Allen B. Downey
- The Elements of Computing Systems: Building a Modern Computer from First Principles by Noam Nisan and Shimon Schocken
Software Design and Architecture
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
- Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans
Web Development and Security
- High Performance Websites by Steve Souders
- HTTP Cookies: Standards, Privacy, and Politics by David M. Kristol
- AdSentry: Comprehensive and Flexible Confinement of JavaScript-based Advertisements (paper)
- ToMaTo: a Trustworthy Code Mashup Development Tool (paper)
- An Empirical Study of Privacy-violating Information Flows in JavaScript Web Applications (paper)
Artificial Intelligence and Machine Learning
- Paradigms of Artificial Intelligence Programming by Peter Norvig
- The Signal and the Noise by Nate Silver
Mathematics and Logic
- The Best Writing on Mathematics 2012 edited by Mircea Pitici
- Tractatus Logico-Philosophicus by Ludwig Wittgenstein
Philosophy and Social Sciences
- The Uses of Knowledge in Society by Friedrich Hayek
- The Architecture of Complexity by Herbert A. Simon
- Thinking Fast and Slow by Daniel Kahneman
- Antifragile by Nassim Nicholas Taleb
- The Irony of American History by Reinhold Niebuhr
- Understanding Power by Noam Chomsky
- The Social Conquest of Earth by Edward O. Wilson
Science and Technology
- The Age of Insight by Eric Kandel
- Doing Capitalism in the Innovation Economy by William H. Janeway
Fiction
Science Fiction
- The Dispossessed by Ursula K. Le Guin
- Neuromancer by William Gibson
- Snow Crash by Neal Stephenson
- Foundation by Isaac Asimov
- Ender's Game and Speaker for the Dead by Orson Scott Card
- Do Androids Dream of Electric Sheep? by Philip K. Dick
- A Fire Upon the Deep by Vernor Vinge
- The Windup Girl by Paolo Bacigalupi
- Anathem by Neal Stephenson
- Accelerando by Charles Stross
Other Fiction
- 1Q84 by Haruki Murakami
- Norwegian Wood by Haruki Murakami
- Infinite Jest by David Foster Wallace
- American Psycho by Bret Easton Ellis
- The Brothers Karamazov by Fyodor Dostoevsky
- 1984 by George Orwell
Non-Fiction
- Quiet: The Power of Introverts in a World That Can't Stop Talking by Susan Cain
- The Great Thoughts by George Seldes
Religion and Spirituality
- The Vision of Buddhism by Roger J. Corless
- Facets of Buddhism by Shotaro Iida
- The Tao is Silent by Raymond M. Smullyan
Reading List
Metrics Frameworks: Prometheus, Cortex, Grafana
- Prometheus: Up & Running - Infrastructure and Application Performance Monitoring by Brian Brazil
- Prometheus: The Definitive Guide by Julius Volz
- Cortex documentation and tutorial
- Grafana documentation and tutorial
Logging: Elasticsearch, Logstash, Filebeat, Kibana
- Elasticsearch: The Definitive Guide by Clinton Gormley and Zachary Tong
- Logstash documentation and tutorial
- Filebeat documentation and tutorial
- Kibana documentation and tutorial
Distributed Tracing: OpenTelemetry, OpenTracing, Jaeger
- OpenTelemetry documentation and tutorial
- OpenTracing documentation and tutorial
- Jaeger documentation and tutorial
- Distributed Tracing with Jaeger by Juraci Paixão Kröhling and Kevin Sookocheff
Profiling: JVM, go pprof
- Java Performance: The Definitive Guide by Scott Oaks
- Go Profiling Made Easy with go pprof by Julien Schmidt
- Profiling Go Programs by Dave Cheney
Cloud-Native technologies: Kubernetes, Docker, Istio, AWS
- Kubernetes: Up & Running: Dive into the Future of Infrastructure by Brendan Burns, Joe Beda, and Kelsey Hightower
- Docker documentation and tutorial
- Istio documentation and tutorial
- AWS documentation and tutorial
Languages: Golang, Ruby/Python, Java/Kotlin, Javascript/Typescript
- Effective Go by The Go Authors
- Python for Everybody: Exploring Data in Python 3 by Charles Severance
- Java Concurrency in Practice by Brian Goetz
- JavaScript: The Definitive Guide by David Flanagan
Automated correlation and anomaly detection
- Machine Learning: A Probabilistic Perspective by Kevin P. Murphy
- Anomaly Detection: Principles and Algorithms by Huan Liu and Lei Yu
- Time Series Analysis and Its Applications: With R Examples by Robert H. Shumway and David S. Stoffer
Site performance tracking and management
- Web Performance: The Definitive Guide by Steve Souders
- High Performance Browser Networking by Ilya Grigorik
- The Art of Capacity Planning: Scaling Web Resources by John Allspaw
Building robust distributed systems
- Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services by Brendan Burns
- Release It!: Design and Deploy Production-Ready Software by Michael T. Nygard
Coding Exercises
Metrics Frameworks: Prometheus, Cortex, Grafana
- Set up a Prometheus server to monitor a simple application and create a Grafana dashboard to display the collected metrics.
Logging: Elasticsearch, Logstash, Filebeat, Kibana
- Configure an ELK stack (Elasticsearch, Logstash, and Kibana) to ingest logs from a sample application and build a dashboard to visualize log data.
Distributed Tracing: OpenTelemetry, OpenTracing, Jaeger
- Implement distributed tracing using OpenTelemetry and Jaeger for a simple application and explore the traces using the Jaeger UI.
Profiling: JVM, go pprof
- Profile a simple Java or Go application using the respective profiling tools and analyze the results to identify performance bottlenecks.
Cloud-Native technologies: Kubernetes, Docker, Istio, AWS
- Deploy a sample application using Kubernetes and Istio, containerize it with Docker, and host it on AWS.
Languages: Golang, Ruby/Python, Java/Kotlin, Javascript/Typescript
- Implement a simple application in a programming language of your choice from the list.
SPLASH 2023 Conference Presentations
"Advancements in Neural Network-Based Program Synthesis"
- Description: Explore recent developments in using neural networks for automated program synthesis, emphasizing efficiency, accuracy, and applications.
"Decentralized Systems: Challenges and Opportunities"
- Description: Discuss the challenges and potential solutions for building robust and scalable decentralized systems, focusing on blockchain and distributed ledger technologies.
"Human-Centric Design in Programming Languages"
- Description: Present the importance of considering human factors in programming language design to enhance developer experience, productivity, and code quality.
"Quantum Computing: Programming Paradigms and Language Design"
- Description: Delve into the programming paradigms and languages for quantum computing, exploring how they differ from classical programming approaches.
"Secure Software Development: Beyond the Basics"
- Description: Explore advanced strategies and techniques for building secure software, addressing emerging threats and providing practical guidance for developers.
"Green Computing: Sustainable Software Development"
- Description: Discuss the role of software development in promoting environmental sustainability, focusing on energy-efficient algorithms, data centers, and best practices.
"Explainable AI: Bridging the Gap between Developers and Machine Learning Models"
- Description: Highlight the importance of explainability in AI models and showcase methods to make complex AI models more interpretable and understandable for developers.
"Programming for Augmented and Virtual Reality Applications"
- Description: Present best practices and challenges in developing applications for augmented and virtual reality, emphasizing programming techniques and emerging trends.
"The Intersection of IoT and Programming Languages"
- Description: Explore how programming languages can be tailored to efficiently address the unique challenges and opportunities posed by the Internet of Things (IoT) ecosystem.
"Responsible AI: Ethics and Bias in AI Development"
- Description: Delve into the ethical considerations and potential biases in AI development, and propose strategies to ensure responsible and fair AI models and applications.