The course is divided into seven two-week sections:

- Introduction
- Inheritance and Interfaces
- Consistency and Debugging
- Efficiency and Performance
- Virtual Functions and Testing
- Wrappers and Portability
- Operator Overloading and Notation

I will try not to change the schedule during the semester, but I make no promises.

**Section 1 - Introduction**(16 January to 30 January).**Readings**-
Cargill - Chapters 0 & 1.

Kernighan and Pike - Chapters 1 & 2. **Class notes**-
Classes

Abstraction, polymorphism, and dynamic binding

Algorithm analysis and asymptotic estimates

The bridge pattern **Assignment**-
Assignment 1 available on Tuesday, 16 January

Assignment 1 due on Tuesday, 30 January at 2:00 p.m. **Test 1**- 30 January-
The answers

The grades

**Section 2 - Inheritance and Interfaces**(30 January to 13 February).**Readings**-
Cargill - Chapter 3.

Kernighan and Pike - Chapter 4. **Class notes**-
Polymorphism and templates

Assignment 1 code review

Libraries and interfaces **Assignment**-
Assignment 1 due on Tuesday, 30 January at 2:00 p.m.

Assignment 1 grades

Assignment 1 example solution

Assignment 2 available on Tuesday, 30 January

Assignment 2 due on Tuesday, 13 February at 2:00 p.m. **Test 2**- 13 February-
The answers

The grades

**Section 3 - Consistency and Debugging**(13 February to 27 February).**Readings**-
Cargill - Chapter 2.

Kernighan and Pike - Chapter 5. **Class notes**-
Classes and abstract data types

Debugging

Assignment 2 code review **Assignment**-
Assignment 2 due on Tuesday, 13 February at 2:00 p.m.

Assignment 2 grades

Assignment 2 example solution

Assignment 3 available on Tuesday, 13 February

Assignment 3 due on Tuesday, 27 February at 2:00 p.m. **Test 3**- 27 February-
The answers

The grades

**Section 4 - Efficiency and Performance**(27 February to 13 March).**Readings**-
Cargill - Chapter 7.

Kernighan and Pike - Chapter 7. **Class notes**-
Making code efficient

Assignment 3 code review **Spring Break**- No class on Tuesday, 6 March, and Thursday, 8 March
**Assignment**-
Assignment 3 due on Tuesday, 27 February at 2:00 p.m.

Assignment 3 grades

Assignment 4 available on Tuesday, 27 February

Assignment 4 due on Tuesday, 13 March at 2:00 p.m. **Test 4**- 13 March-
The answers

The grades

**Section 5 - Virtual Functions and Testing**(13 March to 27 March).**Readings**-
Cargill - Chapter 4.

Kernighan and Pike - Chapter 6. **Class notes**-
Virtual classes

The cost of virtual-function calls

Testing

A consistency case study **Assignment**-
Assignment 4 due on Tuesday, 13 March at 2:00 p.m.

Assignment 4 grades

Assignment 5 available on Tuesday, 13 March

Assignment 5 due on Tuesday, 27 March at 2:00 p.m. **Test 5**- 27 March-
The answers

The grades **Drop Day**- 26 March

**Section 6 - Wrappers and Portability**(27 March to 10 April).**Readings**-
Cargill - Chapter 6.

Kernighan and Pike - Chapter 8. **Class notes**-
Portability

Wrappers

STL vectors

Assignment 6 code review **Assignment**-
Assignment 5 due on Tuesday, 27 March at 2:00 p.m.

Assignment 5 grades

Assignment 5 example solution

Assignment 6 available on Tuesday, 27 March

Assignment 6 due on Tuesday, 10 April at 2:00 p.m. **Test 6**- 10 April-
The answers

The grades

**Section 7 - Operator Overloading and Notation**(10 April to 24 April).**Readings**-
Cargill - Chapter 5.

Kernighan and Pike - Chapter 9. **Class notes**-
Operator Overloading

Notations **Assignment**-
Assignment 6 due on Tuesday, 10 April at 2:00 p.m.

Assignment 6 grades

Assignment 6 example solution

Assignment 7 available on Tuesday, 10 April

Assignment 7 due on Tuesday, 24 April at 2:00 p.m.

Assignment 7 grades **Test 7**- 24 April-
The answers

The grades

**Open Lecture**on some tools for programmers; the lecture will be given during final-exam period, 5:30 p.m. Thursday, 3 May, Edison 123.

This page last modified on 4 May 2001.