CS211 Winter 2004


Week 1

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)


Monday

Introduction, Administrivia, Philosophy, Overview


Tuesday

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


Wednesday

Expressions in more detail

Arithmetic expressions

Logical expressions

Procedure definition and invocation


Friday

Finish up procedure call/invocation model

Introduction to development environments

UNIX command line tools

Visual C++ 6.0

Cygwin

Homework 1 out.


Week 2

Reading:

Deitel & Deitel Ch2 (important sections 2.1 - 2.7, 2.12 - 2.20)

Deitel & Deitel Ch 4 (important sections 4.1 - 4.4)


Monday

Sequencing

Conditionals

if

switch

Iteration

do/while

while

for


Tuesday

Discussion section

C++ basics and Homework 1 related exercises

(1890 Maple CS lab?)


Wednesday

Introduction to arrays and pointers

Reference variables

Good programming style


Friday

More pointers

Old style C strings

String standard library

Pointers to functions

Homework 1 due

Homework 2 out (2 weeks)


Week 3

Reading:

Deitel & Deitel Ch 5 (important sections 5.1 - 5.4, 5.7 - 5.9)

Deitel & Deitel Ch 6 (6.1 - 6.4)


Monday

No class meeting, MLK Holiday


Tuesday

Discussion, array and pointer exercises

Homework 1 back, solutions discussed

Homework 2 questions


Wednesday

Introduction to structures


Friday

Dynamic memory allocation

Structures and pointers


Week 4

Reading:

Deitel & Deitel Ch 6 (6.5 - 6.17)


Monday

Introduction to classes

Encapsulation

Construction

Declaration

Member/instance variables

Member functions/methods

Instance creation


Tuesday

Discussion,

Pointer, structure, & dynamic memory allocation exercises


Wednesday

More on classes

Details of member functions, instance variable scoping


Friday

More on classes

Classes and arrays

Dynamic allocation of class instances

Homework 2 due

Homework 3 out, 2 weeks


Week 5

Reading:

Deitel & Deitel Ch 7 (7.1 - 7.8)


Monday

Wrap up class mechanism basics


Tuesday

Discussion, Quiz 1 prep


Wednesday

Quiz 1, in class


Friday

Quiz 1 back, solution discussion

Breaking encapsulation

Friend classes

Friend functions


Week 6

Reading:

Deitel & Deitel (Ch 8.1 - 8.7, 8.8, 8.10, 8.11)

Ch 12 (12.1 - 12.7)


Monday

Introduction to operator overloading


Tuesday

Discussion

Homework 4 related exercises


Wednesday

More operator overloading

Intro to C++ stream I/O


Friday

Complete C++ I/O streams

Homework 3 due

Homework 4 out (due 2 weeks)


Week 7

Reading:

Deitel & Deitel Ch 9 (9.1 - 9.9)


Monday

Introduction to inheritance


Tuesday

Discussion

Exercises related to inheritance basics


Wednesday

More inheritance


Friday

Polymorphism


Week 8

Reading:

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


Monday

More polymorphism


Tuesday

Discussion

More inheritance and polymorphism related exercises


Wednesday

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


Friday

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

Homework 4 due

Homework 5 out


Week 9

Reading:

Deitel & Deitel Ch 11 (11.1 - 11.7)


Monday

Introduction to templates

Template functions


Tuesday

Discussion

Template related exercises


Wednesday

More template programming

Template classes


Friday

Template wrap-up

Elements of good programming


Week 10

Reading:

Handouts TBD


Monday

Elements of good programming


Tuesday

Discussion

Review for final exam, related exercises


Wednesday

Elements of good programming


Friday

Wrap up, The Road Ahead, The Rest of Computer Science

Homework 5 due


Grading

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


Laboratories


Laboratory 1

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


Laboratory 2

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


Laboratory 3

Card laboratory

Basic classes

Class declaration

Instance creation

Constructors/Destructors

Dynamic memory management

New/Delete

Pointer linked data structures

Creation and initialization

Traversal

Destruction


Laboratory 4

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


Laboratory 5

Final project

Winamp visualization plug-in lab or Virtual Machine lab

Deeper inheritance

Polymorphism

Operator overloading of class methods