FSU Seal - 1851

    COURSE SYLLABUS

    COP 4531 Complexity and Analysis of Data Structures and Algorithms
    Summer Semester 2019


SPECIAL SCHEDULING NOTE:

This is an online-only class (distance learning).

Regular participation via the fsu.instructure.com [Canvas] 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 Canvas home page. Be sure to test this and resolve any difficulties during the first week of classes.

Regular participation means:

  1. Subscribe to Announcements and read them as soon as they are received.
  2. Read every Discussions post. Keep up on a daily basis.
  3. Start assignments no later than the date they appear in the Course Calendar.
  4. Turn in assignments on time - use the 5-day grace period for emergencies only.
  5. Take exams during the exam window.

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

Examity Remote Proctoring Service: Online students may sign up for the Examity web-based Remote Proctoring Service. This service uses your own computer's webcam and microphone to monitor your Exam at an Internet-connected location of your own choice. Details are here: Proctor Designation Page.

There will be an Examity link button in the Canvas course site that leads to the Examity dashboard. To use Examity:

  1. Designate Examity as your proctor on the Online Proctor Designation Form.
  2. Click the Examity Proctor button to create your account in the Examity dashboard.
  3. Use the Examity dashboard to test your system and schedule an Exam appointment within the Exam window.
  4. Be sure you know the rules: any suspicious activity flag raised by an Examity proctor will AUTOMATICALLY trigger an Honor Code incident report.

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

INSTRUCTIONAL STAFF

Instructor: Chris Lacher
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 May 13 - Aug 2, 2019 (excluding July 4,5)
 
Derek Yohn, Teaching Assistant and Mentor
Responsibilities: On-Line Help, On-Line Mentor, Project Assessment, Instructor Liason and General Watchdog 
 
Email:  yohn "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  COP3353               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
  • Categorize algorithms by structure (divide&conquer, greedy, memoized/dynamic programming, randomized) where possible

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. (Many of these are introduced in prerequisit courses.)

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: set, map, multiset, multimap, priority queue, table, associative array
  • 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. At the end of the 2-course sequence COP4530 - COP4531, implementation and appropriate deployment of the following data structures should be familier: vector, list, deque, stack, queue, priority queue, sorted list, binary tree, binary search tree, hash table, associative array, hash set, AVL tree, red-black tree, graph, directed graph, network. Note that this implies the detailed study of trees of several types and their 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, complexity analysis, and NP complete problems
  • Familiarity and experience with certain categories of algorithms according to their structure, including: Divide & Conquer, Dynamic Programming, Greedy Algorithms, and Randomized Algorithms
  • Familiarity and experience with certain categories of algorithms according to their application, including: Search Algorithms, Sort Algorithms, Graph Algorithms (including surveys, topological sort, spanning trees, shortest paths, maximum flows), Disjoint Sets / Union-Find, and Graph Analytics (including component rank and degree frequency distribution).

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 slide shows and "Notes" are in pdf or html 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 Jun 22 - Jun 28 [Sat - Fri]
Final Exam Jul 27 - Aug 2 [Sat - Fri]
 
 Table 2: Course Points 
 Item   No of Items   Points/Item    Total [%] 
 Programming Projects   5   50    250 [25]
 Homeworks+Quizzes   5+2*   ??   250 [25]
 Midterm Exam   200   1   200 [20]
 Final   300   1   300 [30]
Total Points:    1000 [100%]
*The exact numbers of homeworks and quizzes may vary, but the total points will be at least 250 cummulatively.
*Any excess may be considered extra credit points.
     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.

  1. 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:
    1. analyze the computational complexity of algorithms used in the solution of a programming problem
    2. 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.
  2. In addition, you must earn 70% or better in both Exams and Assignments to be awarded a course grade of C- or better.
  3. 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: 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 ALL STUDENTS: This policy is implemented using the FDA Quiz in Canvas. Answering in the affirmative by the posted deadline is interpreted as first day attendance.

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://fda.fsu.edu/Academics/Academic-Honor-Policy.)

All students are expected to uphold the Academic Honor Policy. 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 ...
  9. Students are expected to do their own work on any classwork or test submitted for a grade (unless designated as a group assignment).
    • It is NOT appropriate to work on coding assignments with other students or to give or receive solutions to or from anyone before an assignment is due and handed in (by all parties). (It is appropriate to discuss conceptual issues with other students.)
    • It is NOT appropriate to share any amount of code with your classmates
    • DO NOT POST YOUR CODE ONLINE. If I find your code online (online compilers, text sites, blogs, help sites, etc...), no matter what the intent was in posting your code, this is automatically in violation of the Academic Honor Policy and the appropriate actions will be taken. DO NOT USE online compilers, chat rooms, or post any amount of your code on the web. I'll find out, trust me.
    • If you've posted a homework question for a solution on sites like Chegg, course hero, etc. This is considered a violation of the honor code policy.
    • "Pay for code" is also obviously an honor code violation. You wont pass my tests anyways if you choose this route.
    • Discussing solutions and techniques on assignments with other students after the assignment has been graded and handed back is okay, and encouraged.
    • When you turn in work with your name on it, you are representing that work as your own. If your submission matches that of another student, this is considered a violation of the Academic Honor Code.
    • If you have previously taken the course, you are NOT permitted to submit your old work for any assignment in the current semester. You must do your work from scratch. This is included in the FSU honor policy. See the link above.
    • If it is found that a student has violated the academic honor policy the student is not permitted to drop or withdraw from the course, and must complete the course with the sanctions accessed via the policy. This is a UNIVERSITY policy. (Added for clarification, 2/17/15)
    • It is HIGHLY suggested that you only go to our course TA's or the instructor for help if/when needed. Outside tutors are NOT recommended
  10. Proctored Exam Violations. All exams in this course are required to be proctored. Proctors are trained professionals and will be observing you while sitting for the exam. Any suspicious activity flag that is raised by an exam proctor will result in automatic initiation of formal proceedings with the FSU Dean of Students.

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 Canvas 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 Canvas course site or in class. If help outside the course environment is discovered, both the giver and receiver of help will be given a failing grade.

Code Distribution Policy: Department policy is that students and former students are not permitted to freely distribute or make available to the public any code that has been used as part of a course assignment. Former students who have either graduated or are cleared for graduation may put code in a portfolio that is password protected and may divulge the password to appropriate individuals for the purpose of applications for employment and other professional evaluations.

Transgression of this policy will be considered honor code violations. A list of known violations will be maintained by the department.

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.