FSU Seal - 1851


    COP 4530 Data Structures, Algorithms, and Generic Programming
    Spring Semester 2006


This class has students attending in two distinct modes:

  1. Traditional On-Campus (section 5)
  2. Distance Learning On-Line (sections 6, 7, 8, 9, 11)

The content, objectives, assignments, assessments, and grading are the same for all students. Obviously, however, on-campus, mixed-mode, and distance students sometimes participate in different ways.

For all students: Regular participation via the Blackboard course interface is required. Official course announcements, lecture materials, assignments, and help archives will all be on-line at this site. Note that all registered students should have the course web site listed on their My FSU portal page. Be sure to test this and resolve any difficulties no later than the first week of classes.

For on-campus/local students: Class (lecture and recitation) will be met and attendance is required. (See schedule details below.) All exams will be given in class during scheduled class time.

For on-line/distance students: All exams must be proctored and taken during the exam window. It is the student's responsibility to arrange for proctored exams in compliance with the FSU standards. Go to the URL http://online.fsu.edu/learningresources/proctoredexam/ for details.

Note that students may be required to identify themselves with official FSU ID to sit an exam.


LectureTEC Teaching Lab   Jan 12 - Apr 27 (excluding Mar 9)   Thu   2:00pm - 4:30pm (Central Time)
Recitation   TEC Teaching Lab   Jan 12 - Apr 20 (excluding Mar 9)   Thu5:00pm - 6:00pm (Central Time)


There will be two exams in COP 4530, a midterm exam and a final exam. The dates for the two exams are shown in the following table.

Exam Calendar
Exam On-Campus Distance Window (Inclusive)
Midterm Exam Thu Mar 2 Fri Mar 3 - Mon Mar 6
Final Exam Thu Apr 27 Fri Apr 21 - Mon Apr 24


Chris Lacher, Faculty
Responsibilities: Course Policies and Standards, On-Site and On-Line Instruction, Assessment 
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 9 - Apr 29, 2006 (excluding Jan 17 and Mar 7-11)
Mathew Porter, Teaching Assistant
Responsibilities: Distance Student Mentor, On-Line Interaction, Assessment 
Email:  porter@cs.fsu.edu


The courses COP 3330 and MAD 2104 are required prerequisites for COP 4530. In addition, CDA 3101 is required as either a pre- or co-requisite. These pre- and co- requisites will be enforced. Students not meeting the pre/co-requisite requirements will be dropped from the class.


Data structures and algorithms form the foundation of both the theory and practice of all computing disciplines. Mastery of this course marks the transition from computer programming to computer science.


This IS NOT a course in object-oriented programming.

This IS a course about efficiency of programs and programming, in various meanings of efficient. It is efficient to re-use code instead of re-writing code (or, worse, re-inventing code). It is efficient to select only the linguistic features you need without having to use costly extra features you do not need. It is efficient to minimize the run time of code, especially code that is destined for re-use. It is also efficient to minimize the memory and storage needs of code, recognizing that there may be a tradeoff between speed and memory requirements. It is efficient to spend less time writing a program of equal quality, and even more efficient to spend the same time writing a program of higher quality. In many applications, correctness is the ultimate form of efficiency, while in others efficiency means getting the best result possible in the limited time (or space) available.

Efficiency can happen at different levels. Take code: source code can be small in size, easy to read, and easy to understand. Executable code can be fast or compact (or both). The code production process can be efficient by applying good software engineering methodology. Code can run efficiently, in either a temporal or spatial sense. Savings in human effort also represent efficiency. Effort can be saved by good design, by careful (error-free) programming, and by re-using both code itself and patterns of problem solving that are known to be successful.

All these ideas of efficiency are central to this course. It is also true that all of these ideas of efficiency are fundamental to the design and specification of the C++ language, which is one of many reasons C++ is a great choice for the core language in our curriculum and for this course.

The three topics mentioned in the title of the course are data structures, algorithms, and generic programming. Data structures will be discussed in abstract terms (as abstract data types, or ADTs) but they will also be looked at in very concrete ways, actually implemented using C++. Algorithms are just formalizations of processes that result in predictable and desirable outcomes. Algorithms are used in a variety of contexts. Particularly, data structures are made usable by implementing algorithms for searching, sorting, and indexing the structures. Generic programming is the science of component re-use. We will explore coding for re-use of both data structures and algorithms in C++. Coding for re-use and re-use of code are important aspects of software engineering.

We will also have several substantial programming projects that involve the implementation and use of data structures, algorithms, and generic programming.


