

Reading:
Review SICP Ch 1
Deitel & Deitel Ch 1 (important sections 1.14, 1.19 - 1.25)
Deitel & Deitel Ch 3 (3.1 - 3.18)

Introduction, Administrivia, Philosophy, Overview

Basic syntax of C++,
Contrast with Scheme
Keywords, reserved words, literals
Basic datatypes
Basic expressions, variables
Statements and declarations
Static typing versus dynamic typing
Casting and coercion

Expressions in more detail
Arithmetic expressions
Logical expressions
Procedure definition and invocation

Finish up procedure call/invocation model
Introduction to development environments
UNIX command line tools
Visual C++ 6.0
Cygwin
Homework 1 out.

Reading:
Deitel & Deitel Ch2 (important sections 2.1 - 2.7, 2.12 - 2.20)
Deitel & Deitel Ch 4 (important sections 4.1 - 4.4)

Sequencing
Conditionals
if
switch
Iteration
do/while
while
for

Discussion section
C++ basics and Homework 1 related exercises
(1890 Maple CS lab?)

Introduction to arrays and pointers
Reference variables
Good programming style

More pointers
Old style C strings
String standard library
Pointers to functions
Homework 1 due
Homework 2 out (2 weeks)

Reading:
Deitel & Deitel Ch 5 (important sections 5.1 - 5.4, 5.7 - 5.9)
Deitel & Deitel Ch 6 (6.1 - 6.4)

No class meeting, MLK Holiday

Discussion, array and pointer exercises
Homework 1 back, solutions discussed
Homework 2 questions

Introduction to structures

Dynamic memory allocation
Structures and pointers

Reading:
Deitel & Deitel Ch 6 (6.5 - 6.17)

Introduction to classes
Encapsulation
Construction
Declaration
Member/instance variables
Member functions/methods
Instance creation

Discussion,
Pointer, structure, & dynamic memory allocation exercises

More on classes
Details of member functions, instance variable scoping

More on classes
Classes and arrays
Dynamic allocation of class instances
Homework 2 due
Homework 3 out, 2 weeks

Reading:
Deitel & Deitel Ch 7 (7.1 - 7.8)

Wrap up class mechanism basics

Discussion, Quiz 1 prep

Quiz 1, in class

Quiz 1 back, solution discussion
Breaking encapsulation
Friend classes
Friend functions

Reading:
Deitel & Deitel (Ch 8.1 - 8.7, 8.8, 8.10, 8.11)
Ch 12 (12.1 - 12.7)

Introduction to operator overloading

Discussion
Homework 4 related exercises

More operator overloading
Intro to C++ stream I/O

Complete C++ I/O streams
Homework 3 due
Homework 4 out (due 2 weeks)

Reading:
Deitel & Deitel Ch 9 (9.1 - 9.9)

Introduction to inheritance

Discussion
Exercises related to inheritance basics

More inheritance

Polymorphism

Reading:
Deitel & Deitel Ch 10 (10.1 - 10.5, 10.8)

More polymorphism

Discussion
More inheritance and polymorphism related exercises

Putting it all together: details of a C++ string class

Putting it all together: details of a C++ string class
Homework 4 due
Homework 5 out

Reading:
Deitel & Deitel Ch 11 (11.1 - 11.7)

Introduction to templates
Template functions

Discussion
Template related exercises

More template programming
Template classes

Template wrap-up
Elements of good programming

Reading:
Handouts TBD

Elements of good programming

Discussion
Review for final exam, related exercises

Elements of good programming

Wrap up, The Road Ahead, The Rest of Computer Science
Homework 5 due

50% 5 Programming labs
15% 5 Written homeworks
15% Midterm examination
20% Final examination
10% off / 90% max, first 24 hours
20% off / 80% max, second 24 hours
40% off / 60% max, third 24 hours
No credit after 3 days


Math laboratory
Basic syntax
statements
expressions
conditionals
iteration.
Arithmetic computations
Integer arithmetic
Floating point
Procedure definition and invocation.
C++ procedure call model
Recursive versus iterative procedures

Cellular automata laboratory
Arrays
1 dimensional
2 dimensional
Pointers
Pointer creation and initialization
Dangling pointers
Pointer arithmetic
Pointer/array duality
Structures
Structure declaration
Structure initialization

Card laboratory
Basic classes
Class declaration
Instance creation
Constructors/Destructors
Dynamic memory management
New/Delete
Pointer linked data structures
Creation and initialization
Traversal
Destruction

Graph laboratory
More pointer linked data structures
More dynamic memory allocation
Basic inheritance
Structural reuse
Behavioral reuse
Operator overloading
Standalone procedures
Member functions
C++ stream I/O

Final project
Winamp visualization plug-in lab or Virtual Machine lab
Deeper inheritance
Polymorphism
Operator overloading of class methods