A Brief Course in Modern Math for Programmers
Programmers with the classical software engineering background need to learn more mathematics these days. The world is changing; we have to change, too. This book is dedicated to covering the issues that until recently were not very popular in software engineering: logic, monoids, algebraic structures, categories, and monads. All these topics are explained in the book, with no assumptions about the reader's educational background, with many examples. Most of the examples and explanations use two popular programming languages, JavaScript and Scala.
The book has no theorems and almost no proofs. The purpose of the book is to expand the reader's imagination and to open the gates to the beautiful world of mathematics—at the same time keeping in mind the practical usability of its ideas and notions in our daily coding practice.
Chapter 1. Functions
- General Ideas
- Main Definitions
- Special Classes of Functions
- Binary Relations
- Binary Operations
Chapter 2. Abstractions of Algebra
- Monoids
- Semigroups
- Magmas
Chapter 3. Partial Orders, Graphs, and DAGs
Chapter 4. Boolean Logic
- The Language of First-Order Logic
- Valid and Sound Arguments
- Proofs
- Normal Forms
Chapter 5. Non-Boolean Logic
- The Meaning of Non-Booleanness
- Proof in Intuitionistic Logic
Chapter 6. Quantifiers
- Universal Quantifier
- Existential Quantifier
- Connectives and Quantifiers in Boolean Logic
- Connectives and Quantifiers in Intuitionistic Logic
Chapter 7. Models and Theories
- Algebraic and Geometric Theories
- Models
Chapter 8. Category: Multi-Tiered Monoid
Chapter 9. Working with Categories
- Arrows in a Category
- Initial and Terminal Objects
Chapter 10. Manipulating Objects in a Category
- Product, Sum
- Equalizer, Coequalizer
- Pullback, Pushout
Chapter 11. Relations Between Categories
- Functors
- Building New Categories
- Product of Two Categories
- Sum of Two Categories
- Contravariant Functor
- Variance in Programming Languages
Chapter 12. Relations Between Functors
- Natural Transformations
- Adjoint Functors
- Limits
Chapter 13. Cartesian Closed Categories
- Basic Ideas
- Examples
- Definition: Bicartesian Closed Category
Chapter 14. Monads
- Main Ideas
- Every Adjunction Gives a Monad
Chapter 15. Monads: Algebras and Kleisli
- Category of Algebras
- Free Algebras as Functors
- Forgetting and Freedom
- Kleisli Category