Introduction
Welcome
What you should know
Using the exercise files
Discrete Math Uses
Basics of discrete mathematics
Discrete math for programming
Real-world discrete math
Abstract discrete math
Sets
Objects as sets
Set notation
Set operations
Power sets
Sequences and sums
Recursion
Cardinality, disjointness, and partitions
Sets from Cartesian products
Challenge - Practice with sets
Solution - Practice with sets
Setting Up SML
Functional programming
Datatypes
Characters and strings
Recursive functions
Challenge - Learn SML
Solution - Create new data types
Analyzing Data Sequences
Use SML to create lists
Perform functions on lists
Create datatypes that use lists
Challenge - Model a lunch order
Solution - Model a lunch order
Effective Arguments and Defensible Decisions
Valid reasoning and inference
Truth tables
Identify and evaluate predicates
Conditional propositions
Valid arguments
Rules of inference
Prove logical equivalence
Challenge - Write truth tables
Solution - Write truth tables
Proofs Made Easy
Write a general outline for a proof
Write subset proofs
Evaluate conditional proofs
Understand biconditional proofs
Prove with mathematical induction
Write a proof
Write a proof
Advanced Discrete Math Topics
Visualize data with graph theory
Network optimization with trees
Event probability
Cryptography
Challenge - Advanced techniques
Solution - Advanced techniques
Conclusion
Next steps