At the end of this course, the student should have experienced, and should permanently retain a working knowledge of, the following topics and concepts.

Data Structures

  • Definition, implementation, and use of the following concepts:
    Positional ADTs: vector, list, deque, stack, queue
    Associative ADTs: table, associative array, priority queue
  • Definition and use of iterators associated with these ADTs
  • Familiarity and experience implementing these abstractions, including their associated iterator classes and including performance constraints (in terms of runtime complexity) on the operations. Implementations will include the following: vector, list, deque, stack, queue, priority queue, hash table, associative array. Note that this implies the detailed study of trees of several types as implementation structures and the use of template classes as well as the elementary study of algorithms and their complexity.


  • Familiarity and experience with algorithm theory: proof of correctness and informal complexity analysis
  • Familiarity and experience with specific algorithms:
    1. Sequential Search
    2. Binary Search
    3. Push and Pop Heap
    4. Heap Sort
    5. Implementations of ADT Operations

Generic Programming

  • Familiarity and experience with generic containers as class templates with typename template parameters
  • Familiarity and experience with generic algorithms as function templates with iterator template parameters


The overall grade for COP 4530 is an average of two equally weighted parts: Exams and Assignments. Exams consist of a midterm exam (counting 20% of the course grade) and a final exam (counting 30%). Assignments consist of seven programming assignments: four homework assignments (counting 5% each) and three larger projects (counting 10% each). The dates for the two exams are shown in the Exam Calendar above. Due dates for assignment deliverables will be available on the Course Calendar.

There are 1000 total points that may be earned in the course (not counting possible extra credit opportunities), distributed as shown in Table 1. At least 350 exam points (midterm and final exams) and 350 assignment points (programming projects and homework) must be earned to get a course grade of C or better. In addition, working solutions for every assignment must be submitted in order to be eligible for the grade of A or A-. Once meeting these constraints, the final grade is determined using Table 2.

     Table 1: Course Points 
     Item   Points/Item   No of Items    Total 
     Homework   50   4   200 
     Projects   100   3   300 
     Midterm Exam   200   1   200 
     Final Exam   300   1   300 
    Total Points:    1000 
     Table 2: 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: You must earn at least 350 points in both Exams (in-term and final exams) and Assignments (projects and homework) to be awarded a course grade of C or better. In addition, you must submit a working version of every assignment in order to be eligible for the grade of A or A-.

Assessment of Programming Assignments: Programming assignments will be assessed using Table 3 as a guide, with modifications depending on the specific assignment.

 Table 3: Assignment Assessment Guidelines - details may vary 
 Criterion   Percentage Points Range   
 Deliverables Received and Project Compiles     0 ... 25 
 Results of Testing   0 ... 25 
 Project Meets Requirements  0 ... 25 
 Software Engineering Considerations   -25 ... 25 

Software engineering considerations include readability, design, style, safety, and appropriate use of language and library features. Note that any choice you make is important and subject to evaluation. Thus every choice should be made thoughtfully and with a rationale that can be given for making that choice.

Assessment will be done in two stages. First an objective assessment will be done to test compilation and correctness of the running program. Then a member of the instructional staff will add subjective assessment based on the test results and source code. A report will be emailed to the student after assessment is complete.

  • You may earn up to approximately 75 percentage points for a correctly functioning project meeting all requirements. (The exact percentage will depend on the particular assignment.)
  • Your project score may change by plus or minus the remaining percent during the subjective assessment.
  • You must understand your project work. If you are asked to explain your work, and if you cannot do so, you may be assigned a grade of zero.

Late Deliverables: Assignments should be submitted by the due date published in the course calendar. To receive full credit, assignment deliverables must be successfully submitted before the initial assessment begins, usually a few days after the due date. Missing deliverables will be treated as "grossly incorrect" and assessed as resubmissions.

Grossly Incorrect Deliverables: In cases where deliverables fail the most basic requirements, such as existence, compilation or basic run requirements, the student will receive a temporary "NG" score and be asked to correct and resubmit. A resubmission will be re-assessed with a 20% penalty. "NG" reverts to zero at the end of the resubmission period.

Note that any assignment receiving less than 80% during the original assessment may be resubmitted for possible grade improvement to 80%.


The following materials are required:

  • Lecture Notes (Slides and Narrative) available through Blackboard and also through the Course Calendar under "Lectures"
  • Code Distribution Library: progressively released to members of the course group only at /home/courses/cop4530p/spring06/ (see Chapter 1 of Lecture Notes for details)
  • Assignment Documents: progressively released through the Course Calendar.
  • Course Textbook: Ford, W. and Topp, W. (2002). Data Structures with C++ Using the STL (2nd edition). New Jersey: Prentice Hall.
    ISBN 0-13-085850-1.

