- 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]] - [[Challenge: Write a proof]] - [[Solution: 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]]