There's this book if you want to learn some discrete math and functional programming (with SML) at the same time.
It'll teach you some CS fundamentals while also exposing you to a functional language, which will make picking up Haskell easier. Ocaml is also a really nice language that's also in the ML family.
There's also the Pierce's Software Foundations which teaches automated theorem proving with Coq. You can find it online for free.