Syllabus
CS 427 Algorithm Analysis
Winter
2017
Meeting Times |
MoTuWe 1:00PM-1:50PM Hertz Hall 121 Th 1:00PM-1:50PM Hebeler Hall 207 Mac Lab |
Instructor |
Dr. Boris Kovalerchuk, HB
214-B <Boirsk@cwu.edu> Office hours: MTW 2:00-3:00 PM |
TA |
Daniel
Ortyn <Daniel.Ortyn@cwu.edu> |
Text |
Anany Levitin: Introduction to The Design &
Analysis of Algorithms, Addison Wesley, 2012, Third 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. 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 student’s
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.
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. |
Midterm Exam
35%
Final Exam
37%
Assignments (approx. 30; likely only some of them will be graded).
It is your best interest to work on all assignments, because there is a chance that the assignment that you may decide to skip will be graded or be a part of the exams for all students and you will get 0 for it in HW. Also have in mind that the number of topics covered in class (and needed for your future work!) is always greater than the number of topics that can be in HWs and exams. Thus, it is your best interest to learn at least all HW topics. Use instructor’s office hours and tine of TA during the labs to ask how correct your solutions are (especially not graded).
25%
Class participation (answering questions not only attending)
up to 3%
[95
– 100] A
[90 – 95)
A-
[87.5 – 90)
B+
[82.5 – 87.5) B
[80 – 82.5)
B-
[77.5 – 80)
C+
[72.5 – 77.5)
C
[70 – 72.5)
C-
[67.5 – 70)
D+
[62.5 – 67,5) D
[60 – 62.5)
D-
[0 – 60) 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\cs427.
Be ready to spend about two
hours to prepare for each class (Reading + Assignment). Exercises have hints at the end of the textbook!
Dictionary of Algorithms and Data Structures
Data Structures and Algorithms
many useful links by Prof. Toussaint
Date |
Topics |
Reading |
Assignments
(all
due next class) |
1/03 |
General presentation, Introduction |
Syllabus,
Ch. 1 |
Assign. 1: Ex. 10 (a, b), pg. 8, due
next class tip for (b) |
1/04 |
Analysis framework - asymptotic notation more |
2.1- 2.2 |
Assign. 2: Ex. 9, pg. 18, due next class |
1/08 |
Analysis framework - asymptotic notation |
2.1- 2.2 |
Assign. 3: Ex. 3, pg. 59; Ex. 11, pg. 61, due next class |
1/09 |
Mathematical analysis of nonrecursive
algorithms |
2.3 |
Assign. 4: Ex. 6, pg. 68, due next class |
1/10 |
Mathematical analysis of recursive algorithms:
backward substitution |
2.4, App. B |
Assign. 5: Ex. 9, pg. 78, due next class |
1/11 |
Mathematical analysis of recursive algorithms:
homogeneous recurrences |
2.5, App. B |
Assign. 6: Ex. 8, pg. 78, due next class |
1/15 |
No
class MLK |
|
|
1/16 |
Mathematical analysis of recursive algorithms:
heterogeneous recurrences, Master Theorem |
2.5, App. B |
Assign. 7: Ex. 1, pg. 76, due next class |
1/17 |
Brute-force algorithms |
3.1-3.2 |
|
1/18 |
Exhaustive search |
3.4 |
Assign. 8: Ex. 3, pg. 106, due next class |
1/22 |
Depth-First and Breadth-First Search |
3.5 |
|
1/23 |
Depth-First and Breadth-First Search |
3.5 |
Assign. 9: Ex. 10, pg. 121 (a, b, c), due next class |
1/24 |
Decrease-and-conquer: Insertion sort |
4.1 |
Assign. 10: Ex. 11, pg. 130, due next class |
1/25 |
Topological sorting |
4.2 |
Assign. 11: Ex. 9 & 10, pg. 137, due next class |
1/29 |
Decrease-by-a-constant factor algorithms: binary
search, fake-coin problem, multiplication a la russe,
Josephus problem |
4.4 |
Assign. 12: Ex. 1, pg. 142, due next class |
1/30 |
Exam
I (open book and e-book, no other electronic devices) |
|
|
1/31 |
Variable-size-decrease algorithms: selection
problem, interpolation search |
4.5 |
Assign. 13: Ex. 10, pg. 157, due next class |
2/1 |
Variable-size-decrease algorithms: binary search
trees, the game of NIM |
4.5 |
Assign. 14: Ex. 12, pg. 157, due next class |
2/5 |
Divide-and-conquer: mergesort,
quicksort |
5.1-5.2 |
Assign. 15: Ex. 13, pg. 167, due next class |
2/6 |
Binary
tree traversal, multiplication of large integers, Strassen's matrix
multiplication, closest-pair problem |
5.3-5.5 |
Assign. 16: Ex. 11, pg. 175; Ex. 11, pg. 182, due next class |
2/7 |
Transform-and-conquer: presorting, Gaussian elimination |
6.1-6.2 |
Assign. 17:
Ex. 1 pg. 205, due next class |
2/8 |
Balanced search trees, Heapsort, Horner's Rule, binary
exponentiation |
6.3-6.5 |
Assign. 18: Ex. 7, pg. 206, due next class |
2/12 |
Problem reduction |
6.6 |
Assign. 19: Ex.
2, pg. 205, due next class |
2/13 |
Space-time tradeoffs: sorting by counting, string matching,
hashing |
7.1-7.3 |
Assig. 20: Ex.
1a, pg. 233, due next class |
2/14 |
Dynamic programming, Knapsack Problem, Memory Functions |
8.1-8.2 |
Assig. 21: Ex. 2, pg. 267, due next class |
2/15 |
Optimal binary search trees, Warshall,
Floyd |
8.3-8.4 |
Assig. 22: Ex. 12a, pg. 292, due next class |
2/19 |
No
Class Presidents day |
||
2/20 |
Greedy algorithms: Prim, Kruskal, |
9.1-9.2 |
Assig. 23: Ex. 7, pg. 312, due next class |
2/21 |
Dijkstra (single-source shortest path) |
9.3-9.3 |
Assig. 24:2a pg.337, due next class |
2/22 |
9.4 |
Assig. 25: Ex. 3, pg. 322, due next class |
|
2/26 |
Iterative improvement: Simplex
Iterative improvement: maximum matching in bipartite graphs, the
stable marriage problem |
10.1; 10.3-10.4 |
Assign. 26: Ex. 3, pg. 384, due next class Understand the Dental Matching Program Algorithm |
2/27 |
Lower-bound arguments, decision trees |
11.1-11.2 |
Assig. 27: Ex. 10 pg. 400, due next class, not
graded. Solution can be found here. |
2/28 |
P, NP, and NP-complete problems |
11.3 |
Assig. 28: Ex. 5, pg. 410, due next class |
3/01 |
P, NP, and NP-complete problems |
11.3 |
Assig. 29: Ex. 11, pg. 411, due next class |
3/05 |
Backtracking: n-queens problem, subset-sum problem |
12.1 |
|
3/06 |
Branch-and-bound: assignment problem, knapsack problem,
traveling salesman problem |
12.2 |
Assig. 30: Ex.5, pg. 440, due next class |
3/07 |
Approximation algorithms for NP-hard problems \ |
12.3 |
Assig. 31: Ex.1a, pg. 457, due next class |
3/08 |
Algorithms for Solving Nonlinear Equations |
12.4 |
|
3/12-15 TBD See
Safari |
Final Exam (open book, and e-book, no other electronic devices) |
|
|
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.
You should write the code for your programs
yourself including pseudo-code. 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.