Goals of CS201
  1. C++ Basics
    1. Comparing C++ and Java
    2. Programming style
      1. Indenting
      2. Variable and function names
      3. What makes a good function
      4. Commenting
    3. main() function
    4. #include files
    1. Relative and absolute
    2. The common files
  2. Stream I/O
    1. iostream.h
    2. The escape charactors (\n \b \\ \" \t)
    3. endl
  3. C++ types
    1. Numeric types
      1. The Heirarchy
      2. Overflow and underflow
      3. Promotion and order of operation
      4. Chars
        1. Converting between ASCII char and numbers
      5. Typecasting
        1. Syntax
        2. What can be converted
        3. Constants
    2. Strings
      1. Definition
        1. char * style strings
        2. pascal style strings
        3. the string class
      2. Reading in a string
        1. Using cin (no whitespace allowed)
        2. Using getline (allows whitespace)
      3. String manipulation (appends, truncate, search, etc)
      4. The builtin string functions
        1. strlen
        2. strcpy
        3. strcat
      5. Converting to upper and lower case.
      6. Using the 'string' class
        1. #include
        2. Builtin functions
      7. File I/O
        1. Opening a file
          1. Various modes
          2. Error Detection
        2. Reading and Writing
        3. Read
        4. Write
        5. Lseek including the whence parameter
        6. Error Detection
        7. Reading binary data
      8. Effects of caching on file i/o
        1. Closing a File
        2. Error ignoring
  4. Pointers
    1. What does ++ and -- and +=4 mean?
    2. Pass by Reference vs. Pass by Value
    3. Null Pointer
    4. How does new() return out-of-memory?
  5. Learn C++ Objects
    1. All the normal object stuff from Java
    2. Protection:   public private friend protected
    3. New C++ Constructor features
      1. Copy Constructors
      2. Default copy constructor
    4. Destructors
    5. Operator overloading
      1. One vs Two argument operators
      2. What can be overloaded
      3. What cannot be overloaded ( . -> * ( ) &  )
      4. Will the compiler do arithmatic optimization
      5. Default operator=
      6. Deep vs shallow copies
      7. Signatures of some basic operators like +, *, cout << , etc.
    6. Inheritence
      1. Order of construction
      2. Order of destruction
      3. Calling the superclass's constructor
    7. Virtual
    8. Abstract virtual
    9. What is the type of 'this'.
  6. Algorithms
    1. Binary Search
    2. Linked List
    3. Hash tables
  7. Templates
    1. What is compilable code
    2. What types can be used in a template
  8. Extras
    1. inline
    2. Making header files
  9. Dress up day.
    1. Dressing well
    2. Dressing badly