Quiz#1 Topics
and Promises COP3530, Fall 1999
Topics:
1.
Abstract data type
(ADT) consists of an encapsulated state
and a set of behaviors.
An abstract implementation is a data
model specifying some abstract organization of data (an ADT’s state), e.g., a
list, a binary tree, a binary search tree, set, etc.
A data structure is the way we
represent an abstract implementation.
For example a list can be represented by an array of data items or by a
linked list of data items.
In Java or C++, a behavior is invoked by a message. Methods are used to provide
the behaviors associated with messages.
2. OOP concepts. Classes, encapsulation, hierarchies, polymorphism, static and dynamic binding.
3. Templates – class and method templates
4. Order analysis – Big-O, Omega, Theta, little-o; solving recurrence equations
5. Parallel Sorting – array architecture, even/odd exchange algorithm, analysis (cost vs work; cost/work efficiency).
6. Algorithm classifications (greedy, divide and conquer, dynamic programming)
use of amortization
7. List data model. Sublists versus subsequences. operations: insert, delete, lookup, sort, merge (two lists to one), split (one to two), concatenate, first, last, head, tail, retrieve ith, length, isEmpty, isNotEmpty
8.
Abstract Data Types based on List data model
Stack – clear, isEmpty, isFull,
push, pop
Queue– clear, isEmpty, isFull,
enqueue, dequeue
Deque – clear, isEmpty, isFull,
addLeft, addRight, removeLeft, removeRight
array and linked list
implementations
9. Maximum sublist (consecutive subsequence) problem (greedy solution) and its variants (some greedy, some not)
10.
Tree data model –
terminology, various data structures, traversals,
binary trees.
Tree data model use for abstract implementations of dictionaries. Binary Search
Tree, AVL Trees and Trie
abstract implementations.
11. Hashing. hash function; chaining; open addressing (linear, quadratic, double, random, virtual; extendible)
12.
Priority queue ADT.
priority ordered tree (POT) abstract
implementation, balanced POT abstract implementation, and heap data structure. heapify, heapSort, bubbleUp and bubbleDown
– code and analysis.
Expression trees – height,
evaluation, code generation
13.
Longest Common
Subsequence (LCS) and Longest Increasing Subsequence (LIS) Problems– dynamic
programming
Compare naive approach (exponential) versus dynamic programming (quadratic)
Promises:
1. I give you an ADT with description of semantics of each serviuce. I also give you some suggested abstract representations (data models) and, where appropriate, data structures for these representations. You must then fill in a table specifying the order of the best algorithms (assuming the most appropriate data structures, if I omit this) for each service when the specified abstract representation is used.
2. A recurrence equation to solve using inductive reasoning and then a short inductive proof to verify your assertion. I may be kind and give you the solution, in which case you must only verify this using an inductive proof.
3. A question regarding the Even-Odd Transposition parallel sorting algorithm.
4. A question about algorithms concerning subsequnces, e.g., max sum of contiguous subsequence or LCS or LIS.
5. An algorithmic and/or data structure question about lists, stacks, queues or deques.
6. An algorithmic and/or data structure question about trees, tries, BSTs or AVL trees.
7. A question about hash tables
8. A question about heaps
9. I will not have you write any long code sequences
10. The assignments, diagnostic test and sample questions are good models to use when you prepare for this quiz.