581251 Software Design (C++) (ohtk 25.8.2011)

Principal theme Prerequisite knowledge Approaches the learning objectives Reaches the learning objectives Deepens the learning objectives
  • developing secure and efficient C++ programs
  • C programming
    (or similar skills)
  • list and explain the main abstraction mechanisms
  • explain the components and use of the standard STL library
  • explain the need for user-defined checks (asserts)
  • use predefined class templates
  • use simple textual IO
  • list and explain the problems of manual memory management
  • explain features: explicit, friend, virtual, const, zero-argument constructor, copy constructor
  • use input/output and string libraries
  • use vectors, lists, and maps
  • explain smart pointers
  • explain the problems with the typing system and run-time error handling
  • use protection and check facilities to improve the reliability of programs
  • use const when defining data and functions
  • explain problems of initialization and to solve them
  • manage the life-time of dynamic objects (create and destruct)
  • explain general resource handling and the related problems and shortcomings of the language
  • create abstractions to solve the problems of resource handling
  • explain the need of stardardized copy and release operations for value types
  • implement the standard copy/release operations
  • utilize pre- and post-conditions and class invariants
  • explain and implement exception safety
  • explain the need of virtual functions (why, when, and how) 
  • explain self-assignment check
  • design and implement simple class and function templates
  • explain implementation strategies for dynamic and static function dispatch
  • describe the efficiency and reliability properties of the standard library
  • describe the run-time implementation structure of classes and objects
  • explain vtable
  • prevent coping of values of a class
  • prevent local variable declarations of certain class types
  • prevent dynamic allocation objects of certain classes
  • explain slicing problem
  • implement efficient low-level system components or run-time support libraries (e.g., virtual machines)

 

31.10.2011 - 16:43 Juha Vihavainen
29.10.2011 - 19:44 Juha Vihavainen