Things to know and things to know how to do:
- Memory
- relationship between an array and a pointer (as in
int x[10]
and int* y
)
- how to dynamically allocate memory
new
and new[]
- What's the difference?
- How do you dynamically allocate a pointer? an array of pointers?
- How do you free memory that has been dynamically allocated?
- Given a block of code, be able to draw a memory diagram
- c-strings & DSString
- How does
<<
interact with cout
and a char*
to print a c-string?
- How to interpret complex pointer offset notation expressions with cout. example:
cout << *(colors + 1);
- how strlen, strcmp, strcpy, strcat work and how to use them.
- Understand what a wrapper class is and how to implement the major functions for DSString including the overloaded operators
- Exception Handling
- How to throw an exception like
range_error
and how to catch an exception and print the .what()
.
- Template Classes
- How to declare a class with templated type parameter
- How to use that generic type in the implementation of member functions of the class
- (Doubly) Linked Lists, Stack, & Queues
- the process to push front or push back
- the process to insert a node at a particular location (within bounds)
- How to traverse a list from beginning to end.
- Know the typical interface of the Stack ADT
- Know the typical interface of the Queue ADT
- Algorithm Analysis
- Know the definition of Big O and how to interpret a 1st-quadrant graph in terms of the def'n of big O.
- Know the major classes of performance and their relative ordering (constant, logarithmic, linear, etc.)
- For a block of code, know how to determine a T(n) and then be able to justify why that block of code is in a particular performance class.
Understand the O(n^2) sorts as well as merge and quick sort (tentative depending on where we finish on Friday 6/11 in class).