Course Information

advertisement
ICOM 4035
Data Structures
Fall 2011
First Semester 2011-2012
Section: 050
Room S-205
Class: LWV 11:30-12:20 pm
Office Hours: Tuesday MJ 12:00-1:30 pm.
Credits: 3
Professor: Vidya Manian
Office: CID Bldg. 2nd floor, Larsip Room 221
Telephone: 832-4040, Ext. 5845.
E-mail: manian@ece.uprm.edu
Email: manian@ece.uprm.edu
Course Description
Introduction to the design, analysis and implementation of data structures and sorting algorithms,
using object-oriented programming techniques. Study of computational complexity and Big-O
notation. Design and implementation of abstract data types and containers classes: Vector, List,
Set, Sequence, Table, Stack, Queue, Priority Queue, Tree, and Graph. The list of concrete
structures to be studied includes: dynamic arrays, linked lists, Bit vectors, binary trees, binary
search trees, 2-3 Trees, heaps, hash tables, adjacency matrices and adjacency lists. Recursion,
generics and inheritance will be used extensively.
Textbook: Michael T. Goodrich, Roberto Tamassia, “Data Structures and Algorithms in
Java”, (4th Edition) John Wiley and Sons, 2005.
References:
Mark Allen Weiss, Algorithms, data structures and problem solving with C++ , Addison
Wesley, 1996.
Internet, google search on topics, textbook website.
Class participation 5%
Partial Exams (3) 45%
Exam 1: September 15 2011 4:30 to 6:30 pm
Exam 2: October 20 2011 4:30 to 6:30 pm
Exam 3: November 28 2011 4:30 to 6:30 pm
Projects: 20%
Laboratory: 10%
Final Exam: 20%
1. Object-Oriented Design – general review of the O-O design, and using Java in particular.
Design goals, design principles, design patterns, inheritance, polymorphism exceptions,
interfaces and abstract classes, casting and generics.
2. Arrays, Linked Lists, and Recursion – revisit arrays and introduce the linked list data
structures and how both can be used as data structures to support implementation of more
abstract collections. Revisit recursion and discuss general strategies to develop recursive
algorithms and how recursion is handled.
3. Analysis Tools – useful functions, general approaches for the analysis of algorithms to
measure effort and determine correctness.
4. Stacks and Queues – Abstract specification of stacks and queues, different implementations,
and applications
5. Lists and Iterators – Study of different types of lists, their abstract specification, different
implementations, and applications.
6. Trees – Study of the tree data structures (general trees and binary trees): specification,
implementations, and applications. Algorithms to traverse trees and tree iterators.
7. Priority Queues – Study of the priority queue, different implementations, and their
applications. Study of heap data structure and the heapsort method to sort comparable
elements in an array.
8. Maps and Dictionaries – The Map and the Dictionary data structures, their specification,
and implementations. Hash-based implementations and applications.
9. Search Trees - Application of trees to the implementation of indexes to improve
performance in the operations to access elements, and to store elements in collections of
objects. In particular, we will study: binary search trees and balanced trees.
10. Sorting, Sets, Selection – Sorting methods: merge-sort, quick-sort, bucket-sort, and radixsort. Lower bounds for sorting. The Set ADT and its implementation. Selection.
11. Graphs – Introduction to graph theory concepts, different types of graphs, data structures for
graph implementations, typical algorithms for traversing graphs, shortest paths, and
applications.
Download