COMP345 Fall 2020 Final written examination coverage

From Dr. Joey Paquet Web Site
Revision as of 09:49, 17 November 2021 by Paquet (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  • Notes:
    • The following is the list of topics that are included in the final written examination.
    • In general, you are responsible for all the material presented in slide set 0 to 11, along with the lab examples pertaining to them (i.e. lab 1 to lab 11)
    • Some specific topics will not be part of the examination. These are denoted with an (X) below.
  • Slide Set 0
    • none
  • Slide Set 1: introduction
    • program structure
    • compilation unit
    • header/cpp files
    • includes
    • redundant includes
    • namespaces
  • Slide Set 2: preliminary topics
    • structs and classes as data types
    • variable initialization
    • implicit/explicit type coercion
      • static_cast, dynamic_cast
      • upcasting/downcasting
    • conversion sequences
    • pointers
    • pointer artithmetic
    • pointers and const
    • void/wild/dangling/null pointers
      • stack/heap/new/delete
      • arithmetics
    • references
    • smart pointers
    • parameter passing
    • strings
  • Slide Set 3: input/output
    • input/output streams
    • cin/cout
    • files stream declarations, open/close, usage
    • << and >> operator overloading
    • MFC serialization (X)
  • Slide Set 4: classes
    • classes vs. structs
    • struct usage
    • class declarations (.h and .cpp files)
    • declaring/using objects
      • with or without pointers
    • inline functions/methods
    • const specifier
    • static specifier
    • friends
    • constructors/destructors
      • declaration/implementation
      • initialization list
      • implicit/explicit constructor calls
      • call chain
    • inheritance
      • overriding/overloading
      • vs. constructor/destructor implementation
      • assignment operator
      • copy constructor
      • shallow/deep copy
    • multiple inheritance
    • virtual inheritance
    • diamond problem
  • Slide Set 5: C/C++ arrays and dynamic arrays, containers
    • statically allocated arrays (one or multidimensional)
      • declaration, usage
      • memory allocation model
      • passing as parameters
    • dynamically allocated arrays (one-dimensional)
      • declaration, usage
      • memory allocation model
      • passing as parameters
    • array decay into a pointer
    • static array classes
    • STL containers
      • declaration, usage
      • iterators
  • Slide Set 6: MVC and observer
    • MVC design (roles of Model, View Controller components)
    • Role of Observer pattern
    • MVC example in lab
  • Slide Set 7: polymorphism
    • Polymorphism: concept vs Object-oriented programming and its implementation in C++
    • Virtual methods
    • Pure virtual methods
    • Abstract classes
    • Virtual destructors
    • vs. Java interfaces
    • Value semantics and object slicing
    • Reference semantics and polymorphism
    • Function pointers
    • Virtual function tables
  • Slide Set 8: design patterns
    • Design patterns: concepts
    • Observer: design and C++ implementation
    • Strategy: design and C++ implementation
    • Adapter: design and C++ implementation
  • Slide Set 9: operator overloading
    • operators as members or free operators
    • friend operators
    • limitations
    • use of const in operator declarations
    • assignment operator: self-assignment check, memory leak prevention
    • specific operators: new, delete, [], etc as presented in the slides
  • Slide Set 10: exception handling
    • concepts
    • try/throw/catch mechanism
    • exception handling mechanism vs regular execution mechanism
    • stack unwinding
    • exception specification
    • standard exceptions (X)
    • custom exception classes
    • overhead of using exceptions
  • Slide Set 11: templates
    • concepts: metaprogramming
    • template processor vs compilation process
    • function templates, operator templates, class templates
    • smart pointers example
    • explicit template specialization
    • class templates vs static members
    • templates vs compilation units in the compilation process (.h/.cpp files)
    • templates vs Java Generics