https://cas.umw.edu/computerscience/files/2024/09/computerscience-scaled.jpg

Computer Science

For cognitive context, see Computability and General Culture in Computer Science and AI.

Introductory

Petzold, Code

Eck, The most complex machine

Brookshear & Brylow, Computer science: an overview

Dewdney, The New Turing Omnibus

Intermediate

Rosen, Discrete mathematics and its applications

Graham, Knuth & Patahsnik, Concrete mathematics

Sipser, Introduction to the theory of computation

Girard, Lafont & Taylor, Proofs and types

Garey & Johnson, Computers and intractability

Arora & Barak, Computational complexity

Goldreich, Computational complexity

Kleinberg & Tardos, Algorithm design

Motwani & Raghavan, Randomized algorithms

Miztenmacher & Upfal, Probabilty and computing

Aho, Hopcroft, Ullman, Data structures and algorithms

Aho, Hopcroft, Ullman, Design and analysis of computer algorithms

Pierce, Types and programming languages

Aho et al, Compilers

Advanced

Abelson & Sussman, Structure and interpretation of computer programs

Cormen et al, Introduction to algorithms

Knuth, The art of computer programming

Pierce (ed), Advanced topics in types and programming languages

Cook & Nguyen, Logical foundations of proof complexity

Krajicek, Bounded arithmetic, propositional logic and complexity theory

Networks

Tanenbaum & Weatherall, Computer networks

Concurrent and distributed

Bryant& O'Hallaron, Computer systems: a programmer's perspective

Ben Ari, Principles of concurrent and distributed programming

Herlihy et al, The Art of Multiprocessor Programming

Raynal, Concurrent Programming

Attya & Welch, Distributed Computing

van Steen & Tannenbaum, Distributed systems

Lynch, Distributed algorithms

Cachin et al, Introduction to Reliable and Secure Distributed Programming

High-performance computing

Eijkhout, The art of HPC

Fox et al, Parallel computing works

Hager & Wellein, Introduction to high performance computing for scientists and engineers

Sterling et al, High performance computing

Herlihi & Shavit, The art of multiprocessor programming

Jeffers & Reinders, High performance parallelism pearls (vols 1 &2)

Dongarra et al, The sourcebook of parallel computing

Operating systems

Silberschatz et al, Operating Systems Concepts

Tanenbaum & Bos, Modern operating systems

McHoes & Flynn, Understanding operating systems (vols 1 & 2)

Cryptography

Hoffstein et al, An introduction to mathematical cryptography

Katz & Lyndell, Introduction to modern cryptography

Goldreich, Foundations of cryptography (vols 1 & 2)

Stinson, Cryptography

Menezes et al, Handbook of applied cryptography

Computer architecture

Tanenbaum & Austin, Structured computer organization

Henessy & Patterson, Computer architecture

Henessy & Patterson, Computer organization and design

Artificial intelligence

Foundational

Russell & Norvig, Artificial Intelligence: A Modern Approach

Applied

Wolfram, What is ChatGPT doing ... and why does it work ?

Amidi & Amidi, Super study guide: transformers and large language models

Ksmath et al, Large language models: a deep dive

Raschka, Build a large language model

Alto, Building LLM powered applications

Phoenix & Taylor, Prompt engineering for generative AI

Berryman & Ziegler, Prompt engineering for LLMs

Huyen, Designing machine learning systems

Huyen, AI engineering

Multi-agent systems

Woolridge, An Introduction to MultiAgent Systems

Weiss, Multiagent systems

Poole & Macworth, Artificial Intelligence: Foundations of Computational Agents

Shoham & Leyton-Brown, Multiagent systems

Woolridge, Reasoning about rational agents

Nisan et al, Algorithmic game theory

Cai & Lin, Directed Cooperation of Multi-Agent Systems

Pareschi & Toscani, Interacting multiagent systems

Xiang, Probabilistic reasoning in multiagent systems

Piccoli, Control of multi-agent systems

Wang et al, Mathematics of multiagent learning systems

Krishnan, AI Agents: Evolution, Architecture, and Real-World Applications