Untitled document
Continued study of computer programming including specification and implementation of data structures, and analysis of associated algorithms. Topics include: abstract data types, dynamic memory, templated functions and classes, iterators, exception handling, linked lists, stacks, queues, recursion, trees, searching, sorting, and inheritance. Several significant programming projects are written in C ++.
Untitled document
Continued study of computer programming including specification and implementation of data structures, and analysis of associated algorithms. Topics include: abstract data types, dynamic memory, templated functions and classes, iterators, exception handling, linked lists, stacks, queues, recursion, trees, searching, sorting, and inheritance. Several significant programming projects are written in C ++.
(Grade or P/NP)
Untitled document
Upon completion of the course, students will be able to:
1. Analyze algorithms for efficiency.
2. Use data abstraction as a tool for modeling.
3. Construct linked lists, pointers, queues, stacks, and trees as abstract data types.
4. Design and construct iterative approaches to algorithm development.
5. Evaluate a variety of sorting and searching methods for efficiency.
Untitled document
A. Abstract data types: operator overloading
1. Overloading arithmetic, shorthand arithmetic, and relational
operators
2. Overloading the insertion and extraction operators
3. Overloading the pre and post decrement and increment operators
4. Overloading the square brackets (subscript) operator
5. Overloading operators as member functions, free (global)
functions, and friend functions.
6. Default parameters
B. Pointers and Dynamic Memory
1. Address operator
2. Dereference (indirection) operator
3. Pointer assignment
4. Arrow (dereference and select) operator
5. Arrays of pointers
6. "NULL"
7. Relationship of arrays and pointers
8. "new" operator
9. "delete" operator
10. Memory leaks
11. Reference types
C. Dynamic memory in classes
1. Assignment operator, including checking for self-assignment
2. Copy constructor
3. Destructor
4. Object lifetime management
D. Container Classes
1. Documenting member functions with pre/post conditions
2. Using std::size_t
3. Returning a reference
4. User defined namespaces
E. Linked lists
F. Templated functions and classes
G. Iterators, including user-defined
H. Standard Template Library
I. Exception handling
J. Stacks, including expression evaluation
K. Queues
L. Recursion
1.Development techniques
2.Analysis techniques
M. Trees: specification, implementation, and big-O analyses of
1.Binary search trees
2.Heaps
N. Searching Algorithms: specification, implementation, and big-O analysis of
1.Sequential search
2.Binary search
3.Hashing
O. Sorting Algorithms: specification, implementation, and big-O analysis of
1. Selection sort
2. Insertion sort
3. Bubble sort
4. Merge sort
5. Quicksort
6. Heapsort
P. Inheritance
1. Contrasted with composition
2. "is-a" relationship and "has-a" relationship
3. Protected
4. Constructors in inheritance
5. Initializor lists
6. Polymorphism and virtual functions
7. The slicing problem
8. Pure virtual functions and abstract classes
Q. String Processing
Untitled document
Data Structures and other Objects Using C++, by Michael Main and Walter Savitch, Addison Wesley Longman, 5th edition, 2013.