Data abstraction
Linear data abstractions (stacks, queues, lists, etc.) and their applications
Techniques for representing linear data abstractions
Object-oriented modeling (inheritance, composition, and reuse)
Preconditions, postconditions, invariants
Reasoning techniques (deduction rules, termination proofs, ...)
Basics of computational complexity
Derivation of the temporal complexity of an algorithm
Derivation of the spatial complexity of a data structure
Recursive formulation of a solution and recursive algorithms
Tree-like data abstractions (binary trees) and their applications
Techniques for representing tree-like data abstractions
Quantified measurements of program efficiency
Design and implementation of methods for testing and validating programs
|