FSU Seal - 1851 Course Organizer
COP 4531 Complexity and Analysis of Data Structures and Algorithms
Fall Semester 2017
Root View: Course Components
The course syllabus establishes course policies on grading, attendance, and exams. The syllabus should be read in detail at beginning semester.
The course calendar provides a detailed temporal view of the course, including lecture coverage, assignments, and due dates. The calendar will be updated regularly.

Lecture notes are in one of two forms: (a) a slide show with an accompanying narrative (click "Narrative on" to see the narrative, click "Frames[Windows]" to toggle between displaying the narrative in a separate frame or a separate resizeable window.) (b) a pdf document suitable for detailed reading. These notes provide a compact view of the important topics of the course. They also serve to ground the text material in a real programming environment. Lecture slides and other documents will be created and updated "on the fly" during the semester, so you should visit them regularly. Report bugs/corrections in the appropriate Blackboard discussion forum.
Projects Programming assignments ("Projects") are intended to be total learning experiences, not merely grade-earning opportunities. The assignment documents in particular are used to elaborate on topics and introduce new ones. The content is of equal importance with the lecture notes. Programming assignments will be released through the calendar. Programming assignments will be assessed using the policy described here. Note there is a 5-day grace period for programming assignments. We expect polished, thoughtfully prepared work and will assess accordingly. Note that a work log is expected for each programming assignment.
Homework Non-programming assignments ("Homework") are intended to provide thoughful experiences above the level of computer code. Reading and researching is encouraged and may be required. This semester assignments will consist of documents with exercises, with the grade determined by an associated quiz. Deadlines for assignment quizzes are strictly enforced -- there is no grace period.
LIB The course code distribution library LIB = /home/courses/cop4531p/LIB
The FSU/Blackboard Portal, where you will find this course. The course site is the main communication resource for the class. Here you can get help, talk to other students, retrieve your grades, and generally keep up with course news and announcements.
Students helping students Policy on students helping students. PLEASE NOTE: students may help other students in a Blackboard forum or a designated classroom. Any other form of help, whether using email or an external facility such as "slack", is a violation of the code of conduct for this class.
The textbook for the course is Cormen, T.H., et al, Introduction to Algorithms (3rd ed.), MIT Press, 2009 (ISBN 978-0-262-03384-8). The textbook provides many details and extra material not covered directly in the notes, as well as a more mathematical treatment of algorithms. Reading and understanding the assigned portions of the text is essential for deeper understanding of many topics in the course. Report bugs/corrections in the appropriate Blackboard discussion forum.
Schedule, office hours, and contact information for Chris Lacher
Extras: Miscellaneous Resources and References
COP 3330
COP 4530
Lecture notes from previous courses in the sequence
Parts 1-4
Part 5
An alternate text has been approved for COP 4530, and you may use it now as a reference for this course: Robert Sedgewick, Algorithms in C++ (any edition, or the newer Java edition).
C++ Style Coding style manual for this course
The version of ssh software that FSU pays for and recommends.
Unix/Emacs Hints
A few Unix and Emacs hints to get started
Two tutorials on the make utility and makefiles
Stats The NIST Engineering Statistics Handbook
SortDemo Animation for various key-comparison sorts, plus some good references. The Hungarian Dance Sort is worth a look.
Formulas A short collection of frequently used formulas.
mazebuilder 1.0
mazebuilder 1.1
A handy JavaScript maze accessory. Original by Isaac Olson requires IE 6+. Refactored version by Stephen Brown is compatible with many other browsers, including those running on Linux.
FAQ Frequently asked questions on nuts and bolts of programming in C++ and compiling using g++, ld, and make
Special Announcement: Hurricane Irma Re-organization
The course calendar and assignments are under revision to accommodate the needs of Irma-affected students. Assignments have been increased in frequency and reduced in complexity. Late submissions will assessed without late fees for all Irma-affected students. Policy details will be available here.
Temporal View: Course Calendar
Week Coverage Grace Rulz apply to programming assignments only
# Dates         Course Notes / Videos Text / Demos Assignment Due Date
1 8/28 - 9/3
0: Introduction   Distance Student Responsibilities
1: Positional Containers   2: Associative Containers
10, 11, 12, 13
Review COP 4530 Lecture Notes
Assignment 0: Portfolio Creation
Register For Exams [Distance Students Only]
9/11 [Mon]
2 9/4 - 9/10
3: Hash Tables   HashTables.mp4
3A: Hash Analysis  
11 (emphasize chaining)
Project 1: Hash Analysis   HashAnalysis.mp4
Quiz 1 (Hash Analysis)  
3 9/11 - 9/17
4: Algorithms  4A: Calculating Asymptotics
5: Generic Set Algorithms  6: Data Structure Algorithms
1,2,3 Quiz 2 (Asymptotics) 9/24
4 9/18 - 9/24
7: Generic Heap Algorithms   8: Sorts
7A: Advanced Heap Algorithms   8A: BSTs and Quicksort
Project 2: Advanced Binary Heap Algorithms
Project 3: Comparison Sort Optimizations   
5 9/25 - 10/1 9: Amortized Analysis 17    
6 10/2 - 10/8 10: Disjoint Set Algorithms    DisjointSets.mp4
21 Project 4: Union-Find and the Partition class   10/22
7 10/9 - 10/15 11a: Graphs and Graph Search    Graph Framework    GraphBasics.mp4
11b: Search Trees, Components, and DAGs
Project 5: RanMaze   Ranmaze.avi
Project 6: SolveMaze  
8 10/16 - 10/22 12: Weighted Graphs     GraphSearch.mp4 23,24    
9 10/23- 10/29 Midterm Exam Covers Weeks 1 - 8 Exam windows run [Sat - Fri]! 10/27 [FRI]
10 10/30 - 11/5 13a: Strings and Alphabets [notes from class]
13b: String Sorts [notes from class]
13c: Strings: Sorting by String Keys [Sedgwick slides]
  Team Project Topics
11 11/6 - 11/12 14a: Strings: Searching by String Keys [Sedgewick] Trie    TST
12 11/13 - 11/19 15a: Substring Search [class]
15b: Strings: Substring Search [Sedgewick]
16: Strings: Regular Expression Pattern Matching
32 (KMP, Rabin-Karp) KMP
ConstructNFA   RunNFA
13 11/20 - 11/26 Thanksgiving Week
14 11/27 - 12/3
15 12/4 - 12/10 Review all notes and assignments
16 12/11 - 12/17 Final Exam Covers Weeks 1 - 15 Exam windows run [Sat - Fri]! 12/15
Ω 12/19 - 1/1 Semester Break - you've completed a capstone course!