FSU Seal - 1851

    COURSE SYLLABUS

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



SPECIAL SCHEDULING NOTE:

This class has students attending in three distinct modes:

  1. Traditional On-Campus (section 50)
  2. Mixed Mode (section 51)
  3. Distance (sections 22, 41, 52, 71, I9)

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 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 mixed-mode students: Class (recitation) will be met and attendance is required. (See schedule details below.) All exams will be given in class during scheduled class time.

For off-campus/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.

CLASS SCHEDULE FOR ON-CAMPUS and MIXED-MODE STUDENTS:

EventSection    LocationDatesDayTime
Lecture50TEC 128   Jan 8 - Apr 29 (excluding Mar 11)   Thu   2:00pm - 4:30pm (Central Time)
Recitation   50, 51TEC 128   Jan 8 - Apr 29 (excluding Mar 11)   Thu5:00pm - 6:00pm (Central Time)
Lab Help Hours   optionalTEC Lab   Jan 8 - Apr 29 (excluding Mar 11)   Thu6:00pm - 7:30pm (Central Time)

EXAM SCHEDULE

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 (sec 50,51) Distance Window (Inclusive)
Midterm Exam Thu Mar 4 Thu Mar 4 - Mon Mar 8
Final Exam Thu Apr 29 Fri Apr 23 - Tue Apr 27

INSTRUCTIONAL STAFF:

Chris Lacher, Faculty
Responsibilities: Lead Instructor, On-Site Instruction, On-Line Instruction 
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
Fax:850-872-7720
Mail & Delivery: Florida State University
4750 Collegiate Drive
Panama City, FL 32405-1099
Lacher Weekly Schedule Effective Jan 5 - Apr 30, 2004 (excluding Mar 7 - 12)
 
Keith Rupert, Associate Faculty
Responsibilities: Associate Instructor, On-Line Instruction, On-Line Mentor 
 
Office Phone (during business hours):     386-754-4216 
Email:  krupert@fsu.edu

COURSE PREREQUISITES:

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.

COURSE RATIONALE:

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.

COURSE DESCRIPTION:

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.

COURSE OBJECTIVES:

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

Algorithms

Generic Programming

GRADING/EVALUATION:

The overall grade for COP 4530 is an average of two equally weighted parts: Exams and Assignments. Exams consist of a midterm exam and a final exam. Assignments consist of five (5) programming projects and five (5) written homework assignments. The dates for the two exams are shown in the Exam Calendar above. Due dates for other 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. Once meeting this constraint, the final grade is determined using Table 2. Extra credit points in one category may not be used in the other category.

     Table 1: Course Points 
     Item   Points/Item   No of Items    Total 
     Homework 1-3   20   3   60 
     Homework 4   40   1   40 
     Projects 1-5   80   5   400 
     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 

Extra Credit:You can earn 10 all-purpose extra credit points by joining (or being a member of) the FSU student chapter of the Association for Computing Machinery.

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.

Project Assessment: Projects will be assessed using Table 3 as a guide.

 Table 3: Project Assessment Criteria and Valuation 
 Criterion   Percentage Points Range   
 Deliverables Received and Project Compiles     0 ... 25 
 Results of Testing   0 ... 25 
 Project Meets Requirements  0 ... 25 
 Design, Readability, and Style   -25 ... 25 

The first two criteria will be assessed objectively through automated testing. A report of these test results will be prepended to your source code and sent to a member of the instructional staff who will assess against the latter three criteria. Note carefully the following important items:

Late Assignments: To receive full credit, assignments must be turned in by midnight Eastern Time on the due date. The time stamp on email sent from a CS machine will determine the time of submission. An assignment that is turned in no more than 24 hours late will be scored with a 10% penalty. An assignment that is turned in more than 24 and no less than 48 hours late will be scored with a 20% penalty. An assignment that is turned in more than 48 hours late will receive the score of zero (0).

COURSE MATERIALS:

The following materials are required:

The following optional reference books are sanctioned for this course:

The following are useful on-line references:

COURSE POLICIES:

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:

ACADEMIC HONOR CODE:

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.

web site for a complete explanation of the Academic Honor Code.
http://www.fsu.edu/Books/Student-Handbook/codes/honor.html
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.

AMERICANS WITH DISABILITIES ACT:

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)
SDRC@admin.fsu.edu
http://www.fsu.edu/~staffair/dean/StudentDisability/

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

SYLLABUS CHANGE POLICY:

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.