Algorithm Design and Analysis I

For this course only the syllabus is available.

Syllabus

  • Algorithmic solvability; time and space complexity; asymptotic notation and growth rates.
  • Abstract programming concepts: state space, task vs program, correctness; construction methods and proofs.
  • Data abstraction: ADTs and data structures; representation methods (array-based vs linked).
  • Core structures: arrays, stacks, queues, priority queues, lists, trees, and typical applications.
  • Selection problems: max, simultaneous min/max, k-th smallest in linear time; adversary lower-bound arguments.
  • Lower bounds for comparison sorting (worst-case and average-case); classification of sorting methods.
  • Sorting by selecting maxima (tournament/heap ideas); one-element-to-place methods; quicksort.
  • Sorting trees (binary/ balanced binary sorting trees); insertion sort and Shell sort.
  • Exchange sorts and data-independent sorting networks (bubble, heap/pyramid, Batcher networks).
  • Mergesort in arrays and as external sorting.
  • Searching in associative structures: linear and binary search; search trees; optimal BST; AVL trees; B-trees.