I am interested in computational complexity theory, especially in the discussion of the P vs NP problem and complexity classes. Could you recommend some books that provide an in-depth introduction to these topics?
As someone else said already: Theory of Computation by Sipser is the go to intro book for this.
I'd recommend really reading the book front to back honestly. It helps to have a complete picture of everything that leads up to getting into complexity theory.
Scott Aaronson’s Quantum Computing Since Democritus is a clear, entertaining explanation of computational complexity theory as applied to both classical and quantum computers. I thoroughly enjoyed the book, and have recommended it to a number of friends.
I believe I used Introduction to the Theory of Computation by Sipser for this and it's probably the one textbook most universities are going to use.
Maybe for more in depth reference about the algorithms at play Introduction to Algorithms (Cormen) will complement nicely; I don't remember how much Sipser goes into describing the algos.
I personally used Sipser, but I think the book by Neil Jones [1] that takes a programming languages approach is really cool, and potentially more along the average HN reader's interests.
I'd recommend really reading the book front to back honestly. It helps to have a complete picture of everything that leads up to getting into complexity theory.
Sipser also has corresponding lectures that are available for free on YouTube here: https://www.youtube.com/watch?v=9syvZr-9xwk&list=PLidiQIHRzp....