|
COURSE SYLLABUS
COP 4530 Data Structures, Algorithms, and Generic Programming
Spring Semester 2010
|
SPECIAL SCHEDULING NOTE:
This class has students attending in two distinct modes:
- Traditional On-Campus (Panama City Campus only)
- Distance Learning On-Line
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
campus.fsu.edu [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
campus.fsu.edu
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 must be taken by
appointment at the PC Campus student testing center during the online exam
window. (See exam schedule below.)
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.
(See COURSE POLICIES for details.)
All exams must be taken by
appointment at your pre-approved proctored testing site during the online exam
window. (See exam schedule below.)
Note that students may be required to identify themselves with official FSU
ID to sit an exam.
CLASS SCHEDULE FOR ON-CAMPUS STUDENTS:
Event | Location | Dates | Day | Time |
Lecture | Holland Teaching Lab - HOL A210A | Jan 7 - Apr 22
(excluding Mar 11) | Thu | 12:30pm - 3:00pm (Central Time) |
INSTRUCTIONAL STAFF:
|
Office: |
A2110 Academic Center / Panama City Campus
|
Office Phone (during office hours):
(these all ring the same instrument)
|
850-770-2256 (local direct line)
850-644-2090x2256 (local Tallahassee)
866-693-7872x2256 (toll free)
| |
Mobile Phone & Voice Mail (24/7): | 850-510-5575 |
Email: |
lacher[at]cs[dot]fsu[dot]edu |
Fax: | 850-770-2082 |
Mail & Delivery: |
Florida State University
4750 Collegiate Drive
Panama City, FL 32405-1099
|
|
|
Tony Harris, Online Mentor
Responsibilities: Online Interaction, Assessment |
|
Email: |
wharris[at]cs[dot]fsu[dot]edu |
|
COURSE PREREQUISITES:
The courses COP 3330 and MAD 2104 are required prerequisites for
COP 4530. In addition, CDA 3100 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 mastered the following
objectives.
Data Structures
- Define the following concepts:
Positional ADTs: vector, list, deque, stack, queue
Associative ADTs: table, associative array, priority queue
- Define the iterators associated with these ADTs
- Choose and use among these ADTs to solve various programming problems
- Implement these abstractions, including their
associated iterator classes and including performance constraints (in terms of
runtime complexity) on the operations.
- Implementations should include the following:
- vector
- list
- deque
- stack
- queue
- priority queue
- hash table
- associative
array
Note that this implies the detailed understanding 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.
Algorithms
- Be able to prove correctness of various algorithms.
- Be able to give an informal complexity analysis of various algorithms.
- The various algorithms should include:
- Implementations of all operations of the ADTs mentioned above
- Sequential Search
- Binary Search
- Push and Pop Heap
- Heap Sort
Generic Programming
- Define and use generic containers as
class templates with typename template parameters
- Show how each ADT above can be realized as generic container
- Define and use generic algorithms as
function templates with iterator template parameters
- Show how various algorithms can be realized as generic algorithms
- Define and use predicate classes and objects
- Define and use function classes and objects
COURSE MATERIALS:
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 at /home/courses/cop4530p/spring10/ (see Chapter 1 of
Lecture Notes for details)
- Assignment Documents: progressively released through the Course Calendar.
- Course Text: Weiss, Data Structures & Algorithm Analysis in
C++ (3rd ed), Addison Wesley (2006) ISBN: 9780321441461
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.
- Ford, W. and Topp, W. (2002). Data Structures with C++ Using the
STL (2nd edition). New Jersey: Prentice Hall.
ISBN 0-13-085850-1.
- 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:
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 (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 Table 1 below. Due dates for
assignment deliverables will be available on the
Course Calendar.
Course Grade.
There are 1000 total points that may be earned in the course (not counting
possible extra credit opportunities), distributed as shown in Table 2. 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 3.
Table 1: Exam Schedule |
Exam |
On-Line Window (Dates Inclusive) |
Midterm Exam |
Wed Mar 3 - Mon Mar 8 |
Final Exam |
Wed Apr 28 - Mon May 3 |
Table 2: 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 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: The following are additional constraints on the final grade in
this course.
-
Certain components of assignments in this course have been designated by
the
Department of Computer Science for assessment of the following expected
outcomes for its degree programs, as required by our accreditation agencies,
the
University and the State of Florida:
- Data Structure Knowledge
- Recursive Algorithm Use
Departmental policy does not permit a final grade of "C-" or
better to be assigned unless the student has at earned a grade of "C-" or
better on each of
these components, regardless of performance on other work in the course.
- In addition, 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.
- Finally, 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 4 as a guide, with modifications
depending on the specific assignment.
Table 4: 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 the day 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 "RS" score and be asked to
correct and resubmit. A resubmission will be re-assessed with a 20%
penalty. "RS" 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%.
It is
the students responsibility to notify the teaching staff when a resubmission is
ready for reassessment.
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.
It is the student's responsibility to arrange for proctored exams in
compliance with the FSU standards. Go to the FSU
Center for Testing and Assessment
for complete information on setting up a proctored exam site.
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.
ACADEMIC HONOR POLICY:
The Florida State University Academic Honor Policy outlines the
University’s expectations for the integrity of students’
academic work, the procedures for resolving alleged violations of those
expectations, and the rights and responsibilities of students and faculty
members throughout the process. Students are responsible for reading
the Academic Honor Policy and for living up to their pledge to
“. . . be honest and truthful and . . . [to] strive for personal and
institutional integrity at Florida State University.” (Florida
State University Academic Honor Policy, found at http://dof.fsu.edu/honorpolicy.htm.)
All students are expected to uphold the Academic Honor Policy.
Please note the following items are defined and made violations by the policy:
- Plagiarism
- Cheating
- Unauthorized Group Work
- Fabrication, Falsification, and Misrepresentation
- Multiple Submission
- Abuse of Academic Materials
- Complicity in Academic Dishonesty
- 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.
Checking for Plagiarism: FSU subscribes several databases of papers and
computer source code that have been previously published or turned in for credit
in university courses worldwide. Student work may be checked in one or more of
these databases for originality. Note that turning in work that contains uncited
quoted material from any source is considered plagiarism and a violation of the
FSU honor code.
AMERICANS WITH DISABILITIES ACT:
Students with disabilities needing academic accommodation should:
(1) register with and provide documentation to the Student Disability
Resource Center; and
(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.
This syllabus and other class materials are available in
alternative format upon request.
For more information about services available to FSU
students with disabilities, contact the:
Student Disability Resource Center
874 Traditions Way
108 Student Services Building
Florida State University
Tallahassee, FL 32306-4167
(850) 644-9566 (voice)
(850) 644-8504 (TDD)
sdrc@admin.fsu.edu
http://www.disabilitycenter.fsu.edu/
(This syllabus and other class materials are available in
alternative format upon request.)
EMERGENCY MANAGEMENT INFORMATION:
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-770-2000
- 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.
SYLLABUS CHANGE POLICY:
Except for changes that substantially affect implementation of the evaluation
(grading) statement, this syllabus is a guide for the course and is subject to
change with advance notice.
Such notice will be in the form of a posting to the course web site on campus.fsu.edu.
|
|