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.