CR: COMP 2404 Learning Objectives: Difference between revisions
Line 50: | Line 50: | ||
=Topics= | =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 |
Revision as of 14:52, 11 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
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