The following optional reference books are sanctioned for this course.

  • Stroustrup, Bjarne (1997). The C++ Programming Language (3rd Edition). Addison-Wesley.
    ISBN 0-201-88954-4.
    Highly recommended C++ reference, written by the language inventor.
  • Deitel, H.M. and Deitel, P.J. (2003). C++: How to Program (4th ed.). New Jersey: Prentice Hall.
    ISBN 0-13-038474-7.
    This is the official text for COP 3330 in Fall 04. Use it if you have it. Beware of errors.
  • Gaddis, Tony (2005). Starting Out with C++ (4th Edition, Standard Version, 2005 Update). Addison Wesley.
    ISBN 0-321-38768-6.
    This is the official text for COP 3330 in Fall 05. Use it if you have it. Beware of errors.
  • Austern, M. (1998). Generic Programming and the STL. Massachusetts: Addison-Wesley, 1998.
    ISBN 0-201-30956-4.
    A terrific introduction to the STL and generic programming, written by one of the original developers.
  • Langer, Angelika, and Kreft, Klaus (2000). Standard C++ IOStreams and Locales - Advanced Programmers Guide and Reference. Addison Wesley.
    ISBN 0-201-18395-1.
    A comprenhensive and comprehensible reference.
  • Cormen, T.H., Leiserson, C.E, and Rivest, R.L. (2001). Introduction to Algorithms (2nd ed.). New York: McGraw-Hill.
    ISBN 0-262-03293-7.
    The text for COP 4531 - no harm in getting it early.
  • Oram, A. and Talbott, S. (1991). Managing Projects with make. Sebastopol, CA: O'Reilly & Associates.
    ISBN 0-937175-90-0.
    Make is a necessary tool for modern project management. There are also good on-line references.
  • Cameron, D., Rosenblatt, B., and Raymond, E. (1996). Learning GNU Emacs, 2nd Edition. Sebastopol, CA: O'Reilly & Associates.
    ISBN 1-56592-152-6.
    Emacs is a text-based IDE for programming for a non-MSWindows environment. It will be necessary for this course as well as other future courses where you may be asked to write in Lisp, Prolog, C, or SPARC Assembly.

The following are useful on-line references:


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:

  • If submitted prior to the day of the scheduled exam:
    • A written and signed explanation as to why the exam will missed. Illness or required professional travel are acceptable, while discretionary or personal travel are not. In any case the explanation should be accompanied by corroborating documentation, including names and contact information, and the explanation must be accepted by the instructor prior to missing the exam.
    • Evidence from a university official that you will miss the exam due to university sanctioned travel or extracurricular activity.
  • If submitted on or after the day of the scheduled exam:
    • A note from a physician, university dean, spouse, parent, or yourself indicating an illness or other extraordinary circumstance that prevented you from taking the exam and could not be planned for in advance. Again, corroborating information should be supplied.

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:

  • The final exam is missed with an accepted excuse for the absence. In this case, the final exam must be made up during the first two weeks of the following semester.
  • Due to an extended illness or other extraordinary circumstance, with appropriate documentation, the student is unable to participate in class for an extended period. In this case, arrangements must be made to make up the missed portion of the course prior to the end of the next semester.

Completion of Work Policy: To be eligible for the grade of A or A-, working versions of all programming assignments must be submitted.


All students are expected to uphold the Academic Honor Policy published on-line here. Please note the following items are defined and made violations by the policy:

  1. Plagiarism
  2. Cheating
  3. Unauthorized Group Work
  4. Fabrication, Falsification, and Misrepresentation
  5. Multiple Submission
  6. Abuse of Academic Materials
  7. Complicity in Academic Dishonesty
  8. Attempted ...

Violations of the academic honor policy may result in failing grades and/or dismissal from the university. All students are expected to read and understand the policy.


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.)


Information regarding the status of FSU in an emergency situation may be obtained from the following sources:

  • For information specific to the Panama City Campus go to the FSUPC web page at http://www.pc.fsu.edu/ or call the Campus Hotline number 850-522-5555
  • For information related to FSU in general and the Tallahassee Campus go to the FSU alerts web page at http://www.fsu.edu/~alerts/
  • For state-wide and national information, go to the Florida Division of Emergency Management information pages at http://www.floridadisaster.org/

Any specific information related to this class will be posted on the course web site or sent via email to your fsu email address.


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.