Software Foundations is published online. It’s pretty amazing. It’s both a study of the foundations of programming languages, a use of Coq (“an industrial-strength proof assistant), and a more advanced introduction to functional programming. The book is aimed at Ph.D. students and researchers, but should be understandable by someone at the upper end of the undergraduate level.
Here’s a collection of solutions to the exercises in the book: https://github.com/dragonwasrobot/software-foundations-exercises