Objectives
At the end of this course, you will be able to:
- Apply object oriented and modular design techniques to an application problem to design a software solution.
- Select the most appropriate data structure, from the data structures covered in CMPT 225, for a solution to a problem.
- Implement an application design, including an implementation of the chosen data structure(s).
- Implementations will use Java or C++.
- For each of the following data structures: lists, stacks, queues, trees, hash tables, heaps, priority queues:
- Describe them.
- List their public interface specifications.
- Implement them as ADTs, using both index-based data structures and reference (or pointer) based data structures and where appropriate, other ADTs.
- Implement data structure methods both iteratively and recursively, and discuss the the impact of the implementation choice.
- Analyze the implementations in terms of time and space efficiency (i.e. complexity).
- Discuss their advantages and disadvantages.
- Use object-oriented programming techniques, including polymorphism and inheritance. Apply these techniques to solve problems.
- Describe, implement, and analyze the time and space efficiency of the following sorting algorithms: merge sort, quick sort, and at least two simple sorting algorithms (e.g. selection sort, insertion sort, bubble sort)
- Optional for the course:
- Describe and implement graphs, including algorithms for graph traversal and searching.