Course Objectives
   Source: Computing Concepts with C++ Essentials
   Author: Cay Horstmann
  Publisher: John Wiley & Sons, Inc.
  - Introduction
 
  
    - To understand the activity of programming
 
    - To learn about the architecture of computers
 
    - To learn about machine languages and higher-level programming
languages
 
    - To become familiar with your compiler
 
    - To compile and run your first C++ program
 
    - To recognize syntax and logic errors
 
  
  Fundamental Data Types
  
    - To understand integer and floating-point numbers
 
    - To write arithmetic expressions in C++
 
    - To appreciate the importance of comments and good code layout
 
    - To be able to define and initialize variables and constants
 
    - To recognize the limitations of the int and floattypes
and the overflow and roundoff errors that can result
 
    - To learn how to read user input and display program output
 
    - To be able to change the values of variables through assignment
 
    - To use the ANSI C++ standard string type to
define
and
manipulate character strings
 
    - To be able to write simple programs that read numbers and text,
process
the input, and display the results
 
  
  Objects
  
    - To become familiar with objects
 
    - To learn about the properties of several sample classes that
were
designed
for this book
 
    - To be able to construct objects and supply initial values
 
    - To understand member functions and the dot notation
 
    - To be able to modify and query the state of an object through
member
functions
 
    - To write simple graphics programs containing points, lines,
circles,
and
text
 
    - To be able to select appropriate coordinate systems
 
    - To learn how to process user input and mouse clicks in graphics
programs
 
    - To develop test cases that validate the correctness of your
programs
 
  
  Basic Control Flow
  
    - To be able to implement decisions using if statements
 
    - To understand statement blocks and nesting
 
    - To learn how to compare integers, floating-point numbers, and
strings
 
    - To develop strategies for processing input and handling input
errors
 
    - To recognize the correct ordering of decisions in multiple
branches
 
    - To program conditions using Boolean operators and variables
 
    - To avoid infinite loops and off-by-one errors
 
  
  Functions
  
    - To be able to program functions and procedures
 
    - To become familiar with the concept of parameter passing
 
    - To recognize when to use value and reference parameters
 
    - To appreciate the importance of function comments
 
    - To be able to determine the scope of variables
 
    - To minimize the use of side effects and global variables
 
    - To develop strategies for decomposing complex tasks into
simpler ones
 
    - To learn how to design programs that solve practical problems
 
    - To document the responsibilities of functions and their callers
with
preconditions
 
    - To be able to program recursive functions
 
  
  Classes
  
    - To be able to implement our own classes
 
    - To master the separation of interface and implementation
 
    - To understand the concept of encapsulation
 
    - To design and implement accessor and mutator member functions
 
    - To understand object construction
 
    - To learn how to discover new classes and member functions
 
    - To learn how to use object-oriented design to build complex
programs
 
  
  Advanced Control Flow
  
    - To be able to program loops with the while, for
and do/while statements
 
    - To learn how to read input from a file through redirection
 
    - To learn how to process character, word and line input
 
    - To implement approximations and simulations
 
    - To avoid infinite loops and off-by-one errors
 
    - To understand nested loops and nested variable scopes
 
  
  Testing and Debugging (self study)
  
    - To learn how to design test stubs for testing components of
your
programs
 
    - To understand the principles of test case selection and
evaluation
 
    - To be able to use assertions to document program assumptions
 
    - To become familiar with the debugger
 
    - To learn strategies for effective debugging
 
  
  Vectors and Arrays
  
    - To become familiar with using ANSI stand vectors to collect
objects
 
    - To be able to access vector elements and resize vectors
 
    - To be able to pass vectors to functions
 
    - To learn about common array algorithms
 
    - To be able to build classes containing vectors
 
    - To learn how to use matrices for two-dimensional collections