Prerequisites: CIS 22B or equivalent
Advisory: Mathematics 212 or equivalent.
Course Description: Application of software engineering techniques to the design and development of large
programs; data abstraction and structures and associated algorithms: stacks, queues,
linked lists, trees, graphs, and hash tables; internal and external sorting; use of
recursion; team project.
Frank M. Carrano, "Data Abstraction & Problem Solving with C++", sixth edition, Walls and Mirrors
Course objectives: Upon completion of the course, the student will:
- Create programs which implement the stack data structure.
- Create programs which implement the queue data structure.
- Create programs which implement complex linear lists.
- Create recursive algorithms and relate efficiency to uses of recursion.
- Create programs which implement the binary tree, binary search tree, AVL tree, priority queues, and binary heaps data structures.
- Create programs which implement hashed tables.
- Demonstrate knowledge of advanced sorting algorithms and discuss the usage and relative advantages of various sorts and their efficiency.
- Demonstrate knowledge of external sorting algorithms.
- Create programs which implement the graph data structure.
- Apply software engineering principles including structured programming and abstract data types.
- Design and implement a team project with multiple source and header files.