# data[].attributes.body
Control Structures

Combining Control Structures, Example:

Bubble Sort

Flowcharts

Modular design with Procedures/Subroutines

Recursion structures

# data[].attributes.body
Data Types and Data Structures

Variables

Lists

Arrays

Queues

Stacks

Trees, Example:

Tree Sort

# data[].attributes.body
Polya’s problem solving techniques applied to algorithm design

Top Down Methodology including:

breaking a problem into sub-problems

choosing a suitable data structure

construction of loops

establishing initial conditions for loops

finding the iterative construct, and termination of loops

Bottom Up Methodology

# data[].attributes.headline
The use of iterative structures to solve problems

# data[].attributes.subject
The use of iterative structures to solve problems

# data[].attributes.body
Learning to use iterative structures to design the following example algorithms:

Sequential Search

Insertion Sort

Selection Sort

Bubble Sort

# data[].attributes.headline
The use of recursive structures to solve problems

# data[].attributes.subject
The use of recursive structures to solve problems

# data[].attributes.body
Linear Recursion

Binary Recursion

Non-linear Recursion

Mutual Recursion, Examples:

Binary Search

Binary Tree Traversal

Recursive Quick Sort

# data[].attributes.body
Logical Form and Logical Equivalences

Conditional Statements

Valid and Invalid arguments

# data[].attributes.body
Introduction to Predicates and Quantified Statements

Statements containing Multiple Quantifiers

# data[].attributes.body
Arguments with quantified statements

Proof of correctness of algorithms with assertions

Assignment rule and Conditional rule

General proof Techniques including:

Exhaustive proof

Direct proof

Contraposition, and Contradiction

# data[].attributes.body
Using induction to prove loop rule, Example:

Euclidean Algorithm

Recursively Defined Sequences

Recursively Defined Sets

Recursively defined operations

# data[].attributes.headline
Recurrence relations, Analysis of Algorithm Efficiency

# data[].attributes.subject
Recurrence relations, Analysis of Algorithm Efficiency

# data[].attributes.body
Linear First Order Recurrence Relations

Linear Second-order Relations

Divide-and-Conquer Recurrence Relations

Real valued functions of a real variable and their graphs

Big-O

Big-Omega and Big-Theta notations

# data[].attributes.body
Time efficiency of Sequential Sort, Insertion Sort,

Exponential and Logarithmic Functions: their Graphs and Orders, Application to Binary Search, Merge Sort algorithms

# data[].attributes.body
Review and consolidation of the module content