CS 530: Algorithms Analysis and Design (Fall 2003)

 

[Administrative] [The Course] [Grading] [Lectures]  [Links] [Students]

 

Administrative

 

Instructor

    Badie Sartawi, sartawi@planet.edu

    Office:  by appointment.

    Communication: use your username@science.alquds.edu for telecommunication with class email cs530@science.alquds.edu

 

Class: M. Sc. Computer Science Major 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

 

The course

 

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:

 

  1. Advanced data structures
  2. General principles in the design of algorithms which are fundamental to computer science
  3. The implementation of algorithms and the effective use of data structures
  4. The analysis of algorithm complexity.

 

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. 

 

Course Conduct

The course will consist of lectures, programming project, and term paper.

Grading

 

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.

 

Programming Project

There will be one assignment for each student aims at developing part of the algorithms Java library being developed by the students. 

 

Class Participation

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.

 

Tentative Lecture Schedule  

 

Lecture

Topic

Details

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  

links 

    General

      http://www.datastructures.net/ 
      http://www.algorithmdesign.net/
      http://www.engin.umd.umich.edu/CIS/course.des/cis350.html
 

Dictionary 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

 

 

Binary Search Trees

Tutorial on Binary Search Tree Rotations

http://www.dgp.toronto.edu/people/JamesStewart/applets/bst/bst-rotation.html
 

Tutorial on AVL trees.

http://www.enteract.com/~bradapp/ftp/src/libs/C++/AvlTrees.html
 

G.A.I.G.S. in Java - a collection of animations demonstrating a variety of tree algorithms.

http://gaigs.cmsc.lawrence.edu/cmsc34/AVClient.html
 

AVL Trees -- excellent animations, with sound!

http://www.seanet.com/users/arsen/avltree.html
 

Tutorial on Red-Black Trees (Includes details on Insertions and Deletions).

http://www.eli.sdsu.edu/courses/fall95/cs660/notes/RedBlackTree/RedBlack.html
 
Decomposition    

A Tutorial on Dynamic Programming

http://mat.gsia.cmu.edu/classes/dynamic/dynamic.html

 

Graph Theory

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

 

Intractability       

A compendium of NP optimization problems

http://www.nada.kth.se/~viggo/problemlist/compendium.html

 

 Students