University of West Florida Department of Computer Science Data Structures and Algorithms II Labs Instructor: Dr. John W. Coffey Telephone: (850) 474-3183 Email: jcoffey@uwf.edu About the Labs: The labs serve two purposes: to get an early, supervised start on the programming projects to pursue supplemental topics of interest Lab Policies Attendance is mandatory Work performed in each lab is to be submitted to me You may work individually or in small groups No lab is held on the weeks in which tests are scheduled Course Description: A second course in Data Structures and Algorithms. Topics include mathematical properties of algorithms (complexity, correctness), trees and graphs, hashing, relational (database) structures, Dynamic Programming and numerical programming. Emphasis on issues of correctness and efficiency. Students entering this course are expected to have solid knowledge of programming. Course Objectives: This course provides an overview of data structures and their implementation. The course also emphasizes good software design principles (data and procedure abstraction, recursive specifications etc.) Student Learning Outcomes Upon successful completion of this course, students will be able to: Develop solutions to problems by applying algorithms discussed in class. Develop solutions that emphasize mathematical and scientific problems. Write algorithms for solving problems prior to coding. Analyze solutions in terms of time and space complexity. Solve probability problems and counting problems with permutations and combinations. Develop programs for searching and sorting utilizing tree data structures Construct hashing functions to efficiently index into hash tables. Construct graphs and implement representative algorithms. Analyze and contrast graph based solutions. Design relational structures to organize data into records for indexing using keys. Construct solutions that make use of Dynamic Programming techniques. Solve numerical problems efficiently. Topics Recurrences and their solution, Counting methods (pigeonhole principle, inclusion/exclusion, counting trees), Permutations and combinations, Binomial coefficients, Discrete probability (conditional probability, expected values, Random Variables, Bayes' Theorem) Binary and n-ary trees, Search trees, (AVL-and B-Trees) Heaps Graphs (representation, traversal, shortest paths), Hashing (hash functions, overflow handling) Relational structures (relations, keys, relational algebra), Dynamic Programming (conditions, principles, examples, Floyd-Warshall, CYK, transitive closure) Numerical programming (equation solving, interpolation, matrix operations). Requirements and Grading: - Exams - 50% (two semester exams 15% each, final 20%) - Programming projects - 40% (5 @ 8% each) - Labs 10% Textbook: Data Structures and Algorithm Analysis in C, 2nd Edition. Mark Allen Weiss. ISBN 0-201-49840-5 Expectations for Academic Conduct: Cheating is an act of academic misconduct. Cheating is defined as the unauthorized giving or taking of any information or material on academic work considered in the determination of a grade. All deliverables you are to submit for this course are individual projects. Giving or taking any of these from someone else is cheating. If you are caught and convicted, you will receive a grade of "F" for the course and an annotation that you have been convicted of cheating will appear on your UWF record. Such an annotation may mean that you become ineligible for financial aid. Furthermore, misrepresentation of any facts relevant to the assignment of a grade is also academic misconduct.