FSU Seal - 1851 Course Organizer
COP 4531 Complexity and Analysis of Data Structures and Algorithms
Summerl Semester 2019
Root View: Course Components
Syllabus
The course syllabus establishes course policies on grading, attendance, and exams. The syllabus should be read in detail at beginning semester.
Calendar
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.)
FSU LMS
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.
Textbook
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.
Office
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
Make1
Make2
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: May 1, 2019) Grace Rulz apply to programming assignments only
# Dates         Course Notes / Videos Text / Demos Assignment Due Date
1 5/13-5/19
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]
Understand Project Rules and Homework Rules
5/17 [FRI]
5/19
5/19
5/19
2 5/20-5/26
8: Hash Tables   HashTables.mp4
9: Hash Analysis   HashAnalysis.mp4
10: Generic Heap Algorithms   11: Advanced Heap Algorithms
Ch 11 (emphasize chaining)
Ch C4,C5 (appendices)
Ch6
Project 1: Hash Analysis  
Quiz 1 (Hash Analysis - 20 pts)  
5/26 5/28
5/26 5/28
 
3 5/27-6/2
12: Generic Set Algorithms   13: Sorts
14: Asymptotics   15: BSTs and Quicksort
Ch 5,7,8
Ch 1-4
Homework 1: Sieve of Eratosthenes   Solution
Quiz 2 (Asymptotics - 20 pts)
6/2
6/2 6/9
 
4 6/3-6/9
16: Amortized Analysis   17: Divide&Conquer
18: Dynamic Programming   19: Greedy Algorithms
Ch 7, Ch 17
Ch 15, Ch 16
Homework 2: Amortized Analysis   Solution
Project 2: List::Sort  
6/9
6/16
5 6/10-6/16
20a: Disjoint Set Algorithms   DisjointSets.mp4
Ch 21
Project 3: Mazes on the Web  
6/23
6 6/17-6/23
20b: Graph Survey   GraphBasics.mp4
20c: Graph Framework   20d: Search Trees, Components, and DAGs
20f: Random Graphs
Sec 22.1-22.5
 
Ch 23,24
Homework 3: IsBipartite   Solution
Homework 4: Component Size Rank   Solution
6/30
7/7 7/10
7 6/24-6/30
Midterm Exam Covers Weeks 1 - 6
Exam windows run [Sat - Fri]!
6/28 [FRI]
8 7/1-7/7
20e: Weighted Graphs   GraphSearch.mp4
20e (alt): Networks  
Ch 23,24
Project 4: Shortest Paths  
7/14
9 7/8-7/14
21a: Strings and Alphabets    
21b: String Sorts
  Sedgewick slides
Sedgwick/Wayne (Java)
has excellent coverage
Project 5: String Matching  
7/21
10 7/15-7/21/td>
21c: Substring Search   Sedgewick Slides
21d: String Matching   Sedgewick Slides on 'grep'
Ch 32 (KMP, Rabin-Karp) KMP
ConstructNFA   RunNFA
 
 
11 7/22-7/28
22: NP    
Ch 34
Homework 5: NP   Latex source
7/28
12 7/28-8/4
Final Exam Covers Weeks 1 - 15
Exam windows run [Sat - Fri]!
8/2 [FRI]
Ω 8/5-8/6
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.