Mathematical Foundations for Computing

  1. Algorithms and Complexity
    1. The Concept of an Algorithm
      1. Definition of Algorithm
        1. Properties of Algorithms
          1. Examples of Algorithms
            1. Algorithm vs Program
              1. Correctness of Algorithms
              2. Pseudocode Conventions
                1. Writing Pseudocode
                  1. Control Structures in Pseudocode
                    1. Input and Output in Pseudocode
                      1. Variable Assignment
                        1. Comments and Documentation
                        2. Growth of Functions
                          1. Asymptotic Notations
                            1. Big-O Notation
                              1. Big-Omega Notation
                                1. Big-Theta Notation
                                  1. Little-o Notation
                                    1. Little-omega Notation
                                    2. Properties of Asymptotic Notations
                                      1. Transitivity
                                        1. Reflexivity
                                          1. Symmetry
                                            1. Transpose Symmetry
                                            2. Common Growth Functions
                                              1. Constant
                                                1. Logarithmic
                                                  1. Linear
                                                    1. Linearithmic
                                                      1. Quadratic
                                                        1. Cubic
                                                          1. Polynomial
                                                            1. Exponential
                                                              1. Factorial
                                                              2. Comparing Growth Rates
                                                                1. Hierarchy of Growth Functions
                                                                  1. Limit-Based Comparisons
                                                                2. Algorithmic Complexity
                                                                  1. Time Complexity
                                                                    1. Measuring Time Complexity
                                                                      1. Analyzing Loops
                                                                        1. Analyzing Recursion
                                                                          1. Nested Loops
                                                                          2. Space Complexity
                                                                            1. Measuring Space Complexity
                                                                              1. Auxiliary Space
                                                                                1. In-place Algorithms
                                                                                  1. Trade-offs Between Time and Space
                                                                                  2. Best-Case, Worst-Case, and Average-Case Analysis
                                                                                    1. Definitions and Examples
                                                                                      1. Practical Implications
                                                                                        1. Amortized Analysis
                                                                                        2. Complexity Classes
                                                                                          1. P and NP
                                                                                            1. Polynomial Time
                                                                                              1. Exponential Time