Syllabus.html

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