CSc 3102 Advanced Data Structures and Algorithmic Analysis

Fall 2007

 

Course: Tues & Thurs 9:10-10:30 AM Coates 212

Instructor: Donald H. Kraft Office: 286 Coates Phone: 578-2253

Email: kraft@csc.lsu.edu Web: http://www.csc.lsu.edu/~kraft

Grader: Email:

Text: A. Levitin, Introduction to the Design & Analysis of Algorithms, 2nd ed., Addison-Wesley, 2005

Reference: R.F. Gilberg and B.A. Forouzan, Data Structures A Pseudocode Approach with C, 2nd ed., Thomson, 2005

Credits: 3 hours

Prerequisites: CSc 1254 or 1351 (advanced programming skills, concepts of abstract data types ADTs, complex data structures such as linked lists, arrays, stacks, queues, and binary trees) and credit or concurrent enrollment in CSc 2259 or EE 2720 (logic, set theory)

Course Catalog Description: Description and utilization of formal ADT representations, especially those on lists, sets, and graphs; time and space analysis of recursive and nonrecursive algorithms, including graph and sorting algorithms; algorithmic design techniques.

Course Outcomes: Have a basic ability to analyze algorithms and to determine algorithm correctness and time efficiency class; Master a variety of abstract data types and data structures and their implementations; Master different algorithm design techniques (e.g., brute-force, divide-and-conquer, greedy); Have ability to apply and implement learned algorithm design techniques and data structures to solve problems.

Topics:

Algorithm Design and Analysis

General introduction, fundamentals of algorithm analysis,

metrics O, W, and Q Chaps. 1-2

Brute-force algorithms Chap. 3

Decomposition/reduction/transformation

techniques Chaps. 4-6

Other algorithm design techniques Chaps. 7-9

Advanced Data Structures

Review of linear data structures (e.g., linked lists,

arrays, stacks, queues, priority queues) Chap. 1

Trees (e.g., general trees, binary trees, binary search

trees, AVL trees, 2-3 trees, heaps, B-trees) Chaps. 1, 4, 6

Sets, dictionaries, hashing Chaps. 1, 7

Graphs (e.g., undirected, directed, weighted) Chap. 7

Applications

Sorting Chaps. 3-5, 7

Searching Chaps. 6-8

String search (e.g., web queries) Chap. 7

Graphs (e.g., DFS, BFS, shortest path, topological

sorting, minimum spanning tree) Chaps. 5, 8-10

Combinatorial (e.g., traveling salesman) Chaps. 5, 12

Geometric (e.g., convex hull) Chap. 3

Numeric algorithms Chap. 4

Theoretical Issues (if time permits)

Limits on algorithmic power Chap. 11

Grading:

Homework (5-7 homeworks) 15%

Hard copy if possible, if late up to 3 days then lose 10 points/day

Program/Project Assignments (4-6) 30%

Submit source code and output, can submit electronically

If late up to 5 days then lose 10 points/day

Midterm examination 25%

Final examination 25%

Participation 5%

All homework and programming and project assignments are to be done individually, not in teams, unless specified by the instructor!

 

Examples of homework:

Implement an AVL tree ADT using the insertion and search algorithms. Use this ADT to construct a directory of book titles held in various libraries. The program should be able to answer queries to the directory about book titles.

Implement a graph ADT containing procedures to perform graph traversals (DFS, BFS), test graph connectivity for an undirected graph, do topological sorting for a directed graph.

Redo the directory of book titles using a b-tree and/or an open-hashing algorithm.