Up Next
1 Adminsitrativia

1.1 Description

Study of the generic programming approach to design and systematic classification of software components. Techniques for achieving correctness, efficiency, and generality of algorithms, data structures, and memory management. Methods of structuring a library of generic software components for maximum usability are practiced in a significant design and implementation project.

The course mainly focuses on C++, but we take a close look of language constructs for generic programming in several other programming languages, including Generics in Java (or C#), and Haskell.

1.2 Topics (tentative)

Introduction and overview 1
Necessary C++ background relevant for generic programming 2
C++ SL overview and use 4
Generic programming process 1
Details of 'concepts': definition, concept refinement, semantic constraints, multi parameter concepts, concept taxonomies 3
Expressing genericity: parametric polymorphism and higher-order functions, where clauses, bounded polymorphism, run-time vs. compile-time polymorphism 3
Constraining generics in C++: concept checking, archetypes. 2
Case study: Boost Graph Library 3
Generic programming and run-time performance 1
GP in other languages: Generic Java, C#, Haskell. Different implementation approaches to generics. 5
Polymorphism and type theory 3
Generative programming and metaprogramming, staged languages. 5
Generic libraries as embedded domain specific languages 2
Utilizing semantic concepts: library specific optimization, algorithm concepts 3
Data-type generic programming 4
Student term project presentations 3

1.3 Course work

The course will have (about) five programming assignments and one final project.

Assignments will be managed and turned in electronically, the details of which I will give out once I figure them out myself. You may be required to demonstrate your programs to the instructor.

Unless otherwise indicated, all programming assignments will be done in groups of two or three.

You may form groups on your own. You will be in the same group for the entire semester. For the problem sets, each group will turn in one copy of the assignment, with the names of all group members on it.

Each programming assignment will cover a major course topic and may (will) involve a significant amount of programming. Do not wait until the night before an assignment is due to start working on it!

Late work will be accepted, but a penalty of 20% per calendar day late will be assessed. Assignments are due at 11:59PM on their due date.

1.4 Grading

Your course grade will be based on class presentations and participation (10%), assignments (50%), and term projects (40%).

A grade of 92% or above guarantees an A, 82% or above a B, 72% or above a C, and 62% or above a D.

This grading formula implies that there is no curve; your grade will depend only on how well you do, and not on how well everyone else does. (If everyone does exceptionally badly on some assignment, I may decide the assignment was at fault rather than the students, in which case I'll adjust the grade cutoffs as I deem appropriate. But I won't adjust in the other direction; if everyone gets an A, that's great).

All grade assignments are final---unless there was a mistake made in recording your semester grades or in computing your final grade. If all numbers are correctly recorded and computed, I will not discuss changing the resulting letter grades.

There are situations that may warrant regrading a particular assignment. For example, making addition errors in computing your score, not seeing an answer that you gave, or not understanding an answer that you gave. Requests for regrading of assignments must be made within one week after the graded work has been handed back.

1.5 Policies

Academic Integrity Policy: ``An Aggie does not lie, cheat, or steal or tolerate those who do.'' The Honor Council Rules and Procedures are available on the web http://www.tamu.edu/aggiehonor.

Americans with Disabilities Act (ADA) Policy: The Americans with Disabilities Act (ADA) is a federal anti-discrimination statute that provides comprehensive civil rights protection for persons with disabilities. Among other things, this legislation requires that all students with disabilities be guaranteed a learning environment that provides for reasonable accommodation of their disabilities. If you believe you have a disability requiring an accommodation, please contact the Department of Student Life, Services for Students with Disabilities, in Room 126 of the Koldus Building or call 845-1637.


Up Next