COP 4530 Data Structures, Algorithms, and Generic Programming

Spring 2013


Schedule:

MCH 201
12:20PM - 1:10PM, MWF

Course Description:         

Making efficient use of computational resources is one of the important tasks of any computer scientists. In this course we will explore different ways of organizing data to facilitate such sufficient use. This course covers the following topics:

We will also have several substantial programming projects that involve the implementation and use of data structures, algorithms, and generic programming.

Course Objective:

The objective of the course is to teach students how to design, write, and analyze the performance of C/C++ programs that handle structured data and perform more complex tasks, typical of larger software projects. Students should acquire skills in using generic principles for data representation and manipulation with a view for efficiency, maintainability, and code-reuse. Successful students will, at the end of the course, be able to demonstrate analytical comprehension of concepts such as abstract data types (vectors, lists, deques, trees, etc.), generic programming techniques (containers, adaptors, accessing data through interface, iterators, etc.), algorithms (sorting, using stacks and queues, tree exploration algorithms, etc.), and efficiency analysis (which data structures allow efficient interfaces to particular forms of data access, such as random vs. sequential data access or insertion). The students should be able to demonstrate similar skills in related implementation tasks in the C/C++ language, including extensive use of templates to allow for modularity and re-usability of code. 

Prerequisites:

Textbooks

Course Contents

The course outline will closely follow the material presented in book by Mark Allen Weiss. We will cover chapters 1--9 in detail and chapters 10--12 in any remaining extra time.

Chapter 1 - Introduction
1.1 What’s the Book About?
1.2 Mathematics Review
1.3 A Brief Introduction to Recursion
1.4 C++ Classes
1.5 C++ Details
1.6 Templates
1.7 Using Matrices

Chapter 2 - Algorithm Analysis
2.1 Mathematical Background
2.2 Model
2.3 What to Analyze
2.4 Running Time Calculations

Chapter 3 - Lists, Stacks, and Queues
3.1 Abstract Data Types (ADTs)
3.2 The List ADT
3.3 vector and list in the STL
3.4 Implementation of vector
3.5 Implementation of list
3.6 The Stack ADT
3.7 The Queue ADT

Chapter 4 - Trees
4.1 Preliminaries
4.2 Binary Trees
4.3 The Search Tree ADT–Binary Search Trees
4.4 AVL Trees
4.5 Splay Trees
4.6 Tree Traversals (Revisited)
4.7 B-Trees
4.8 Sets and Maps in the Standard Library

Chapter 5 - Hashing
5.1 General Idea
5.2 Hash Function
5.3 Separate Chaining
5.4 Hash Tables Without Linked Lists
5.5 Rehashing
5.6 Hash Tables in the Standard Library
5.7 Extendible Hashing

Chapter 6 - Priority Queues (Heaps)
6.1 Model
6.2 Simple Implementations
6.3 Binary Heap
6.4 Applications of Priority Queues
6.5 d-Heaps
6.6 Leftist Heaps
6.7 Skew Heaps
6.8 Binomial Queues
6.9 Priority Queues in the Standard Library

Chapter 7 - Sorting
7.1 Preliminaries
7.2 Insertion Sort
7.3 A Lower Bound for Simple Sorting Algorithms
7.4 Shellsort
7.5 Heapsort
7.6 Mergesort
7.7 Quicksort
7.8 Indirect Sorting
7.9 A General Lower Bound for Sorting
7.10 Bucket Sort
7.11 External Sorting

Chapter 8 - The Disjoint Set Class
8.1 Equivalence Relations
8.2 The Dynamic Equivalence Problem
8.3 Basic Data Structure
8.4 Smart Union Algorithms
8.5 Path Compression
8.6 Worst Case for Union-by-Rank and Path Compression
8.7 An Application

Chapter 9 - Graph Algorithms
9.1 Definitions
9.2 Topological Sort
9.3 Shortest-Path Algorithms
9.4 Network Flow Problems
9.5 Minimum Spanning Tree
9.6 Applications of Depth-First Search
9.7 Introduction to NP-Completeness

Chapter 10 - Algorithm Design Techniques
10.1 Greedy Algorithms
10.2 Divide and Conquer
10.3 Dynamic Programming
10.4 Randomized Algorithms
10.5 Backtracking Algorithms

Chapter 11 - Amortized Analysis
11.1 An Unrelated Puzzle
11.2 Binomial Queues
11.3 Skew Heaps
11.4 Fibonacci Heaps
11.5 Splay Trees

Chapter 12 - Advanced Data Structures and Implementation
12.1 Top-Down Splay Trees
12.2 Red-Black Trees
12.3 Deterministic Skip Lists
12.4 AA-Trees
12.5 Treaps
12.6 k-d Trees
12.7 Pairing Heaps

Workloads and Grading:

There will be one final exam, one midterm exam, five (programming) home assignments, and several in-class quizzes. 
  1. Five home assignments (45%) - 9% each
  2. Two exams (50%)
    • Midterm - 20% 
    • Final Exam - 30%
  3.  Quizzes - 5 %

NOTE: The programming assignments are substantially harder than those in the previous programming courses, and will require substantially more time and effort to complete. You need to immediately start working on a programming assignment as soon as it is announced.

Final letter grades

In order to obtain a course grade of C- or better, your course performance must satisfy the following two requirements.

A [90-100]
A- [87-90)
B+ [84-87)
B [81-84)
B- [78-81)
C+ [75-78)
C [72-75)
C- [70-72)
D [60-70)
F <60

Course Policies:

Attendance Policy:

The university requires attendance in all classes, and it is also important to your learning. The attendance record may be provided to deans who request it. If your grade is just a little below the cutoff for a higher grade, your attendance will be one of the factors that we consider, in deciding whether to "bump" you up to the higher grade. Missing three or fewer lectures will be considered good attendance. In rare cases, such as medical needs or jury duty, absences may be excused with appropriate documentation. You should let me know in advance, when possible, and submit the documentation I seek. You should make up for any materials missed due to absences.

NOTE: recitation attendance is required. Both announced and unannounced quizzes will be given during recitations.

Missed exam Policy:

A missed exam will be recorded as a grade of zero. We will follow the university rules regarding missed final exams (see http://registrar.fsu.edu/dir%5Fclass/spring/exam_schedule.htm), for all the exams, including the final exam.

Late Assignment Policy:

In order to enable us to provide timely solutions to assignments, we have the following policy regarding submission of late assignments.

Incomplete Grade (Grade of 'I') Policy:

The grade of 'I' will be assigned only under the following exceptional circumstances:

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

AMERICANS WITH DISABILITIES ACT (ADA):

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)
(850) 644-7164
sdrc@admin.fsu.edu
http://www.disabilitycenter.fsu.edu/

Academic Integrity:

Remember that the goal of programming assignments and homework is to enhance your analysis, reasoning, and programming skills. Indulging in academic dishonesty defeats this purpose apart from being unfair to other students. In case you have any questions about whether an act of collaboration may be construed as academic dishonesty, please clarify the issue with the instructor before you collaborate.

All students should follow FSU Academic Honor Code. You might be assigned a grade of 'F', if you are found to have indulged in academic dishonesty.

Syllabus Changes

This syllabus is a guide for the course and is subject to change with advance notice.