COS 350 - Data Structures and Algorithms

Larry Latour
Spring, 2009
Catalog Description
Introduction to abstract data types as a unifying concept in the study of data structures. Topics include lists, queues, multi-linked lists, priority queues, trees, and graphs. The impact of these structures on algorithm design is explored. External memory management is discussed.
Extended Course Description:
Data types, objects, and classes have been discussed extensively in COS125,COS225, and COS226. Included in these courses have been discussions of lists, queues, multi-linked lists, sorting, and trees. This course concentrates algorithm correctness, algorithm analysis, the relationship between algorithms and data structures, and algorithm design. These issues provide the framework for looking at a number of classes of problems, including numerical problems, combinatorial problems, graph problems, computational geometry problems, and classically hard problems.
Place and Time:
Tuesday/Thursday, 12:30pm-1:45pm, Room 106 Murray Hall
Instructor:
Larry Latour, Assoc. Prof., Dept. of Computer Science
Office: 222 Neville Hall
Tel: 581-3523
Email: Firstclass (Larry Latour) or larry_latour@umit.maine.edu
Office Hours: Tuesday/Thursday 11:00am-12:00noon
Textbook:
Algorithm Design, Foundations, Analysis, and Internet Examples, Michael T. Goodrich and Roberto Tamassia, John Wiley & Sons, Inc., 2002.

Course Outline:

1. Recursion, Structural Induction
Proof by Recursion and Structural Induction, and recursive algorithms. Handouts from COS250 Rosen Text: Discrete Mathematics And Its Applications, 6th Edition.
2. Algorithm Analysis, Chapter 1 and Handouts.
Analysis methodologies (worst case/average case), asymptotic notation as a measure of time complexity, mathematical review, amortization, empirical case studies and experimentation.
3. Fundamental Techniques, Chapter 5 and Induction and Recursion Handouts from COS250 Rosen Text
The Greedy Method, Divide and Conquer Recurrence Equations, Dynamic Programming.
4. Data Abstractions and Basic Data Structures, Chapters 2 and 3
A continuation from COS221/COS226. Trees, Priority Queues and Heaps, Dictionaries and Hash Tables, A review of Search Trees
5. Basic Graph algorithms, Chapter 6
The graph ADT, data structures, depth first vs. breadth first graph traversal, bi-connected components,
directed and directed acyclic graphs.
6. Weighted Graph algorithms, Chapter 7
Weighted graphs, shortest path algorithms, minimum spanning trees.
7. Text Processing, Chapter 10
String and pattern matching algorithms, tries, text compression, text similarity
8. NP-Completeness, Chapter 13
Introduction, P and NP, NP-complete problems, approximation algorithms, bin packing, the knapsack and subset sum problems, graph coloring, the traveling salesperson problem.

Grading:

Grades will be based on the following work: Program implementation portions of each homework packet may be done in any language the student prefers, but the student must be ready to demo any programs in my office or it's vicinity.

Students need to complete all exams, the 6 homework packages, and the paper/project in order to be eligible for a passing grade of D or better. No makeup exams are given unless the circumstances warrant. Work will only be accepted if reasonable care and effort on the part of the student is evident.

Important: All homework and project work (1) must be complete, (2) must be type-written, (3) must have a cover page containing the student names, class, homework number, and list of problems, and (4) must be stapled in the upper left-hand corner. No hand-written work (except or fancy covers are accepted.

Acknowledgement that this syllabus has been read and understood: All students must send an email to the instructor acknowledging that they have read and understood the entire syllabus.


Semester Group Implementation and Analysis Project/Paper:

Steven S. Skiena of Stonybrook University in New York has a nice algorithm repository at http://www.cs.sunysb.edu/~algorith/. It includes an extensive catalog of algorithmic problems, pointing to a wide variety of related resources. Each team of students will be randomly assigned three problems from this repository, two from category one and one from category two ("hard" problems from a complexity perspective):
  1. Numerical problems, Combinatorial problems, String problems, Polynomial-Time graph problems and Computational Geometry.
  2. Classically Hard Graph Problems.
To view the problem class assignments each student group, check the Projects page.

An additional resource for the project is the NIST (National Institute of Standards and Technology) Dictionary of Algorithms and Data Structures, an extensive catalog of additional material.

Each member of a group is responsible for the design, implementation, and analysis of an application for each of the assigned group problems. A group paper is then required discussing the major issues of that problem class in the context of the individual analyses. I won't define the length of the paper, other than to say 1 page is probably much to short and 50 pages is probably much too long. I am interested in hard data, not hand waving. For this reason, include general information about the problem class only if it contributes to the analysis (some is always necessary to set the paper context).

In the case of Classically Hard Graph problems, these problems are conjectured not to have efficient problem solutions. In these cases you may either verify the complexity of your classically hard implementation, or implement and analyze "hueristics" to approximate the problems (see the definition of "hueristic" on the NIST website at http://www.nist.gov/dads/HTML/heuristic.html.)

Program implementation portions of the paper/project may be done in any language you prefer (e.g., Scheme, Java, C++), but you must be ready to demo any programs in the vicinity of my office (on your laptop or on the dept. computer cluster). Work will only be accepted if reasonable care and effort on your part is evident.

The final paper is due on Tuesday, April 21st, 2 weeks before the end of the semester. This will give me a chance to grade and hand back your work, and it will allow you to be prepared for your project exam on Tuesday, April 27th.

The final group project grade will be a full letter grade as follows:

Note that your chances of getting an A or B on the group project drastically improve if you start your research at the beginning of the semester. Note also that your grade on this group project might mean the difference of a letter grade on your final grade.


Policy on lateness:

Homework assignments will lose 1% of the final grade for every week late. Homework submitted after the due date or on the due date BUT AFTER CLASS IS OVER will be considered a week late, with additional weeks added on in a similar manner. The semester project will lose 3% of the final grade for every week late, calculated as with homework assignments. The instructor will assign due dates during the semester, and reserves the right to postpone each specific due date if necessary.


Last updated: 1/04/09