FSU Seal - 1851 Course Organizer
COP 4531 Complexity and Analysis of Data Structures and Algorithms
Fall Semester 2018
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.
Notes Index
Lecture notes are in a variety of formats: (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 flat html or pdf document suitable for detailed reading. These notes provide a compact view of the important topics. 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 Canvas 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. Programming assignments account for 250 points (25% of the course grade). Note that deadlines for programming assignments are subject to rules explained here. submissions received after the grace period ends will not be graded.
Problem Sets Non-programming assignments ("Problem Sets") are intended to provide thoughtful experiences above the level of cmputer code. Reading and researching is encouraged and may be required. Deadlines for problem sets are strictly enforced -- there is no grace period and solutions will be distributed immediately after the deadline. Note that quizzes and problem sets together account for 250 class points (25% of the course grade). Required format for submitted written assignments is described here. Note that deadlines for quizzes and written homework are firm. Late submissions will be rejected.
Quizzes Quizzes may be given for some topics that are computational in nature. Note that quizzes and problem sets together account for 250 class points (25% of the course grade). Note that deadlines for quizzes and written homework are firm. Late submissions will be rejected.
LIB The course code distribution library LIB = /home/courses/cop4531p/LIB
DEV The course coding environment consists of: C++ ISO 11 (or higher), the gnu compiler g++ on the linprog servers, gnu make, and a text editor such as emacs or vi. Access the linprog servers using the departmental licensed Tectia ssh client. All submitted projects should build error and warning free with the g++ flags -Wall -Wextra. (See the macros c4531 and co4531 for example compile commands.)
The FSU Learning Management System Portal (Canvas), 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 LMS 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 LMS 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
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
Temporal View: Course Calendar*
Week Coverage (Revision: 09/03/2018) Grace Rulz apply to programming assignments only
# Dates         Course Notes / Videos Text / Demos Assignment Due Date
1 8/27 - 9/2
0: Introduction   1: Positional Containers
2: Associative Containers   3: Intro to Algorithms
4: Data Structure Algorithms   5: Functors
6: Iterators   7: Generic Algorithms
Ch 10-13
Ch 10-13
Distance Student Responsibilities
Assignment 0: Portfolio Creation
Register For Exams [Distance Students Only]
2 9/3 - 9/9
8: Hash Tables   HashTables.mp4
9: Hash Analysis   HashAnalysis.mp4
Ch 11 (emphasize chaining)
Ch C4,C5 (appendices)
Project 1: Hash Analysis  
Quiz 1 (Hash Analysis - 20 pts)  
3 9/10 - 9/16
10: Generic Heap Algorithms   11: Advanced Heap Algorithms
12: Generic Set Algorithms   13: Sorts
Ch 6
Ch 5,7,8
Homework 1: Sieve of Eratosthenes   Solution
Read These Rules
4 9/17 - 9/23
14: Asymptotics   15: BSTs and Quicksort
16: Amortized Analysis   17: Divide&Conquer
Ch 1-4
Ch 7, 17
Quiz 2 (Asymptotics - 20 pts)
Project 2: List::Sort  
5 9/24 - 9/30
18: Dynamic Programming   19: Greedy Algorithms
Ch 15   Ch 16
Homework 2: Amortized Analysis   Solution
6 10/1 - 10/7
20a: Disjoint Set Algorithms   DisjointSets.mp4
Ch 21
Project 3: Mazes on the Web  
7 10/8 - 10/14
20b: Graph Survey   GraphBasics.mp4
20c: Graph Framework   20d: Search Trees, Components, and DAGs
Sec 22.1-22.5
Homework 3: IsBipartite   Solution
8 10/15 - 10/21
20f: Random Graphs
Ch 23,24
Project 4: Route Planning Using A*  
9 10/22- 10/28
Midterm Exam Covers Weeks 1 - 8
Exam windows run [Sat - Fri]!
10 10/29 - 11/4
20e: Weighted Graphs   GraphSearch.mp4
Ch 23,24
11 11/5 - 11/11
21a: Strings and Alphabets    
21b: String Sorts
  Sedgewick slides
Sedgwick/Wayne (Java)
has excellent coverage
Homework 4: Component Size Rank   Solution
*Note proj5 and hw4 due same day.
12 11/12 - 11/18
21c: Substring Search   Sedgewick Slides
21d: String Matching   Sedgewick Slides on 'grep'
Ch 32 (KMP, Rabin-Karp) KMP
ConstructNFA   RunNFA
Project 5: String Matching  
*Suggest submitting one of these during week 13.
13 11/19 - 11/25
Thanksgiving Week
14 11/26 - 12/2
20: NP    
Ch 34
Homework 5: NP   Latex source
15 12/3 - 12/9
Review all notes and assignments, plus text Chapters 1-8, 10-13, 15-17, 21-24, 32, 34
Review behaviors of all executables in LIB/notes_support
16 12/10 - 12/16
Final Exam Covers Weeks 1 - 15
Exam windows run [Sat - Fri]!
Ω 12/17 - 1/1
Semester Break - you've completed a capstone course!

*Items distributed via the course calendar are not officially realeased until the date they appear in the calendar. Items that are visible in advance may be used, but always check for the updated version at the release date.