How did the engines improve since Deep Blue? Computer chess engines have gotten better since Deep Blue beat Kasparov in 1997.

Did the algorithms get better, or were the improvements mostly due to the same algorithms running faster thanks to faster hardware, etc.?

If the former, are these algorithmic improvements public?

And if so, what were the improvements? Where can I read about them?
Maybe you can take a look at TalkChess, a forum dedicated to computer chess. I found a recent thread that might be interesting for you: Progress in 30 years by four intervals of 7-8 years

A couple of matches between (former) top engines are played on the same hardware. The test suggests that in the recent years (2002-2017), the gain is mainly made by software improvements. In the test, Stockfish (2017) scored an impressive 94/100 against RobboLito (2009), while RobboLito, on its turn, crushed Shredder (2002) with 92/100.

An important remark: as parallel computing is not implemented in the older engines, the test was performed on a single core. As a result, the hardware gain by parallel machines is not measured. On the other hand, you could argue that parallel computing is also a software gain: it is not easy to design and implement an efficient and well-scaling parallelization for the search algorithm.

The Stockfish engine is open source, so the algorithmic improvements are public. A lot of documentation can be found on https://chessprogramming.wikispaces.com