|
COURSE SYLLABUS
COP 4531 Complexity and Analysis of Data Structures and Algorithms
Fall Semester 2017
|
SPECIAL SCHEDULING NOTE:
This class has students attending in two distinct modes:
- Traditional Classroom, Panama City Campus
- Distance Learning On-Line
The content, objectives, assignments, assessments, and grading are the same for
all students. Obviously, however, on-campus 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 students: Classes will meet most weeks - any exceptions
will be announced via email. All exams will be given in class at the
regularly scheduled class meeting. If you prefer to take exams with the
flexibility of online students, please change your registration to one of the
distance sections. (You may still attend classes on campus.)
For on-line 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.)
FSU ID: Note that students may be required to identify themselves with official FSU
ID to sit an exam.
CLASS SCHEDULE FOR ON-CAMPUS STUDENTS:
Event |
Leader |
Location |
Dates |
Day |
Time |
Lecture | Lacher | B-303 Holley Academic Center |
Aug 29 - Dec 12 |
Tue |
2:00pm - 4:30pm (Central Time) |
Lecture | Lacher | B-303 Holley Academic Center |
Sep 1 - Dec 7 |
Thu |
2:00pm - 4:30pm (Central Time) |
Please note that class will meet on average once weekly. This will mean two
meetings in some weeks (i.e., both Tue and Thu) and no meetings in other
weeks. The live calendar displayed with Lacher contact info will show which
days class actually meets.
INSTRUCTIONAL STAFF
Chris Lacher, Faculty
Responsibilities: Instructor, On-Line Instruction, Assignments,
Final Grades, Course Manager |
|
Office: | A-211-O
Academic Center / Panama City Campus
|
Office Phone (during office hours):
|
850-770-2256 (local direct line)
| |
Mobile Phone & Voice Mail (24/7): | 850-510-5575 |
Email: |
lacher "at" cs "dot" fsu "dot" edu |
Fax: | 850-872-7720 |
Mail & Delivery: |
Florida State University
4750 Collegiate Drive
Panama City, FL 32405-1099
|
|
Lacher Weekly Schedule
Effective Aug 28 - Dec 15, 2017 (excluding Labor Day, Veterans Day, and the week of Thanksgiving)
|
|
Christian Smith, Teaching Assistant and Mentor
Responsibilities: On-Line Help, On-Line
Mentor, Project Assessment, Instructor Liason and General Watchdog |
|
Email: |
chrsmith "at" cs "dot" fsu "dot" edu |
|
COURSE PREREQUISITES
This is a capstone course in our curriculum. The prerequisite
DAG is as follows:
COP4531
/ | \
COP4530 MAD3105 STA3032/STA4442
/ | \ | \ |
COP3330 CDA3100 MAD2104 MAC2312
/ \ |
COP3014 COP3344 MAC2311
The supporting courses constitute a significant and deep body of knowledge that is
assumed as a base from which to build COP 4531. These prequisites will be
enforced. Students not having credit for these prequisite courses must have
special permission from the instructor or be dropped from the class. (NOTE:
We will generally allow taking STA 3032 concurrently with COP 4531.)
COURSE RATIONALE
Data structures and algorithms, and their analysis, form
the foundation of both the theory and practice of all computing
disciplines. Mastery of these materials is an essential ingredient to becoming a
computer scientist.
COURSE OBJECTIVES
At the end of the course, the student should be able to:
- Fully describe in precise language a variety of important and commonly used
algorithms in computing
-
Evaluate and analyze algorithms for efficiency and effectiveness, using the
language of asymptotics
-
Implement algorithms in such a way as to realize the theoretical
efficiencies obtained during analysis, including any supporting data structures
that may be required
-
Derive algorithms for solving newly encountered problems in computing
COURSE DESCRIPTION
This is a continuation of the course COP 4530 Data Structures, Algorithms,
and Generic Programming, with emphasis evolving to more sophisticated
structures, more complex analyses, and higher levels of abstraction. There is a
shift upward from programming and toward theory, experiment, and mathematical
analysis.
The courses COP 4530 and this one (COP 4531) are 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 sequence. 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
analysis, data structures, and algorithms. 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 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.
We will have several substantial programming projects that involve
the implementation and use of data structures, algorithms, and generic
programming, as well as scholarly paper and homework assignments of a more
analytical nature.
At the end of this course, the student should have experienced, and should
permanently retain a working knowledge of, the following topics and
concepts. (Those that are introduced or reviewed in this course are in color. Others listed should have been covered in a previous
course.)
Data Structures
- Definition, implementation, and use of the following concepts:
Positional ADTs: vector, list, deque, stack, queue,
binary tree, graph, directed graph, directed acyclic graph
(DAG), network
Associative ADTs: table, associative array, priority queue, ordered set, ordered
map, ordered multiset, ordered multimap,
hashset, hashmap, hashmultiset, hashmultimap, associative
array, disjoint-sets / union-find
- 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, sorted list, binary tree, binary search tree,
red-black and height-balanced trees, hash set, hash table, associative array, graph, directed graph, network.
Note that this implies the detailed study of trees of several types a
implementation structures and the use of template classes as well as the
elementary study of algorithms and their complexity.
Algorithms
- Familiarity and experience with algorithm theory: proof of correctness and
informal complexity analysis
-
Familiarity and experience with specific algorithms (covered or reviewed in this course shown in color):
Sequential Search,
Binary Search,
Push and Pop Heap,
Heap Sort,
Insertion Sort,
Merge Sort,
Quick Sort,
Depth-First Search,
Breadth-First Search,
Topological Sort,
Minimum Spanning Trees,
Shortest Paths,
Maximum Flows,
Implementations of hash set and map operations,
Disjoint set data structures and 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
COURSE MATERIALS
The following materials are required:
- Lecture Notes: Available through the Organizer - "Lectures" are in html markup
and "Notes" are in pdf markup
- Code Distribution Library: progressively released as needed
at /home/courses/cop4531p/LIB/ (see Chapter 0 of Lectures for details)
- Cormen, T.H.; Leiserson, C.E; Rivest, R.L.; and Stein,
C. (2009). Introduction to Algorithms (3rd ed.). MIT Press,
Cambridge, MA.
ISBN 978-0-262-03384-8
The following optional reference books are sanctioned for this course:
- Sedgewick, Robert and Wayne, Kevin (2011).
Algorithms [Java], 4th Edition, Pearson, ISBN 0-321-57351-X
- Sedgewick, Robert (2001).
Algorithms [C++], Parts 1-5, 3rd Edition, Pearson, ISBN 0-201-72684-X
- Stroustrup, Bjarne (1997). The C++ Programming Language (3rd
edition). Addison-Wesley.
ISBN 0-201-88954-4
- Deitel, H.M. and Deitel, P.J. (2010). C++ - How to Program, 7th
edition, by Deitel, Prentice Hall.
ISBN 0-201-88954-4 (or any earlier edition)
- 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
- Oram, A. and Talbott, S. (1991). Managing Projects with
make. Sebastopol, CA: O'Reilly & Associates.
ISBN 0-937175-90-0
- Cameron, D., Rosenblatt, B., and Raymond, E. (1996). Learning GNU Emacs,
2nd Edition. Sebastopol, CA: O'Reilly & Associates.
ISBN 1-56592-152-6
GRADING/EVALUATION
The overall grade for COP 4531 is an average of two equally weighted parts:
Exams and Assignments. Exams consist of a midterm exam and a final
exam. Assignments consist of programming projects, analytical exercises, and/or
quizzes. The dates for the two exams are shown in the Table 1
below. Due dates for other
deliverables will be available on the Course
Calendar.
Taking Exams
For on-campus students: The student is required to take the exam during
the regularly scheduled class period that falls within the exam window.
For on-line 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.)
Note that students may be required to identify themselves with official FSU
ID to sit an exam.
Exam Calendar
There will be two exams: a midterm exam and a final exam. The exams must be
taken during the exam window at a testing center approved by FSU Assessment
Services. The exam windows for the two exams are shown in Table 1 below.
Course Grade. There are 1000 total points that may be earned in the
course, distributed as shown in Table 2. The final grade
is determined using Table 3, subject to the additional constraints listed below
the tables.
Table 1: Exam Schedule |
Exam |
On-Line Window (Dates Inclusive) |
Midterm Exam |
Oct 21 - Oct 27 [Sat - Fri] |
Final Exam |
Dec 9 - Dec 15 [Sat - Fri] |
Table 2: Course Points |
Item |
No of Items |
Points/Item |
Total [%] |
Project Assignments* |
n |
400/n |
400 [40] |
Quiz Assignments** |
?? |
?? |
100 [10] |
Midterm Exam | 200 | 1 | 200 [20] |
Final | 300 | 1 | 300 [25] |
Total Points: | 1000 [100%] |
* The exact number is variable, but the total points will be 400 cummulatively.
**The exact number and points per item are variable, but the total points will be 100 cummulatively.
|
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:
- analyze the computational complexity of algorithms used in the solution of a
programming problem
- evaluate the performance trade-offs of alternative data
structures and algorithms
Departmental policy does not permit a passing final grade ("C-" or
better) to be assigned unless the student has earned a grade of "Effective" or
"Highly Effective" on each of
these components, regardless of performance on other work in the course.
- In addition, you must earn 70% or better in both
Exams and Assignments to be
awarded a course grade of C- or better.
- Finally, you must submit a passing version of every assignment in
order to be eligible for the grade of A or A-.
Assessment of Written Assignments / Quizzes: Written assignments
and associated Quizzes generally require some mathematical reasoning and skill. These will be assessed
in a manner similar to the assignments in such math courses as Discrete
Mathematics II. Table 4 provides a rough guide. (Note that some written
assignments may be assessed with an associated quiz.)
Table 4: Math Assessment Guidelines |
Criterion | Percentage Points Range |
Completeness of paper | 0 ... 25 |
Mathematical Correctness | 0 ... 25 |
Clarity of Presentation | 0 ... 25 |
English grammar and usage | 0 ... 25 |
Assessment of Programming Assignments: Programming
assignments
will be assessed using Table 5
as a guide, with minor modifications depending on the specific assignment. Note
that these assignments are more open-ended than assignments in the predecessor
course and that assessment of these assignments will also be more
open-ended. There is room for creativity and thoroughness that is left
unspecified. Moreover, it is expected that all programming aspects of a project
should be completed with appropriate attention to good software engineering
practice: separate compilation of code files, correct inclusion of header files,
a correct portable makefile, well-designed solutions, readable and
self-documenting code, etc. Students at this level should not expect partial
credit for projects that will not compile or code that produces incorrect output
or runtime errors. Straightforward testing can eliminate such problems.
Table 5: Programming Assessment Guidelines - Details May Vary |
Criterion | Approximate Percentage Points Range |
Deliverables Received and Project Builds Cleanly | 0 ... 25 |
Results of Testing | 0 ... 25 |
Project Meets Requirements | 0 ... 25 |
Software Engineering Considerations | -25 ... 25 |
See Submission of Programming
Assignments for policies on late submission of programming assignments.
ABET/SACS Program Outcomes Assessment
Department and University policy asserts that COP 4531 is to be used to assess
some of the required ABET and SACS outcomes for the degree program. The outcomes assessed
are:
(E.1) Analyze the computational complexity of algorithms used in the solution of
a programming problem
(E.2) Evaluate the performance trade-offs of alternative data structures and
algorithms
These will be assessed using the following rubric based on the overall percent
grade on course assignments.
Rubric | I | E | H |
Key:
I = ineffective
E = effective
H = highly effective |
Grade on assignments 90% or higher | - | - | x |
Grade on assignments 70% or higher but less than 90% | - | x | - |
Grade on assignments below 70% | x | - | - |
In order to earn a course grade of C- or better, the assessment rubric must result in
Effective or Highly Effective.
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.
Excused absences include documented illness, deaths in the immediate family and
other documented crises, call to active military duty or jury duty, religious
holy days, and official University activities. Accommodations for these excused
absences will be made and will do so in a way that does not penalize students
who have a valid excuse. Consideration will also be given to students whose
dependent children experience serious illness.
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
Student Testing Responsibilities for complete information
on setting up a proctored exam site. Please note also that students taking exams
on main campus in Tallahassee are now required to sign up for a time slot at the
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.
Student Help Policy:
Students in this class are encouraged to help each other within the official
course Blackboard site. Instruction staff will also help there and be able to
monitor student interaction to assure correctness and guide the nature of the
help when appropriate.
It is a violation of the course code of ethics for students to receive help in a
medium outside the visibility of the course, such as in a third party
discussion board, chat room, or via email. The only help that is condoned is
that obtained from any instructor or from discussions on the Blackboard course
site. If help outside the course environment is discovered, both the giver and
receiver of help will be given a failing grade.
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.
|
|