Design and Analysis of Algorithms

Course Syllabus
Jan 17, 1999

Course Objectives
The student will learn various algorithm design techniques and how to apply them. Several programs will be written implementing these techniques. The student will also learn the basic tools required for analyzing algorithms with respect to time and space consumed and will use these tools to analyze numerous algorithms. Programs will also be written to aid in the analysis of certain algorithms.
  1. The Course Computing Environment
    1. Email
    2. Course Web Pages
    3. Class Accounts on the erin server.
    4. Using FTP
    5. Submitting your work - homework, assignments, etc.

  2. Intro. to Algorithms
    1. What is an algorithm?
    2. Statement of algorithms
    3. Analyzing and Designing Algorithms

  3. Using Simulation as an Aid to Analysis
      Problems to Solve with Simulation
    1. Zero to the Zero
    2. Distance to the Nearest City
    3. Min, Max and Average Line Segment Size
    4. The Plus One - Minus One Problem

  4. Mathematical Reasoning - Induction and Other Methods of Proof
    1. Principles of Induction
    2. The Relationship Between Recursion and Induction
    3. Solution of Selected Problems Using Induction
    4. Loop Invariants
    5. Misuse of Induction

  5. Requisite mathematical concepts and review of required concepts
    1. Counting - Probability and Combinatorics
    2. The Pigeonhole Principle
    3. Functions and Their Growth
    4. Limits
    5. O - Notation
    6. Summations
    7. Graph theory and other related concepts
    8. Random Number Generation

  6. Review of Data Structures

  7. Recurrence Relations

  8. Design of Algorithms by Induction
    1. Solution of Selected Problems Through Inductive Algorithms
    2. Dynamic Programming
    3. Caveats For This Method

  9. Algorithms Involving Sequences and Sets
    1. Sorting
    2. Searching
    3. Algorithms for optimal solutions
      1. Greedy algorithms
      2. Branch and Bound
      3. Hill Climbing
      4. State Space Search
    4. Other Topics

  10. Graphs and Algorithms
    1. Introduction and Terminology
    2. Graph Representations
    3. Paths
    4. Planar Graphs and Coloring
    5. Balanced and otherwise Optimal Binary Trees
    6. Graph Traversals
    7. Topological Sorting
    8. Shortest Paths
    9. Network Flows
    10. Other Topics

  11. Trees
    1. Introduction
    2. Applications
    3. Traversals and Sorting

  12. Geometric Algorithms
    1. Line Segments
    2. Convex Hulls
    3. Closest Points

  13. Algebraic and Numeric Algorithms
    1. Matrices
    2. GCD
    3. Cryptography
    4. Fast Fourier Transforms

  14. String Matching

  15. NP-Completeness and Approximation Algorithms


Testing
There will be 3 tests, several programs, an undetermined number of pop quizzes and homework assignments and a final exam. Class participation will also count towards one's grade.

The above factors will be weighted as follows :
Tests .42
Programs .18
Final Exam : .28
Class Partic, Homework, Quizzes: .12

Grading :
The standard 10 point grading scale will be used.
(i.e. 90-100 = A, 80-89 = B, 70-79 = C, 60-69 = D, below 60 = F)
THERE WILL BE NO CURVE. You will always know approximately how you are doing in the course by applying the above factors to your grades to date.


Important notes:

  1. If you are having trouble with the course come to me for help right away - DO NOT WAIT.
  2. You are responsible for attending class, completing assignments on time, taking tests when scheduled, knowing the College's grading policies, knowing course withdrawal dates and making up all missed work.
  3. As always, the honor code is in full effect. You may NOT collaborate on tests. You may NOT collaborate on projects and programs except as instructed by me. If you are ever in doubt of whether or not an action constitutes an honor violation ask me beforehand.
  4. Class participation on your part is an excellent means of making our classes more interesting and demonstrating to me your knowledge of and interest in the subject matter.


    Recommended Materials
  1. The Art of Computer Programming - Donald Knuth
  2. Design and Analysis of Algorithms - Jeffrey D. Smith
  3. Introductory Discrete Structures With Applications - Kolman & Busby
  4. Introduction to Algorithms by Udi Manber
  5. Your favorite programming language reference (VB, C++ or Pascal)


Top of this page   Top of page      Home page   Home page