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.