Syllabus - CS 260P - Fundamentals of Algorithms with Applications
Michael T. Goodrich
- Course Description.
Covers fundamental concepts in the design and analysis of algorithms and is geared toward practical application and implementation. Topics include greedy algorithms, deterministic and randomized graph algorithms, models of network flow, fundamental algorithmic techniques, and NP-completeness.
- Coursework. Coursework will consist of weekly homeworks,
two midterms, two programming projects,
and a comprehensive final exam. The overall grade
will be determined 10% from homework, 20% from each midterm, 10% from
each project, and 30% from the final.
Group work on homeworks is permitted, but each
student must list his or her collaborators in writing for each problem.
If a student turns in a solution without listing
the others who helped produce this solution,
this act will be considered cheating (for it is plagarism).
Late homework assignments will not be accepted,
but for the overall total homework score,
the lowest homework score will be dropped.
Group work on programming projects is not allowed--each program
must be individually written.
- Exam policy.
Exam performance must be 100% individual effort; no collaboration
is allowed on exams. Any collaboration or copying on exams
will be considered cheating.
In addition to the procedures of the
ICS
Cheating Policy, students caught cheating on exams will be given a
failing grade in the class.
- Laptop policy.
Laptops may be brought to class, but should remain closed during lectures
and exams.
Here's one reason why.
Here is another.
- Required Text. The course text, which is required, will be
Algorithm Design and Applications,
by Goodrich and Tamassia.
Note: all royalties earned by Dr. Goodrich as a result
of students in this class purchasing this book will be donated to
the charity,
Food for the Hungry.
- Recommended Book. A recommended course book is
A Guide to Experimental Algorithmics, by
McGeoch.
Tentative Schedule
- Week 1:
-
Growth of functions.
Amortization.
Basic Data Structures.
- Week 2:
-
Sorting, comparison trees, and lower bounds. Mergesort.
Quicksort.
Bucket sort.
Selection.
-
Week 3:
-
Fundamental techniques.
The greedy method.
Divide-and-conquer.
-
Week 4:
Midterm I
-
Dynamic programming.
Matrix-chains.
Knapsack. Longest common subsequence.
-
Week 5:
-
Graphs and their representations.
-
Week 6:
-
Graph algorithms. Depth first search.
Breadth-first search.
Topological sort.
Shortest paths.
-
Week 7:
Midterm II
-
More graph algorithms.
Minimum spanning trees. Network flow.
-
Week 8:
-
P and NP. NP-Completeness.
-
Week 9:
-
NP-Completeness Reductions.
-
Week 10:
Copyright © 2019
Michael T. Goodrich, as to all lectures.
Students are prohibited from selling
(or being paid for taking) notes during this course to or by any
person or commercial firm without the express written permission of the
professor teaching this course or from Disabled Services Center (DSC).