
Here, the authors strive to change the way logic and discrete math are taught in computer science and mathematics: while many books treat logic simply as another topic of study, this one is unique in its willingness to go one step further. The book traets logic as a basic tool which may be applied in essentially every other area.
A Logical Approach to Discrete Math by David Greis and Fred Schneider, https://link.springer.com/book/10.1007/978-1-4757-3837-7
I'm self-taught so for me it was learning how to write proofs that gave me a big boost in being able to branch out into different area of interest and not give up. :)
The semantics are what matter (at least in most programming languages)!
To me, syntax wise, I just can’t stand inline type definitions. CrabML becomes close to what I can grok syntax-wise. I spent many years with C++ and I can read TyoeScript… but to me they’re examples of bad syntax, not role models.
However if you read A Logical Approach to Discrete Math or Programming in the 1990s you’ll know just how syntax matters… most programming languages can’t even reach this level of which is why I think semantics are more important.
Structure and Interpretation of Computer Programs
Purely Functional Data Structures
Programming in the 1990s
A Logical Approach to Discrete Math
The content is so valuable that it deserves a year in high school in my opinion, though that is a minority view where I live.
The syntactic approach is really useful as a programmer. A Logical Approach to Discrete Math[0] teaches programmers how to develop proofs in this style using logic and syntactic substitution. Once shown how easy it is to achieve rigour it is hoped that work-a-day programmers can formulate their own proofs and develop stronger specifications using mathematical tools.
I'm not a formally trained mathematician and am completely self-taught as a programmer but with some background in set and graph theory I found it approachable. It's certainly a good companion text to learning more practical systems like TLA+ or Lean.
[0] https://www.amazon.ca/Logical-Approach-Discrete-Math/dp/0387...
I have found that writing software that automatically solves elementary algebra equations using the techniques humans use is also a very good method for understand how math works at a deep level. Here is a demo of a step-by-step equation solver that I am currently writing:
Contact me by email if you are interested in learning more about either of these options (my email address is in my profile).