Course schedule (tentative)

Each class will be separated in two hours, with a pause in between. The topic of each half is indicated in the table below. This schedule is only indicative, deviations will occur. However, it gives you a pretty good idea what will be covered and at what pace.

 The projects will give you an idea of what will be assigned. Each project consists of implementing a small routine in a library, an algorithm, or a mini-application. I will supply the frame and some test cases. All you do is implement the routine within the specifications I give you. Your grade will depend on correctness, speed, and style of implementation, as well as the documentation of your design.
 
Date Topic Homework presentation Homework due
Jan 22nd 2003 Introduction, classical algorithms libraries
C++ (classes, member functions, derivation)
Small C++ programs None
Jan 29th Advanced C++ (typename, explicit keywords, templates)
C++ Standard Template Library (design, general)
Small C++ programs with template None
Feb 5th C++ STL (iterators, generic algorithms)
Concept checking
C++ STL extensions Small C++ programs
Feb 12th No class (make-up class later) None None
Feb 19th Policy-based design
TBA (for instance, a template database library) C++ STL Extensions
Feb 26th Design Patterns
Applications of Design Patterns
None
None
March 5th Overview C++ Metaprogramming techniques
Generalized Functors
TBA
 TBA

March 12th Object Allocation
Smart pointers


March 19th SPRING BREAK --- No classes

March 26th Geometric algorithms 
Overview CGAL library
A small generic geometric kernel

TBA
April 2nd Case study: the Boost.interval library
More Boost.numeric types libraries


April 9th Case study: the Boost Graph library
More combinatorial algorithms libraries

First draft final projects
April 16th Case studies: TBA


April 23rd Project presentations (15 mins per person)  None Final projects will be due to the instructor no later than May !
April 30th
Make-up class for Feb 12th
More project presentations
Final project discussions, brainstorming