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.