Prerequisites: CS 302, CS 325, MATH 330 (minimum grade of C)
Syllabus
CS 427 Algorithm
Analysis
Fall 2007
|
Meeting
Times |
Lect: 9:00 - 9:50
MTWF, HB 112 |
|
Instructor |
Dr.
Razvan Andonie, HB 219-B, Office hours |
|
Text |
Anany
Levitin: Introduction to The Design & Analysis of Algorithms, Addison
Wesley, 2007, Second Edition. |
This course is a study of algorithm design, algorithm complexity analysis, and
problem complexity analysis. Design techniques analyzed will include divide-and-conquer,
dynamic
programming, greedy algorithms, backtracking, and branch-and-bound.
Student Learning Outcomes
On completion of this course, the student will have:
|
|
A basic understanding of algorithm design and problem solving using fundamental techniques. |
|
|
The student will be able to demonstrate the associations between
problem solving, algorithm design, and complexity analysis. |
|
|
Applied algorithm design, analysis, and implementation in various applications. |
|
|
Developed creativity and strategy skills for problem solving. |
|
Exams
(2 - 25% each)
|
50%
|
|
Assignments |
50%
|
|
Class
participation (extra-credit) |
up
to 10%
|
95 - 100 A
90 - 94 A-
87 - 89 B+
83 - 86 B
80 - 82 B-
77 - 79 C+
73 - 76 C
70 - 72 C-
67 - 69 D+
63 - 66 D
60 - 62 D-
0 - 59 F
If you must miss an exam, contact your instructor prior to the exam to schedule a time to make it up. Late submission of assignments is generally not accepted. No partial credit for late assignments will be offered.
The
slides for lectures can be found in the shared directory on
Neve. Be ready to spend about two
hours to prepare for each class (Reading + Assignment).
|
|
Brassard,
G., Bratley, P. Fundamentals of Algorithmics.
Prentice-Hall,
|
|
|
Brassard,
G., Bratley, P. Algorithmics
- Theory and Practice. Prentice-Hall,
|
|
|
Cormen, T.H.,
Leiserson, C.E., Rivest, R.L.,
Stein, C. Introduction to Algorithms. The MIT Press,
|
|
|
Knuth, D.E. The Art of Computer Programming, Vol 1-3, Addison-Wesley, 1977-1988. |
|
|
Weiss,
M.A. Data Structures & Algorithms in Java, Addison-Wesley,
|
|
|
Horowitz, E., Sahni, S., Rajasekeran, S. Computer Algorithms, Silicon Press, 2008 (Second Edition). |
|
|
Baase, S. Computer
Algorithms - Introduction to Design and Analysis, Addison-Wesley,
|
|
|
Preiss, B.R.
Data
Structures and Algorithms with Object-Oriented Design Patterns in C++, John Wiley
& Sons,
|
Dictionary of
Algorithms and Data Structures
Data Structures and Algorithms many useful
links by Prof. Toussaint
|
Date |
Topics |
Reading |
Assignments |
|
9/19 |
General presentation |
|
|
|
9/21 |
Introduction |
Ch. 1 |
Ass. 1: Ex. 9 (a, b), pg. 8, due next class |
|
9/24 |
Analysis framework - asymptotic notation |
2.1- 2.2 |
Ass. 2: Ex. 9, pg. 18, due next class |
|
9/25 |
Analysis framework - asymptotic notation |
2.1- 2.2 |
Ass. 3: Ex. 3, pg. 60; Ex. 10, pg. 61, due next
class |
|
9/26 |
Mathematical analysis of nonrecursive algorithms |
2.3 |
Ass. 4: Ex. 6, pg. 68, due next class |
|
9/28 |
Mathematical analysis of recursive algorithms:
backward substitution |
2.4, App. B |
Ass. 5: Ex. 8, pg. 77, due next class |
|
10/1 |
Mathematical analysis of recursive algorithms:
homogeneous recurrences |
2.5, App. B |
Ass. 6: Ex. 7, pg. 77, due next class |
|
10/2 |
Mathematical analysis of recursive algorithms:
heterogeneous recurrences, Master Theorem |
2.5, App. B |
Ass. 7: Ex. 1, pg. 76, due next class |
|
10/3 |
Brute-force algorithms |
3.1-3.3 |
Ass. 8: Ex. 3, pg. 106, due next class |
|
10/5 |
Exhaustive search |
3.4 |
Ass. 9: Ex. 9, pg. 119 (a, b, c), due next class |
|
10/8 |
Divide-and-conquer: mergesort, quicksort, binary
search |
4.1-4.3 |
Ass. 10 (on Neve) |
|
10/9 |
Binary
tree traversal, multiplication of large integers, Strassen's matrix
multiplication |
4.4-4.5 |
|
|
10/10 |
Decrease-and-conquer: Insertion sort, DFS |
5.1-5.2 |
Ass. 10 due Ass. 11: Ex. 11, pg. 129, due next class |
|
10/12 |
BFS and topological sorting |
5.2-5.3 |
Ass. 12: Ex. 9, pg. 164; Ex. 10, pg. 177, due next class |
|
10/15 |
Fake-coin problem, multiplication a la russe,
Josephus problem |
5.5 |
Ass. 13: Ex. 3, pg. 187, due next class |
|
10/16 |
Review for Exam I |
|
|
|
10/17 |
Exam I |
|
|
|
10/19 |
Selection problem, interpolation search |
5.6 |
Ass. 14 (on Neve) |
|
10/22 |
Binary search trees, the game of NIM |
5.6 |
Ass. 15 (on Neve) |
|
10/23 |
Transform-and-conquer: presorting, Gaussian elimination |
6.1-6.2 |
Ass. 16: Ex. 9, pg. 203, due next class |
|
10/24 |
Balanced search trees |
6.3-6.5 |
Ass. 17: Ex. 3, pg. 202, due next class |
|
10/26 |
Problem reduction |
6.6 |
Ass. 18: Ex. 6, pg. 246, due next class |
|
10/29 |
Space-time tradeoffs: sorting by counting, string matching, hashing |
7.1-7.3 |
Ass. 19: Ex. 2, pg. 264, due next class |
|
10/30 |
Dynamic programming: binomial coefficient,
Warshall, Floyd |
8.1-8.2 |
Ass. 20: Ex. 1 & 7, pg. 292, due next class |
|
10/31 |
Optimal binary search trees, knapsack problem and
memory functions |
8.3-8.4 |
Ass. 21: Ex. 9, pg. 304, due next class |
|
11/2 |
class canceled |
|
|
|
11/5 |
Greedy algorithms: Prim, Kruskal,
|
9.1-9.2 |
|
|
11/6 |
Dijkstra (single-source shortest path) |
9.3-9.3 |
|
|
11/7 |
Huffman trees |
|
Ass. 23: Ex. 3, pg. 313; Ex. 10,
pg. 333, due
next class |
|
11/9 |
Iterative improvement: maximum matching in bipartite graphs |
10.3-10.4 |
|
|
11/12 |
Veterans Day |
|
|
|
10/13 |
Lower-bound arguments, decision trees |
11.1- |
Ass. 24: Ex. 1 & 3, pg. 375, due next class |
|
11/14 |
P, NP, and NP-complete problems |
11.3 |
Ass. 25: Ex. 8 pg. 392, due next class, for extracredit only |
|
11/16 |
P, NP, and NP-complete problems |
11.3 |
Ass. 26: Ex. 6, pg. 402, due next class |
|
11/19 |
Backtracking: n-queens problem |
12.1 |
Ass. 27: Ex. 10, pg. 403, due next class |
|
11/20 |
Hamiltonian
circuit, subset-sum problem |
12.1 |
Ass. 28: Implement the n-queens problem using the CS301 backtracking design pattern - for extracredit only |
|
11/21 |
Thanksgiving |
|
|
|
11/23 |
Thanksgiving |
|
|
|
11/26 |
Branch-and-bound: assignment problem, knapsack problem, traveling salesman problem |
12.2 |
Ass. 29: Ex. 7, pg. 423, due next class |
|
11/27 |
Approximation algorithms for NP-hard problems |
12.3 |
Ass. 30: Ex. 5 & 9, pg. 433, due next class |
|
11/28 |
Approximation algorithms for NP-hard problems |
12.3 |
|
|
11/30 |
Review for Exam II & All Questions Will Be
Answered |
|
|
|
12/5 |
Exam II (8:00 - 10:00) |
|
|
All work turned in for credit, including exams and all components of the project, are to be the work of the student whose name is on the exam or project. For all project components, the student can receive assistance from individuals other than the instructor only to ascertain the cause of errors. Thus you can get help if you need it to figure out why something doesn't work. You just can't get help from anyone, other than the instructor or TA, to figure out how to make something work. All solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. The following text should appear on all assignments: " I pledge that I have neither given nor received help from anyone other than the instructor for all program components included here."
Help each other with the lab assignments. You may work together, but do the work on separate computers. The point is to understand the material enough so that you to go on and complete that week's programming assignment on your own.
Help each other understand and debug the programming assignments. However, you should write the code for your programs yourself. Writing it yourself is the only way you will learn. Do not work together to solve the programming assignments to the extent that two programs are essentially the same solution.
All program solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. Since everyone is writing their own code, no two programs should be the same or so similar that I could convert one to the other by a simple mechanical transformation (e.g. changing variable names and comments). I consider this plagiarism and a violation of academic code. First violation: Students must meet with the instructor. In most cases, the grade will be split between the authors of the copied programs. Second violation: Students will receive no credit for the assignment. An incident letter will be placed on file in the Computer Science Department and the matter referred to the Computer Science Department Chair.
Class
attendance is expected and recorded.
Students
with disabilities who wish to set up academic adjustment in this class should
give me a copy of their "Confirmation of Eligibility for Academic
Adjustment" from the Disability Support Services Office as soon as possible
so we can discuss how the approved adjustment will be implemented in this
class. Students without this form should contact the Disability Support
Services Office, Buillon 205 or dssrecept@cwu.edu
or 963-2171.
The
schedule and procedures for this course are subject to change. It is the
student's responsibility to learn of and adjust to changes.