Units for which only a subset of the topics must be covered:
¨DS3. Proof techniques: The structure of formal proofs; proof techniques: direct, counterexample, contraposition, contradiction; mathematical induction
¨PF2. Algorithms and problem-solving: Problem-solving strategies; the role of algorithms in the problem-solving process; the concept and properties of algorithms; debugging strategies
¨PF3. Fundamental data structures: Primitive types; arrays; records; strings and string processing; data representation in memory; static, stack, and heap allocation; runtime storage management; pointers and references; linked structures
¨AL1. Basic algorithmic analysis: Big O notation; standard complexity classes; empirical measurements of performance; time and space tradeoffs in algorithms
¨AL3. Fundamental computing algorithms: Simple numerical algorithms; sequential and binary search algorithms; quadratic and O(N log N) sorting algorithms; hashing; binary search trees
¨AR1. Digital logic and digital systems: Logic gates; logic expressions
¨PL6. Object-oriented programming: Object-oriented design; encapsulation and informationhiding; separation of behavior and implementation; classes, subclasses, and inheritance; polymorphism; class hierarchies
¨SE1. Software design: Fundamental design concepts and principles; object-oriented analysis and design; design for reuse
¨SE2. Using APIs: API programming; class browsers and related tools; programming by example; debugging in the API environment
¨SE3. Software tools and environments: Programming environments; testing tools
¨SE5. Software requirements and specifications: Importance of specification in the software process
¨SE6. Software validation: Testing fundamentals; test case generation
¨