[Administrative] [The Course] [Grading] [Lectures] [Links] [Students]
Time: Saturday 1:00 - 3:30
Prerequisite: Admission to M. Sc. program
Books & References
Text materials for much of the subject matter covered in this course are freely available on the World Wide Web. Check Links
Sara Base, Allen Van Gelder, Computer Algorithms Introduction to Design & Analysis, Third Edition, Addison Wesley Longman 2000
Steven Skiena, The Algorithm Design Manual, Springer-Verlag New York, Inc., 1998
Description
Analysis of algorithms. Algorithm design techniques. Efficient algorithms for classical problems. Intractable problems and techniques to handle them. See also the full Lecture Schedule
Objectives
In this course, students will study:
The primary vehicles to achieve these objectives are the study of general concepts in this area, and the application of them to important computer science areas.
The course will consist of lectures, programming project, and term paper.
Your scores on the programming project, term paper, and exams shall determine your numeric grade as follows:
· 10% Review Exam
· 30% Programming Project and Term Paper
· 30% Midterm Exam
· 30% Final Exam
Beyond the grade you receive on your home works and exams, several other factors can affect your final grade.
There will be one assignment for each student aims at developing part of the algorithms Java library being developed by the students.
I shall occasionally ask you individually questions in the class, and may ask you to do problems on the board. You are strongly encouraged to ask questions in the class. Simply put, those who participate frequently in class provide me with another source of information as to how well they are learning the material, and how much effort they are putting into the course. I can use this information to help counterbalance a difficulty with exams or other requirements. Class participation will never harm your grade; always ask any questions you may have about the material.
Academic Dishonesty
Any academic dishonesty will be lead to receiving a failing grade.
| Lecture | ||
| 1, 2, 3, 4 | Preliminaries |
Analyzing algorithms |
|
Asymptotic notation |
||
| Recurrence relations | ||
| Sorting | Heap sort | |
| Quick sort | ||
| Linear sorting | ||
| 5, 6, 7, 8 | Searching | Data structures |
| Binary trees | ||
| Tree restructuring | ||
| Combinational search | Backtracking | |
| Introduction to dynamic programming | ||
| Dynamic programming applications | ||
| 9 | Midterm Exam | |
| 10, 11 | Graph Algorithms | Data structures for graphs |
| DFS and BFS | ||
| Applications of DFS and BFS | ||
| Minimum spanning trees | ||
| Shortest path algorithms | ||
| 12 | Intractability | NP-completeness |
| NP-completeness proofs | ||
| Further reductions | ||
| Approximation algorithms | ||
| Set cover / knapsack heuristics | ||
| 13 - 15 | Project & Term Paper Presentations |
General
http://www.datastructures.net/ http://www.algorithmdesign.net/ http://www.engin.umd.umich.edu/CIS/course.des/cis350.htmlDictionary of Algorithms, Data Structures
http://hissa.nist.gov/dads/
Problems by the National Institute of Standards and Technology
http://www.nist.gov/
Data Structures and Algorithms a good online guide, covering many topics from this class
http://ciips.ee.uwa.edu.au/~morris/Year2/PLDS210/
Sorting and Searching Algorithms: A Cookbook by Thomas Niemann
http://members.xoom.com/thomasn/s_man.htm
Algorithms and Complexity a full textbook by Herbert S. Wilf.
http://www.cis.upenn.edu/~wilf/AlgComp2.html
Analysis of algorithms home page
http://pauillac.inria.fr/algo/AofA/
The Stony Brook Algorithm Repository
http://www.cs.sunysb.edu/~algorith/The Avida System
The Avida project WebPages
http://dllab.caltech.edu/avida/Avida Movie (Warning! Very big -- 40Meg)
http://myxo.css.msu.edu/run.avi
Tutorial on Binary Search Tree Rotations
http://www.dgp.toronto.edu/people/JamesStewart/applets/bst/bst-rotation.htmlTutorial on AVL trees.
http://www.enteract.com/~bradapp/ftp/src/libs/C++/AvlTrees.htmlG.A.I.G.S. in Java - a collection of animations demonstrating a variety of tree algorithms.
http://gaigs.cmsc.lawrence.edu/cmsc34/AVClient.htmlAVL Trees -- excellent animations, with sound!
http://www.seanet.com/users/arsen/avltree.htmlTutorial on Red-Black Trees (Includes details on Insertions and Deletions).
http://www.eli.sdsu.edu/courses/fall95/cs660/notes/RedBlackTree/RedBlack.htmlA Tutorial on Dynamic Programming
http://mat.gsia.cmu.edu/classes/dynamic/dynamic.html
A collection of Tutorials on Graph Theory. This site also contains an excellent Glossary of terms.
http://www.utm.edu/departments/math/graph/ http://www.utm.edu/departments/math/graph/glossary.html
A compendium of NP optimization problems
http://www.nada.kth.se/~viggo/problemlist/compendium.html