CR: COMP 2404 Learning Objectives

From Soma-notes

Calendar Description

In-depth study of the language C++ from a software engineering perspective, with emphasis on features supporting the development of large efficient and reusable systems. Topics include: encapsulation, templates, references, constructors and destructors, overloading, memory management, exception handling, and the standard template library.

Assumed Background

  • Able to understand an assignment description and identify the objects that are required
  • Understand and apply basic programming conventions:
    • proper variable names
    • appropriate commenting
    • indentation using established style
  • Understand and apply basic programming constructs:
    • Variables
      • primitive data types
      • scope
      • storage class
    • Functions
      • pass-by-value
      • pass-by-reference
    • Program memory organization
      • function call stack, contents of stack frame
      • heap
      • data segment
      • code segment
    • Memory management
      • static vs. dynamic memory allocation
      • pointers, double pointers
      • garbage collection
  • Familiarity with shell environment
  • Able to build programs across multiple header and source files
  • Able to program with system calls:
    • stream and file I/O
    • signal handling
    • multiprocess programming
    • inter-process communications (sockets, RPC)
  • Able to research and understand standard library function and system call documentation

Learning Objectives

  • Gain experience in design techniques for small to medium size object-oriented programming assignments
  • Gain proficiency with basic and intermediate-level C++ programming

Topics

Software Design Techniques

  • Able to identify the required objects
  • Able to apply concepts of encapsulation to organize the required objects
  • Able to identify opportunities for code reuse and implement them

Basics of C/C++

  • Review of fundamental programming constructs:
    • variables (scope, storage class)
    • program memory organization (call stack, heap)
    • memory management (pointers, memory allocation)
  • References

C++ Basic Classes and Objects

  • Understand and be able to apply basic class definitions
    • data members, member functions
    • encapsulation using access specifiers, constant members
    • constructors, destructors
    • friend functions, friend classes
    • dynamic memory management
  • Inheritance
    • types of inheritance
    • multiple inheritance
  • Code organization
    • separating class definition and interface from implementation

C++ Advanced Features

  • Overloading
    • function overloading, operator overloading
    • cascading function calls
  • Templates
    • function templates, class templates
  • Polymorphism
    • virtual, pure virtual functions
    • static vs. dynamic binding
    • RTTI, dynamic casting
  • STL
    • introduction to containers, iterators, algorithms
  • Files and streams
  • Exception handling