Building Blocks for Theoretical Computer Science by Margaret M. Fleck.
From the preface:
This book teaches two different sorts of things, woven together. It teaches you how to read and write mathematical proofs. It provides a survey of basic mathematical objects, notation, and techniques which will be useful in later computer science courses. These include propositional and predicate logic, sets, functions, relations, modular arithmetic, counting, graphs, and trees. And, finally, it gives a brief introduction to some key topics in theoretical computer science: algorithm analysis and complexity, automata theory, and computability.
To whet your interest:
- Table of Contents
- Preface
- Chapter 1: Math Review
- Chapter 2: Logic
- Chapter 3: Proofs
- Chapter 4: Number Theory
- Chapter 5: Sets
- Chapter 6: Relations
- Chapter 7: Functions and onto
- Chapter 8: Functions and one-to-one
- Chapter 9: Graphs
- Chapter 10: 2-way Bounding
- Chapter 11: Induction
- Chapter 12: Recursive Definition
- Chapter 13: Trees
- Chapter 14: Big-O
- Chapter 15: Algorithms
- Chapter 16: NP
- Chapter 17: Proof by Contradiction
- Chapter 18: Collections of Sets
- Chapter 19: State Diagrams
- Chapter 20: Countability
- Chapter 21: Planar Graphs
- Appendix A: Jargon
- Appendix B: Acknowledgements and Supplementary Readings
- Appendix C: Where Did It Go?
Enjoy!
I first saw this in Nat Torkington’s Four short links: 11 September 2014.