In this seminar students learn principles, methodologies, and
techniques for developing reusable components. In this seminar
we will explore the following questions:
• What makes one component more or less reusable than another?
• Is reusability compatible with efficiency?
• What mathematical foundations are needed to understand
reusable components?
• What programming language features and programming patterns
are needed to express reusable components?
Topics: generic programming, metaprogramming, C++ templates, concepts, generics, the Standard Template Library, generative programming
Instructor: Prof. Jeremy Siek
Location: ECEE 1B28
Textbook: Elements of Programming by Alexander Stepanov and Paul McJones (will be available for purchase in e-stores at the ECE dept.)
Class email discussion list: ecen-5043-reusable-components@googlegroups.com (google group)
Assignments:
- Implement a generic contains function that works on both linked lists and arrays. If you have the time, test the performance of your generic function versus functions hand-written in C for each specific data structure. No need to turn anything in, but please bring your code to class. Due 1/15.
- Read Chapters 1 and 2 of the Elements of Programming (EOP). Due 1/27.
- Read Chapter 3 of the Elements of Programming (EOP). Due 2/3.
- Read Chapter 4 of the Elements of Programming (EOP). Due 2/10.
- Read Chapter 5 of the Elements of Programming (EOP). Due 2/24. Give a proof that if subtractive_gcd_nonzero terminates, it returns the gcd of its arguments.
- Read Chapter 6. Due 3/10.
- Final project 1 page description. Due 3/10.
Resources:
- Web: SGI STL Documentation
- Web: Collected Papers of Alexander Stepanov
- Web: ConceptGCC
- Web: Boost Libraries
- Paper: Traits: a new and useful template technique
- Wikipedia: Curiously Recurring Template Pattern (CRTP).
- Wikipedia: The Barton and Nackman Trick.
- Paper: The Generic Graph Component Library
- Paper: A comparative study of language support for generic programming
- Paper: Concepts: linguistic support for generic programming in C++
- Video: Concepts: Extending C++ Tempaltes for Generic Programming
- Paper: Language Requirements for Large-Scale Generic Libraries
- Paper: Making the future safe for the past: Adding Genericity to the Java Programming Language
- Paper: Algorithm specialization in generic programming: Challenges of constrained generics in C++.
- Paper: Template Metaprograms
- Paper: Expression Templates
- Paper: Abstraction mechanisms in CLU
- Book: Generic Programming and the STL
- Book: STL Tutorial and Reference Guide
- Book: C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond
- Book: The Boost Graph Library
- Book: Generative Programming: Methods, Tools, and Applications
Schedule:


