CS211 Winter 2004 Syllabus

 

Week 1

 

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.<= span style=3D'font-size:10.0pt;font-family:Arial'>

 

 

Week 2

 

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

 

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

 

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<= /p>

 

Homework 2 due

Homework 3 out, 2 weeks

 

Week 5

 

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

 

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

 

Monday

 

Introduction to inheritance

 

Tuesday

 

Discussion

Exercises related to inheritance basics

 

Wednesday

 

More inheritance

 

Friday

 

Polymorphism

 

Week 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

 

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

 

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 invoc= ation.

C++ procedure call model

Recursive versus iterative procedures<= /p>

 

 

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<= /p>