The following are expectations of what you should know based on material
covered in lecture and Chapter 1, Sections 2.5, 2.6, 3.4, 3.5, 4.1,
5.1-5.3, 6.1-6.3 and Appendix A in the Shiflet text.

Understand Project 1 and the labs.

Know and be able to use basic programming techniques (basic I/O, if
statement, conditionals, functions, arrays, typedefs, #define statement).

Understand that all parameters are passed in C using call-by-value and that
to return a value, the address of variable must be passed.

Understand the meaning of * and & when they followed are followed by a
variable name.  Understand how to correctly use the symbols.

Understand that parameters in C++ can be passed as call-by-reference where
any changes made to the parameter are reflected in the corresponding
variable passed to the function.

Understand that a string in C/C++ is represented as an array of characters
terminated by a NULL character.  Know how basic string manipulation
routines work.

Know that a reference to an array (such as an array of characters) always
refers to the address of that array.

Understand when structures should be used and how to refer to specific
elements of a structure.

Understand how structures containing structures as well as arrays of
structures are declared and used.

Know what is meant by an Abstract Data Type.

Be familiar with the concepts of encapsulation, polymorphism and
inheritance as they apply to an object-oriented language.

Understand three methods for implementing an ADT: separate data and
functions; combined data (structure), separate functions; combined data and
functions (class).

Understand that C++ uses the class definition for encapsulation.

Know the basic format of a class definition.

Know that methods refer to the member functions of a class.  Know how to
declare the method prototypes and methods themselves.

Understand how the scope of variables works in a member function.

Be familiar with class constructors and destructors in terms of how they
are named and when they are invoked.

Know that stacks exhibit LIFO behavior.

Know what the basic stack operations of push() and pop() do.

Be able to trace through a set of push() and pop() operations.

Know how to implement a stack using arrays of elements and a class.  Know
how the basic operations work on the array.

Know how to initialize the array implementation of a stack.

Know that queues exhibit FIFO behavior.

Know what the basic stack operations of addqueue() and deletequeue() do.

Be able to trace through a set of addqueue() and deletequeue() operations.

Know how to implement a queue using arrays of elements and a class.  Know
how the basic operations work on the array.

Know how to initialize the array implementation of a queue.

Know how to keep track of whether a circular queue implementation of a
stack is empty or full.

Know the general outline of a maintaining a sorted queue of elements using
an array implementation.

Know how to declare a structure used in a linked list.

Know what the value NULL is used for with pointers.

Know that a pointer variable initially has an undefined value and using it
as such will lead to errors.

Know how to dynamically create memory using the new operation.

Know how to free dynamically created memory using the delete operation.