**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*, 2^{nd} ed.,
Addison-Wesley, 2005

Reference: R.F. Gilberg and B.A.
Forouzan, *Data Structures A Pseudocode
Approach with C*, 2^{nd} 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.