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.

 

Objectives

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. These  techniques can be considered general problem solving tools, whose applications are not limited to traditional computing and mathematical problems. Two factors make this point particularly important. First, more and more computing applications go beyond the traditional domain, and there are reasons to believe that this trend will strengthen in the future. Second, developing students’ problem solving skills has come to be recognized as a major goal of college education. Among all the courses in a computer science curriculum, a course on the design and analysis of algorithms is uniquely suitable for this task because it can offer a student specific strategies for solving problems.  The course is organized around some fundamental strategies of algorithm design and algorithm design will be taught on a par with analysis. Some more abstract but very important topics will be also included: NP-completeness, approximation algorithms, lower-bound limits.

Student Learning Outcomes

On completion of this course, the student will have:

bullet A basic understanding of algorithm design and problem solving using fundamental techniques.
bullet The student will be able to demonstrate the associations between problem solving, algorithm design, and complexity analysis.
bullet Applied algorithm design, analysis, and implementation in various applications.
bullet Developed creativity and strategy skills for problem solving.

Grading

Exams (2 - 25% each)

50%

Assignments (approx. 30; only some of them will be graded)

50%

Class participation (extra-credit)

up to 10%

Grade Distribution

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.

Lectures & Projects

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).

Additional Reading

bullet

Brassard, G., Bratley, P. Fundamentals of Algorithmics. Prentice-Hall, Englewood Cliffs, 1996.

bullet

Brassard, G., Bratley, P. Algorithmics - Theory and Practice. Prentice-Hall, Englewood Cliffs, 1988.

bullet

Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C. Introduction to Algorithms. The MIT Press, Cambridge, Massachusetts, 2002 (Second Edition).

bullet

Knuth, D.E. The Art of Computer Programming, Vol 1-3, Addison-Wesley, 1977-1988.

bullet

Weiss, M.A. Data Structures & Algorithms in Java, Addison-Wesley, Reading, Massachusetts, 1999.

bullet

Horowitz, E., Sahni, S., Rajasekeran, S. Computer Algorithms, Silicon Press, 2008 (Second Edition).

bullet

Baase, S. Computer Algorithms - Introduction to Design and Analysis, Addison-Wesley, Reading, Massachusetts, 2000 (Third Edition).

bullet

Preiss, B.R. Data Structures and Algorithms with Object-Oriented Design Patterns in C++, John Wiley & Sons, New York, 1999. You can download the html version and the source code.

Links

 Courses on WWW

 Dictionary of Algorithms and Data Structures

 Dictionary of Computing

 Data Structures and Algorithms many useful links by Prof. Toussaint

Course Schedule

 

Date

Topics

Reading

Assignments

9/19

General presentation

Syllabus

 

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), due next class

10/22

Binary search trees, the game of NIM 5.6

Ass. 15 (on Neve), due next class

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, Heapsort, Horner's Rule, binary exponentiation

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

Ass. 22: (on Neve)

11/6

Dijkstra (single-source shortest path)

9.3-9.3

 

11/7

Huffman trees

9.4

Ass. 23: Ex. 3, pg. 313; Ex. 10, pg. 333, due next class 

11/9

Iterative improvement: maximum matching in bipartite graphs, the stable marriage problem

10.3-10.4

 

11/12

Veterans Day

 

 

10/13

Lower-bound arguments, decision trees

11.1-11.2

Ass. 22 due

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)

 

 

 

Honor Code

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

Class attendance is expected and recorded.

ADA Statement

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.

Caveat

The schedule and procedures for this course are subject to change. It is the student's responsibility to learn of and adjust to changes.