FSU Seal - 1851


    CIS 5930 Generic Programming
    Spring Semester 2005


Lecture   TEC Teaching Lab   Jan 5 - Apr 27 (excluding Mar 9)   Wed   5:00pm - 7:30pm (Central Time)


Chris Lacher
Office: 112 Faculty Annex B / Panama City Campus 
Office Phone (during office hours): 850-522-5502 or 850-644-2090 ext 251 
Mobile Phone/Voice Mail (24/7): 850-510-5575 
Email:  lacher@cs.fsu.edu
Mail & Delivery: Florida State University
4750 Collegiate Drive
Panama City, FL 32405-1099
Lacher Weekly Schedule Effective Jan 5 - Apr 30, 2005 (excluding Jan 17 and Mar 7 - 11)



Appropriate maturity in both programming and graduate course work, by permission of the instructor.


Generic programming is the science and engineering of creating re-usable program components. The field has been advanced significantly in the last 5 years and is now at the level of application to a wide range of applications and library support. Understanding how to create and use generic program components is essential to modern program design.


The course will address the following topics:

  1. Generic Programming Principles and Techniques
    1. Generic Containers
    2. Function and Predicate Objects
    3. Generic Algorithms
    4. Mediation between containers and algorithms with iterators
  2. Containers and Algorithms in the C++ STL
    1. Vectors, Lists, Deques
    2. Stacks, Queues, Priority Queues
    3. Ordered Sets and Maps
    4. Hashed Sets and Maps
    5. Iterators and Iterator Adaptors
    6. General algorithms
    7. Set algorithms
    8. Heap algorithms
    9. Search algorithms
    10. Sort algorithms
  3. Extending the STL to new containers and new algorithms
    1. Graphs and Digraphs
    2. Graph Algorithms
  4. Structure and use of Generic Graph Libraries
    1. The Passau Graph Template Library
    2. The Boost Graph Library
  5. Policy Based Design
    1. Partial template specialization
    2. Traits
    3. Typelists
  6. Design Pattern Implementations
    1. Small objects
    2. Singletons
    3. Smart Pointers
    4. Abstract Factory
    5. Visitor


At the end of this course, the student should have the following skills and capabilities.


Class Participation: (10%) Students are expected to prepare for class by keeping up with assigned reading, exercises, and review questions. These will be discussed in class.

Assignments: (30%) Assignments consist of approximately three (3) exercises/problem sets that will be assigned in parallel with the course coverage.

Presentation: (10%) Each student will be assigned a presentation topic and deliver a presentation on that topic in class.

Exams: (50%) There will be a midterm exam and a final exam, together counting 50% of the course grade..

Course Calendar. Coverage, assignments, lecture notes, and exam coverage will be released through the Course Calendar.


The overall grade for CIS 5930 is the weighted average of four (4) parts: Exams, Assignments, Presentation, and Class Participation. The following Table 2 summarizes the grade components and their weighting. The final course grade will be determined using Table 3.

Table 1: Exam Calendar
Midterm Exam Wed Mar 2
Final Exam Wed Apr 27
 Table 2: Course Points 
 Item   No of Items    Total 
 Participation   1   100 
 Assignments   3   3x100 = 300 
 Presentation   1   100 
 Midterm Exam   1   200 
 Final Exam   1   300 
Total Points:    1000 
 Table 3: Letter Grades  
 Points   Grade 
 925 - 1000   A 
 900 - 924   A- 
 875 - 899   B+ 
 825 - 874   B 
 800 - 824   B- 
 775 - 799   C+ 
 725 - 774   C 
 700 - 724   C- 
 675 - 699   D+ 
 625 - 674   D 
 600 - 624   D- 
 0 - 599   F 
Note that grades below B- will not satisfy requirements for a graduate degree.


First Day Attendance Policy: Official university policy is that any student not attending the first class meeting will be automatically dropped from the class. For distance students, this policy is interpreted as posting to the discussion forum "First Day Attendance" no later than the first day of the semester.

Regular Attendance Policy: The university requires attendance in all classes. Attendance in distance classes shall mean regular access to the course web site via campus.fsu.edu and regular participation in the class discussion forums. Here, "regular" shall mean a substantial amount of time on a weekly basis. Note that individual access statistics are maintained by Blackboard.

Proctored Exam Policy: All exams must be proctored and taken at an approved testing site during the exam window or in class on the designated date. It is the student's responsibility to arrange for proctored exams in compliance with the FSU standards. Go to http://online.fsu.edu/learningresources/proctoredexam/ for details.

Exam Makeup Policy: An exam missed without an acceptable excuse will be recorded as a grade of zero (0). The following are the only acceptable excuses:

All excuses must be submitted in writing, must be signed by the excusing authority, and must include complete contact information for the authority, including telephone numbers and address.

Missed exams with acceptable excuse will be made up or assigned the average grade of all other exams, at the option of the course instructor.

Missed, and acceptably excused, final exams will result in the course grade of 'I' and must be made up in the first two weeks of the following semester.

Grade of 'I' Policy: The grade of 'I' will be assigned only under the following exceptional circumstances:


All students are expected to uphold the Academic Honor Code published in The Florida State University Bulletin and the Student Handbook. The Academic Honor System of The Florida State University is based on the premise that each student has the responsibility (1) to uphold the highest standards of academic integrity in the student's own work, (2) to refuse to tolerate violations of academic integrity in the university community, and (3) to foster a high sense of integrity and social responsibility on the part of the university community.

Complete explanation of the Academic Honor Code: http://www.fsu.edu/Books/Student-Handbook/codes/honor.html
The complete Student Handbook: http://www.fsu.edu/Books/Student-Handbook/

In particular, note that students may not give or receive help of any kind on programming projects. This means, among other things, that students are not permitted to read each others code (on paper OR on screen) or discuss design or implementation of programming projects with anyone other than the instructional personnel. Violations of this policy will result in the grade of zero for all parties involved.


Students with disabilities needing academic accommodation should: (1) register with and provide documentation to the Student Disability Resource Center; (2) bring a letter to the instructor indicating the need for accommodation and what type. This should be done during the first week of class.

For more information about services available to FSU students with disabilities, contact the

Student Disability Resource Center
Dean of Students Department
08 Kellum Hall
Florida State University
Tallahassee, FL 32306-4400
(850) 644-9566 (voice)
(850) 644-8504 (TDD)

(This syllabus and other class materials are available in alternative format upon request.)


This syllabus is a guide for the course and is subject to change with advanced notice. Such notice will be in the form of an announcement to the course web site on My FSU.