COS 350 - Data Structures and Algorithms

Larry Latour
Spring, 2008
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 100 Jenness 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. Algorithm Analysis, Chapter 1
Analysis methodologies (worst case/average case), asymptotic notation as a measure of time complexity, mathematical review, amortization, empirical case studies and experimentation.
2. Fundamental Techniques, Chapter 5 and Induction and Recursion Handouts from COS250 Rosen Text
The Greedy Method, Divide and Conquer Recurrence Equations, Recursive definitions and structural induction, recursive algorithms, Dynamic Programming,
3. Data Abstractions and Basic Data Structures, Chapter 2
A continuation from COS221/COS226. Trees, Priority Queues and Heaps, Dictionaries and Hash Tables.
4. Search Trees and Skip Lists, Chapter 3
Introduction, Ordered Dictionaries and Binary Search Trees, AVL Trees, Bounded Depth Search Trees, Splay Trees, Skip Lists.
5. Sorting, Sets, and Selection, Chapter 4
Merge Sort, the Set ADT, Quick Sort, Lower Bounds, Bucket and Radix Sort, Comparison of Algorithms, Selection.
6. 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.
7. Weighted Graph algorithms, Chapter 7
Weighted graphs, shortest path algorithms, minimum spanning trees.
8. Text Processing, Chapter 10
String and pattern matching algorithms, tries, text compression, text similarity
9. Network Algorithms, Chapter 11
Complexity measures and models, fundamental distributed algorithms, broadcast, unicast, and multicast routing
10. 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, computing with DNA.

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 7 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.


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 pair of students will be randomly assigned two problems from this repository, one from each of the following three categories:
  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 for you and your fellow students, check the Projects page.

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

Your task is to propose, design, implement, and analyze at least two applications for each of your two assigned problems, and then write a paper discussing the major issues of that problem class in the context of your analysis. 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 your problem class only if it contributes to your 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 15, 3 weeks before the end of the semester. This will give me a chance to grade and hand back your work, and have a class discussion about projects before the final exam.

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.


Last updated: 1/14/08