A Comprehensive Reading List for Programmers and Computer Science Enthusiasts

Table of Contents

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.

Author: Jason Walsh

j@wal.sh

Last Updated: 2024-08-10 03:16:43