STRUCTURED PROGRAMMING IN C LANGUAGE
Ma 599
Prerequisites: Discrete Structures, The Calculus
Course Description
Realistic models of computation used to
study resource requirements. Topics
include Turing machines, computation models and techniques, upper bounds,
sorting, searching, matrix multiplications, fast Fourier transforms, Sauer
bounds, NP-complete problems.
Goals of the Course
1. To
enable students to determine resource requirements of computational problems
2. To
enable the student to design resource-efficient algorithms
3. To
enable students to give a precise analysis of the dynamic behavior of
algorithms
4. To
enable students to design for optimal solutions
5. To
enable students to design algorithms for problems whose solution is intractable.
Course Content
A. Background
1. Turing
machine models and Markov algorithms
2. Random
access models
3. Circuits
and straightline programs
4. Complexity
measures in various models
5. Computation
techniques: divide and conquer, dynamic programming, linear recurrences, proofs
of correctness.
B. Upper
Bounds
1. Data
structure algorithms, binary search, union find Droblems, prioritv sieves
2. Radix sorting, sorting in time o, upper and lower bounds
3. Combinatorial
and graph algorithms
a.
Depth first search
b.
Graph isomorphism
c.
Path Droblems
4. String matching problems
C. Algebraic Algorithms
1. Matrix multiplication
a. Strossen's algorithm
b. Problems reducible to matrix
multiplication
2. Fast Fourier transform
a. Discrete fast Fourier transform
b.
Polynomial multiplication,
interpolation
D. Lower Bounds
1. Diagonalization
2. Reducibilities
3. NP - complete problems
4. DSPACE, DTIME, NSPACE, NTIME hierarchies