The Artima Developer Community


Modern Mathematics cover

First Edition
PrePrint™ Version 1
Published
July 24, 2024
314 pages (eBook)

Modern Mathematics (PrePrint™)
Cutting-edge math for today's coder

by Vlad Patryshev

The world is changing, and mathematics itself is undergoing a great revolution. The foundations of computer science are being reconsidered and updated. Notions that were officially designated as abstract nonsense even by algebraists are becoming a daily reality in our coding practice. The purpose of this book is to provide you with food for thought, material for imagination, and ideas from modern mathematics that will deepen your understanding of computation and programming. Topics covered include:

  • Logic
  • Model theory
  • Set theory
  • Category theory
  • Lambda calculus
This book is focused on areas of mathematics that illuminate how computing works. It covers a wide range of ideas that will give you insights into the nature of programming that will help you avoid errors when you design and build software.

This edition of the book is complete except for a few finishing touches. We expect to release a final version of the eBook before the end of October, 2024, and that the paper book will ship in December. This PrePrint™ early access program will allow you to learn about modern mathematics from the source and provide helpful feedback to the authors that will make the book even better.

-->

If you purchase just the eBook for $28.95, you will be entitled to receive periodic updates as the author completes the book, as well as the final eBook when the book is finished, for no additional charge. If you purchase eBook + Paper Book combo for $66.95, you will be entitled to the PDF eBook updates, and we'll ship you the paper book when it is published, on or around . (Once the book has been printed, you'll be able to purchase just the paper book here for $49.95.)

Buy It Now

Format
Quantity Volume
Discounts

If you purchase the eBook, you will be entitled to receive periodic updates as errata are fixed, for no additional charge. If you purchase a paper book, it will be shipped as soon as it comes into stock.

If you purchase the combo, the paper book will be shipped when it is published.

About the book

The purpose of this book is to inspire practicing programmers with mathematical notions that are becoming increasingly relevant to daily coding practice. For example, types can be viewed as objects in category theory. You need monoids to apply map/reduce or implement and use efficient data storage structures, like finger tree. You need monads and a Kleisli category to explain and formalize side effects in your application. A select where clause in SQL is a categorical construct of a pullback.

The scope of the book is focused on the modern mathematics you need to dive deeply into how computing works. Much of this material is not included in regular mathematics courses for engineers. Mathematics courses, except for the version studied by post-grads in the best universities, mostly consist of centuries-old ideas and notions. These ideas may be good, but the world of ideas in computing is already much further ahead.

This book is not for mathematicians. They should find better sources of information or inspiration, those that are mathematically strict, contain many theorems and exercises, and are probably targeting a more distant future. For example, there is no topology in this book, no homotopy, no functional analysis, and no equations. No linear algebra, either. These days, linear algebra is extremely popular in machine learning, but machine learning is not programming.

Reading this book will help you in your daily programming tasks, because having a sound theory helps you avoid mistakes. For example, it is well known how to write a parser for a language or data structure. You cannot, for example, parse HTML with a regular expression, because HTML is context free. Learning about the ideas presented in this book will give you insights that will make you a better programmer.

Table of contents

Contents
List of Figures
List of Tables
List of Listings
Acknowledgments
Introduction
1. Functions
2. Abstractions of Algebra
3. Partial Orders, Graphs, and DAGs
4. Boolean Logic
5. Non-Boolean Logic
6. Quantifiers
7. Models and Theories
8. Category: Multi-Tiered Monoid
9. Working with Categories
10. Products and Sums
11. More Constructions in a Category
12. Relations Between Categories
13. Relations Between Functors
14. Cartesian Closed Categories
15. Monads
16. Monads: Algebras and Kleisli
17. Untyped Lambda Calculus
18. Typed Lambda Calculus
19. Curry-Howard-Lambek Correspondence
Answers to Exercises
Conclusion
Glossary
Bibliography
About the Author
Index

About the author

Vlad Patryshev is a software developer living in South Carolina. He was born in Arkhangelsk, Russia, and spent most of his life in St.Petersburg. After graduating from St.Petersburg University, he followed his hobby of writing code. Meanwhile, he was interested in category theory and toposes, and worked in that area for a while.

In 1998 Vlad and his wife Julia moved to San Francisco Bay Area in California, and worked in a variety of software companies. Google keyboard was his project. Vlad was also teaching logic and formal methods at Santa Clara University between 2013 and 2021, and was an organizer of Scala and Category Theory meetups. His wife Julia is an artist, working with ceramics, and taught art at Bay Area colleges.

Copyright © 2024 Artima, Inc. All rights reserved.