This course is an introduction to the fundamental mathematical concepts and structures used in computer science. Topics include propositional and predicate logic; sets, functions and relations; mathematical induction, counting principles and recurrences; trees and graphs. Topics implemented in Java.

- Propositional Logic
- Translating Natural Language to Propositional Logic
- Semantic Entailment & Syntactic Consequence
- Resolution
- First-Order Logic
- Normal Forms
- First-Order Resolution
- Mathematical Induction
- Strong Mathematical Induction
- Sequences and Series
- Recurrences
- Sets
- Operations on Sets
- Permutations and Combinations
- Permutations and Combinations II
- Paradoxes, Pigeons and Halting
- Formal Languages
- Regular Expressions I
- Regular Expressions II
- Deterministic Finite State Automaton