Final exam: 12:45 - 3:00pm Wed Dec. 11 Consultation: 11:00am -1:00pm Monday, Dec 9th TOPICS (not an exhaustive list) * structures - name and purpose of an aggregate construct structure variables, member variables, assigning structures passing structure as a parameter, complex structures, arrays of structures, arrays as member variables of a structure * classes - purpose, advantages over structures, public/private members, inline/outside function definition, mutators/accessors, constructors, constructor overloading and default constructor, friend functions, static constants * pointers - definition and usage, pointers and constants, array names and pointers, null/loose pointer, pointers to objects (arrow operator), pointer arithmetic, passing pointers by value and by reference, returning pointers * dynamic memory allocation - static/dynamic/automatic variables, allocation for basic types, for arrays, for objects, allocation of objects with dynamic members: the big three (destructor, copy constructor, assignment overloading); memory leak problem for assignment overloading, protection against self-assignment, implementing stackability * vectors - advantages over (raw) arrays, declaring, adding/removing element, comparing/assigning vectors, passing by value/reference returning, iterators, iterator arithmetic, using iterators to insert, erase elements, sort vector * multidimensional arrays - reasons for use, declaring, usage with loops, passing to functions, vectors of vectors - declaring, accessing elements, ragged (jagged) array, changing rows and columns in an individual row * recursion: purpose, specifics of solving a task recursively, function definition vs. invocation. Specifics of recursive function definition; stopping case, infinite recursion/stack overflow; iteration vs. recursion * diagrams - purpose, structural vs. behavioral diagrams, class diagrams: aggregation, multiplicity relation, member visibility; object diagrams: difference from class diagrams; use case diagrams: actors, use cases, system boundary; state diagrams: initial/final state, state, transitions NOT COVERED * namespaces: name collision; defining; resolving name declared in namespace; importing individual names, importing all names advantages/disadvantages, standard namespace * exception handling - purpose, try/cath block, type parameter in throw/catch. Semantics of throwing excepsions. Thowing objects. Throwing exceptions inside functions. Standard exceptions