Generic Programming and Library Development

Quarter 4, 2008

> Home

The CPH STL project

The Open Tissue
The OpenTissue project

Course description

The purpose of this course is to provide a deep understanding of the C++ programming language and its standard library. Advanced programming techniques such as static polymorphism, policy classes, metaprogramming, and expression templates are described, and it is shown how these techniques are used in modern library development. Most part of the examples come from libraries being developed at DIKU, but other libraries will be considered as well.

Warning: This is a work-intensive course!

Course team


  • Tuesday from 10.00 to 12.00 in Aud 3 at HCØ
  • Afternoon films on 29 April & 3 June from 13.00 to 15.00 in N037
  • Inspection meetings on 27 May from 12.00 to 18.00 in N034 & N037 & Jyrki's office
  • Friday from 10.00 to 12.00 in Aud 3 at HCØ
  • First lecture on 22 April


  • Students should have basic C++ experience

Study credit

  • 7.5 ECTS

To get the credit:

  • Each student must pass at least two of the four assignments. To pass an assignment students must
    • hand in max. 4 pages
    • PDF file using the CPH STL LaTeX style
    • before the given deadlines.
  • Each student must give at least one oral presentation
    • 15 minutes
    • hand in 5-10 slides
    • PDF file using, for example, the CPH STL LaTeX style.
  • Each student must hand in a mini-project report
    • maximum of 12 pages (excluding the appendix)
    • PDF file using the CPH STL LaTeX style.
  • Each student must take the oral exam.

Handing in is done by uploading PDF files on the ISIS course homepage, or by committing the associated files to the CPH STL CVS repository. Reviews, mini-projects, and and presentations can be done in groups of at most three people.


Grades will be given according to grade points achieved by each students. It is possible to obtain grade points as follows:

  • assignments: 20-40 points
  • presentation: 10 points
  • mini-project report: 0-20 points
  • oral examination: 0-30 points.

Grade points are converted into grades according to the following table:

Grade pointsGrade
0-49 points F, Fx
50-59 points E
60-69 points D
70-79 points C
80-89 points B
90-100 points A


Our main textbook is


  • Chapter 21, Steve McConnell, Code Complete: A Practical Handbook of Software Construction, 2nd Edition, Microsoft Press (2004)
  • Chapter 23, British Standards Institute, The C++ Standard: Incorporating Technical Corrigendum 1, BS ISO/IEC 14882:2003, John Wiley and Sons, Ltd. (2003)
  • Appendix E, Bjarne Stroustrup, The C++ Programming Language, Special Edition, Addison-Wesley (2000)

The web is a wonderful resource for finding papers. We will generally not provide any supplementary papers in class or as links on this page. Instead it is part of the exercise to find them. Use a search engine like Google (or Google Scholar or ACM Digital Library) to find the papers mentioned below as well as other relevant literature.

  • Alexandre Duret-Lutz, Thierry Géraud, and Akim Demaille, Design patterns for generic programming in C++, Proceedings of the 6th Conference on USENIX Conference on Object-Oriented Technologies and Systems (2001)
  • Gabriel Dos Reis and Bjarne Stroustrup, Specifying C++ concepts, ACM SIGPLAN Notices, 41,1 (2006), 295-308
  • Douglas Gregor et al., Concepts for C++0x (revision 1), Technical report N1849=05-0018, ISO/IEC JTC 1 (2005)

Tools and software

Image Lab is located in Room S010 and includes the following equipment:

  • Windows PCs
  • Visual Studio® .NET 2005

Please follow the rules. The Visual C++ compiler for Windows can be acquired from MSDNAA.

CPH STL LaTeX style files can be downloaded from http://www.cphstl.dk/tools.html

For creating slides try The LaTeX Beamer Class Homepage

Other information

  • Confused about quarters? [ISIS]
  • Our textbook [home page]
  • Course in Quarter 4. 2007 [home page]
  • The Performance Engineering Laboratory [home page]
  • Making projects for the CPH STL [HTML]
  • The Image Group [home page]
  • A selection of student project proposals from the image group [HTML]
This page was last modified by Jyrki Katajainen on 09.06.2008.