CR: COMP 2404 Learning Objectives: Difference between revisions
(3 intermediate revisions by one other user not shown) | |||
Line 47: | Line 47: | ||
* Gain proficiency with basic and intermediate-level C++ programming | * Gain proficiency with basic and intermediate-level C++ programming | ||
* Identify standard design patterns and programming idioms in existing code. | |||
=Topics= | =Topics= | ||
Line 82: | Line 84: | ||
== C++ Advanced Features == | == C++ Advanced Features == | ||
* Overloading | * Overloading | ||
** | ** understand how to overload functions and operators | ||
** | ** able to overload different types of operators | ||
*** stream insertion/extraction | |||
*** unary, binary | |||
*** increment/decrement, prefix/postfix | |||
** understand how to cascade function calls and recognize when it is appropriate | |||
* Templates | * Templates | ||
** function templates, class templates | ** understand reason for generic programming | ||
** able to define function templates, class templates | |||
* Polymorphism | * Polymorphism | ||
** virtual, pure virtual functions | ** understand use of virtual, pure virtual functions | ||
** static | ** understand difference between static and dynamic binding, and how to implement each one | ||
** RTTI, dynamic casting | ** know how to use RTTI functionality, especially dynamic casting | ||
* STL | * STL | ||
** | ** understand the basics of containers, iterators, algorithms, and how to use them | ||
* Files and streams | * Files and streams | ||
** understand basic operations | |||
** recognize basic overloaded operators on streams | |||
* Exception handling | * Exception handling | ||
** understand when and how to use exception handling | |||
** know how to define multiple catch blocks | |||
** understand how to gracefully unwind the function call stack when an exception is thrown |
Latest revision as of 15:56, 13 April 2011
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
- Variables
- 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
- Identify standard design patterns and programming idioms in existing code.
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++
- Understand fundamental programming constructs (review):
- variables (scope, storage class)
- program memory organization (call stack, heap)
- memory management (pointers, memory allocation)
- Able to use references, and understand difference between references and pointers
C++ Basic Classes and Objects
- Understand and be able to construct basic class definitions, using the following:
- data members, member functions
- encapsulation using access specifiers, constant members
- constructors, destructors
- friend functions, friend classes
- Understand and be able to use dynamic memory management
- Inheritance
- able to setup appropriate inheritance hierarchy
- understand how to use:
- types of inheritance
- multiple inheritance
- Able to organize code with multiple classes
- separating class definition and interface from implementation
C++ Advanced Features
- Overloading
- understand how to overload functions and operators
- able to overload different types of operators
- stream insertion/extraction
- unary, binary
- increment/decrement, prefix/postfix
- understand how to cascade function calls and recognize when it is appropriate
- Templates
- understand reason for generic programming
- able to define function templates, class templates
- Polymorphism
- understand use of virtual, pure virtual functions
- understand difference between static and dynamic binding, and how to implement each one
- know how to use RTTI functionality, especially dynamic casting
- STL
- understand the basics of containers, iterators, algorithms, and how to use them
- Files and streams
- understand basic operations
- recognize basic overloaded operators on streams
- Exception handling
- understand when and how to use exception handling
- know how to define multiple catch blocks
- understand how to gracefully unwind the function call stack when an exception is thrown