CS/ECE 374: Stuff You Already Know
This page lists several basic mathematical concepts, data types, data structures, and algorithms that are typically covered in CS 173, CS 225, and earlier courses, with pointers to the corresponding Wikipedia entries. We assume you are already familiar with all of them. You can use any of these in your homework or exam solutions without providing further details or citing any source.
Because familiarity with these topics is crucial for success in 374, we are strictly enforcing the CS 173 and CS 225 prerequisites. Students who do not already have credit for both CS 173 and CS 225 (either from taking the course, passing the proficiency exam, or transferring credit from an equivalent course at another institution) cannot register for 374 without an override from the CS department. Instructors cannot offer prerequisite overrides.
A previous version of this page stated these prerequisites incorrectly, reflecting policy from previous semesters that has since been changed. I believe the current statement is consistent with department, college, and campus policy as of Fall 2019, but if there is an inconsistency, this page is incorrect.
For a detailed review of any of these topics, we strongly recommend using an actual textbook or one of the following online resources. (Beware that Wikipedia occasionally makes some very strange choices.)
Naive set theory
Binary relations, including functions, equivalence relations, and partial orders
Asymptotic notation (o, O, Θ, Ω, ω); comparing asymptotic growth rates
Evaluating simple summations (at least asymptotically)
Propositional logic (T, F, ¬, ∧, ∨, ⇒, ⇔) and first-order predicate logic (∀, ∃)
Basic proof techniques: direct, indirect, exhaustive case analysis, contradiction
Induction (or equivalently, proof by minimal counterexample), especially strong induction and structural induction
Graphs (both undirected and directed),
directed acyclic graphs
Abstract data types
Elementary data structures
You may use any of these data structures in your homeworks and exams without providing further details or citing any source. If you use a small modification of one of these data structures, just describe your changes; don't regurgitate the original data structure details.
You may use any of these algorithms in your homeworks and exams without providing further details or citing any source. If you use a small modification of one of these algorithms, just describe your changes; don't regurgitate the original algorithm details. We only care about worst-case running times in this class.