CIS 575

Prerequisites by Topic

  • Significant experience programming in some high-level programming
    language, preferably Java, C, or C++
  • Familiarity with standard data structures: lists, stacks, queues,
    trees, search trees, hash tables, graphs
  • Understanding of basic concepts of propositional
    and predicate logic and its use in program verification
  • Experience in writing mathematical proofs in natural language
  • Understanding of algebra (functions, solution of equations,
    limits, summations), calculus (derivatives and integrals),
    combinatorics, and recurrence relations

Knowledge and Skills Acquired

  • Mastery of:
    • Analysis of time- and space-complexity of algorithms
    • Various sorting algorithms and their tradeoffs
    • Various advanced data structures and their tradeoffs
    • Proving theorems about algorithms
  • Familiarity with:
    • Divide-and-conquer
    • Greedy algorithms
    • Dynamic Programming