Here are the books that have been reviewed and notes created for use in learning:
Resource: Category Theory for Programmers by Bartosz Milewski [BOOK PDF | NOTES]
Difficulty Rating: Advanced Beginner
Recommended Background: Having an understanding of linear algebra, knowing what computer programming types are, and awareness of functional programming will get you very far with this book. Knowing Haskell programming will be a strong benefit to you!
Description: This book serves as an introduction to Category Theory and is specifically directed towards programmers, engineers, and non-mathematicians. Milewski uses Haskell and C++ to explain how category theory operations work. He guides you through the basics of what you need to know to not only become proficient in category theory but also the required Haskell you will need to know. As its focus is more on providing basics to non-mathematicians, one may need to look at complementary texts to solidify understanding of certain topics (see Category Theory for the Sciences).