- Software Development:
- convert specifications into high-level design, apply software engineering and design concepts, and express OO design in UML class diagrams
- write C++ code
- encapsulate methods and variables for an ADT into a C++ class
- develop, compile and test their programs using the standard unix/linux tool set (e.g., make/g++)
- differentiate between memory declared globally, on the stack, and on the heap
- implement functions/algorithms that pass pointers as parameters, perform pointer arithmetic and manipulate pointers
- manage memory in C++, allocate and free arrays and individual elements in heap
- design and use test cases
- Abstract Data Types (ADTs):
- define "abstract data type" and "data structure" and differentiate between the two
- define the following ADTs in terms of their data and their operations (their public interface): stack, queue, priority queue
- give examples of real-life applications of the above ADTs
- define the following data structures, and demonstrate, simulate, and trace operations on them:
- static array
- dynamic array
- circular array
- linked list (singly/doubly headed, singly/doubly linked, etc...)
- binary heap
- [balanced] binary search tree (for example: AVL and B-trees)
- [chained / open addressed] hash table
- discuss tradeoffs in designing hash functions and describe collisions
- given a set of requirements, select the most appropriate data collection ADT class, taking into account its time and space efficiency
- implement and analyze basic sorting algorithms: insertion sort, selection sort, merge sort, quick sort, heap sort, tree sort, ...
- Recursion:
- describe tradeoffs between recursive and iterative solutions to problems
- write recursive solutions to non-trivial problems, such as binary search tree traversals and recursive sorts
- write recursive definitions of binary heap and BST
- Complexity Analysis:
- analyze the best, worst, and average case running time of various ADT operations implemented by various data structures
- analyze the best, worst, and average case running time of basic sorting algorithms above
- describe alternatives for measuring the performance of an algorithm implementation such as empirical measurement of running time, by counting the elementary operations and/or O notation
- External Storage:
- perform operations on data that are too large to fit in memory, e.g.:external mergesort, index files and data files
At the end of CMPT 225 course, a student will be able to:
No comments:
Post a Comment