Lecture Summer 2003: Algorithm Library Design

by Juha Kärkkäinen, Lutz Kettner, and Sylvain Pion


Course Goal

To learn how to implement software libraries, such as STL, CGAL, LEDA, ..., that have a focus on algorithms and data structures. To learn advanced programming techniques in C++, such as templates, generic programming, object-oriented design, design patterns, and large-scale C++ software design.

Prerequisites

Programming knowledge in C. Knowledge of an OO language such as C++, Java, Eiffel or Smalltalk is a plus but not a must.


Homeworks

Homework 1 Tu 22.04, due Tu 29.04.  
Homework 2 Tu 29.04, due Th 08.05., 4pm.   Solution: fibonacci_sol1.C, fibonacci_sol2.C, fibonacci_sol3.C, and fibonacci_old.C.
Homework 3 Tu 13.05, due Th 22.05., 4pm.   Solution: oo_iterator_solution.C, oo_template_iterator.C.
Homework 4 Tu 27.05, due Th 05.06., 4pm.   Solution: placeholder_solution.C
Homework 5 Tu 10.06, due Th 19.06., 4pm.   Solution: list_generator_solution.h, list_example_solution.C. (list_components.h).
Homework 6 Fr 20.06, due Th 03.07., 4pm.
Homework 7 Fr 11.07, due Tu 22.07.   (project milestone only)


Schedule

1.  Tu 22.04.: General organization and overview. [Kettner]
2.  Th 24.04.: The C++ Language. [Kettner]
3.  Tu 29.04.: The C++ Language. [Kettner]
Th 01.05.: Maifeiertag
4.  Tu 06.05.: The C++ Language. [Kärkkäinen]
5.  Th 08.05.: STL and Generic Programming. [Kärkkäinen]
6.  Tu 13.05.: STL and Generic Programming. [Pion]
7.  Th 15.05.: STL and Generic Programming. [Pion]
8.  Tu 20.05.: Building and Documenting a Library. [Kettner]
9.  Th 22.05.: Design Strategies. [Kärkkäinen]
10.  Tu 27.05.: Intermediate Project Presentation. [All]
We 28.05.: Intermediate Project Presentation (Cont'd). 2.30pm-4pm, 4.15pm-6pm [All]
Th 29.05.: Christi Himmelfahrt
11.  Tu 03.06.: Design Strategies. [Kärkkäinen]
12.  Th 05.06.: Design Strategies. [Kärkkäinen]
13.  Tu 10.06.: Advanced C++ Programming. [Kärkkäinen]
14.  Th 12.06.: Advanced C++ Programming. [Kärkkäinen]
15.  Tu 17.06.: Advanced C++ Programming. [Kärkkäinen]
16.  We 18.06.: Computational Geometry Algorithms Library (CGAL). [Pion]
Th 19.06.: Fronleichnam
17.  Tu 01.07.: Computational Geometry Algorithms Library (CGAL). [Pion]
18.  We 02.07.: Computational Geometry Algorithms Library (CGAL). [Pion]
19.  Th 03.07.: Design Patterns. [Kettner]
20.  Tu 08.07.: Design Patterns. [Kettner]
21.  Th 10.07.: Template Metaprograms. [Pion]
22.  Tu 15.07.: Template Metaprograms. [Pion]
23.  Th 17.07.: Template Metaprograms. [Pion]
24.  Tu 22.07.: Large-Scale C++ Software Design. [Kettner]
25.  We 23.07.: Final Project Presentation. 2.15pm-4pm, 4.15pm-6pm [All] (new schedule)
Th 24.07.: Final Project Presentation (Cont'd). [All]

Useful Links


Lutz Kettner (<surname>@mpi-inf.mpg.de). Last modified on Tuesday, 17-Jan-2006 17:53:40 MET.