CSE 30331 - Data Structures - Fall 2011

Syllabus   |   Forum at Piazza   |   Tech Basics   |   Project Home Page

Phase III demos Schedule   |   Poster guidelines PPT PDF   |   Poster Presentation Schedule

Instructor

Raul A. Santelices
Email: rsanteli-at-nd-dot-edu
Location: 350 Fitzpatrick Hall

Graduate Teaching Assistants

Everaldo Aguiar
Email: eaguiar-at-nd-dot-edu
Location: Fitzpatrick Computer Cluster (1st floor)

Xueheng Hu
Email: xhu2-at-nd-dot-edu
Location: Fitzpatrick Computer Cluster (1st floor)

Undergraduate Teaching Assistants

Samuel Clark
Email: sclark12-at-nd-dot-edu
Location: Fitzpatrick Computer Cluster (1st floor)

Ryan Conrad
Email: rconrad1-at-nd-dot-edu
Location: Fitzpatrick Computer Cluster (1st floor)

Course Details

Credit Hours: 3
Location: Fitzpatrick Hall 356
Meeting Times: Tuesday and Thursday 9:30-10:45 a.m.

Overview

Data structures, such as lists, trees or graphs, are the ways in which data is represented and organized in memory. Along with the corresponding algorithms that access and update the data, data structures are the building blocks of software. Well designed and well implemented data structures are crucial for constructing software systems of non-trivial size that are efficient, reliable, understandable, testable, and maintainable. Appropriate data structures also facilitate the division of work and communication within teams of developers and the successful adoption of components and services by third parties.

Goals

Students in this course will understand and apply effectively and efficiently the fundamental data structures and their algorithms that lie at the heart of computer science. Concretely, students will learn:
  1. A variety of abstract data types, including vectors, lists, sets, bitsets, stacks, queues, deques, priority queues, tables, trees, and graphs.
  2. Recursive and divide-and-conquer strategies for designing algorithms.
  3. Specific algorithms for searching, sorting, and hashing.
  4. Techniques and criteria for determining the asymptotic efficiency of algorithms and which algorithm is best for a given application.
  5. Principles of good program design, coding and testing using an object oriented approach.
  6. The C++ Standard Template Library (STL) as a means to implement and use data structures.

Books and Resources

Required

Recommended

Some C++ Resources

Other resources


Announcements

      ... Older Announcements

Quizzes

Today (11/22) we had Quiz 8 in class. If you attended class today (11/22) and turned it in, you will have a specially lenient grading. If you attended but decide to turn it in on 11/29, you WON'T have a penalty. If you didn't attend, you can turn it in 11/29 for up to 75% of the score.

This is Quiz 7. If you didn't attend class or didn't turn it in in class or you prefer to re-answer it, bring your answers to class on Thu 11/17 for up to 50% of the score.

These are solutions for the post-midterm Quizzes:

Assignments

Next assignments:

Due Assigned on Assignment Other materials

Past assignments:

Due Assigned on Assignment Grading
Wednesday, 24 August Programming Assignment 1 Solution, Rubric
Sunday 4 Sept, 10pm Homework 1 Solution, Rubric
Wednesday, 28 Sept, 11pm - extended! Sept 13 Programming Assignment 2
PA2 files
Solution Prob. 1
Solution Prob. 2   Rubric
Wednesday, 5 October, 10pm - extended! Sept. 11 Project Phase I Project Web Page
Project Groups.     Rubric
Wednesday October 26, 10pm Sept. 11 Progress reports Phase II Project Web Page
Project Groups
Friday 28 Oct, 10pm October 12 Homework 2 Solution
Sunday November 6, 10pm Sept. 11 Phase II Project Web Page
Project Groups
Wednesday November 16, 10pm Nov 3 Programming Assignment 3 (v2) Sample input Solution by Patrick Collard (see INSTRUCTOR-NOTES.txt)
Sunday November 20, 10pm Sept. 11 Progress reports Phase III Project Web Page
Project Groups
Sunday November 28 or 29 (if you attend class), 10pm Sept. 11 Phase III Project Web Page
Project Groups
Wed 7 Dec, 10pm Nov 22 Homework 3 Solution 1-6 and 7

Schedule

Date Readings Topics Other materials Work Assigned Work Due
Tuesday, 23 August Ford: Ch 1 & 3.5
(in 3.5, focus on templates; you can ignore for now how sorting is done)
Introductions
Expectations
Syllabus
Basic Definitions
C++ Review, Part 1
string code demo
Wednesday, 24 August Prog. Assgn, 1 - Solution
inputs - skeleton files
Thursday, 25 August Ford Ch 2, Ch 4 (except for insertionSort in 4.4)
Note: exceptions are in Ch 2.2
C++ Review, Part 1
Overloading and templates
STL; storage containers
Linux/Unix
string code demo
Tuesday, 30 August C++ inheritance: Ford Ch 13-1, 13-6, 13-7
More C++ you should know: Ford Ch 5.1, 5,2, 5.3, 5.4
Optional: Ford 7-2
C++ Review, Part 2
Operator overload, inheritance, exceptions, heap vs. stack
Programming Examples
Software Engineering, UML
code: operator overloading, template class, exceptions.

Design patterns (Scott Emrich)
Wednesday, 31 August, 11pm Prog. Assgn. 1 - Solution
inputs   skeleton files
Thursday, 1 Sept. Ford 3-1 to 3-5, 4-4 (insertion sort)
Recommended: Cormen Ch 1, 2.1, 2.2, 10.2
Algorithms & Complexity
Sequential Search
Basic Sorting
Binary Search
Animated insertion sort!
Animated selection sort!
Sunday, 4 Sept. Homework # 1 v3
Tuesday, 6 Sept. Ford 3-6, 3-7, and 15 until page 874 (no quicksort) Recommended: Cormen Ch 2.2, 2.3, and 3 Review: sorting, complexity
Divide and Conquer
Binary Search (revisited)
Complexity notations
Merge Sort
Recurrence relations
Jim Marshall's complexity charts
Wikipedia: Big O, Big Theta
NIST: Big O and Big Theta

Animated: insertion, selection, and merge sort!
Thursday, 8 Sept. Ford: Ch 15 (complete)
Recommended: Cormen: Ch 3, 4 & 7
Review of Mergesort
Recursion in general
Quicksort
Solving Recurrence Relations
NIST: Quicksort
Video: Quicksort vs Bubblesort
Video: Merge-sort dance
Video: Quick-sort dance
Animated Quicksort
Sunday, 11 Sept Class Project Web Page
Monday, 12 Sept. 11pm Homework # 1 v3
Tuesday, 13 Sept. Ford: Ch 15-1 (pp 874-889)
Ch 6, 9-1, 9-2, 9-3, 9-5, 9-6
Cormen (3rd ed): Ch 4-3, 4-4, 4-5; give 4-6 a try; 7, 10.2
Quicksort (continued)
Solving recurrence relations; Master Method
NIST: Quicksort
Video: Quicksort vs Bubblesort
Video: Quick-sort dance
Animated Quicksort
Wikipedia: Master Method
Programming Assignment 2
PA2 files
Thursday, 15 Sept Ford Ch 6, 7, and 9-1 to 9-6
Cormen 10.1, 10.2, 10.3
Recap: solving recurrence relations
Lists vs vectors; iterators
Stacks
*Extra slides: Linked Lists*

Animation: Towers of Hanoi
Sunday, 18 Sept, 10pm Groups set for Project
Tuesday, 20 Sept. Ford: Ch 8, 14-1, 14-2, 14-3
Cormen (3rd ed): Ch 10.1
Stacks (continued)
Queues
Priority Queues
Heaps (first glance)
Animated Queues
Thursday, 22 Sept Ford: 8-6, 14-1, 14-2, 14-3
Cormen (3rd ed): 6, 8.3, 10.1
Radix Sort (continued)
Priority Queues
Heaps; implementation, encoding
Heapsort
Animated Radix Sort
Tuesday, 27 Sept. Ford: Ch 8-6, 14-1, 14-2, 14-3
Cormen (3rd ed): Ch 6
Heaps in depth: inserting, deleting
Survey and project discussion
Animated Heapsort
Thursday, 29 Sept. Ford: Ch 14-2, 10-1 to 10-4
Cormen (3rd ed): Ch 6, 10.4, 12.1
Survey and project discussion
Heapsort
Trees
Animated Heapsort
Tuesday, 4 Oct. Ford: Ch 10-5 to 10-8
Cormen 3rd ed: Ch 12.1 to 12.3
Binary Trees
Binary Search Trees
John Morris's Trees page
Binary Search Tree animation
In-order traversal animation
Thursday, 6 Oct. Ford: Ch 10-5 to 10-8
Cormen 3rd ed: Ch 12.1 to 12.3
Binary Search Trees continued
Review for Midterm Exam
John Morris's Trees page
Binary Search Tree animation
In-order traversal animation
Tuesday, 11 Oct. Midterm Exam
Solution and rubric
Midterm 2004
Large set of sample problems (some problems are just C++, so not all of them apply)
Thursday, 13 Oct. Ford: page 563, Ch 11
Binary Search Trees: complexity
Sets and Multisets; Maps
John Morris's Trees page
Sets: Wikipedia, NIST
Maps: Wikipedia, NIST
Tuesday, 25 Oct. Ford: Ch 11, 12-6 to 12-8
Cormen 3rd ed: Ch 13
Map and Set implementation with balanced trees
2-3-4 trees, Red-black trees (overview)
Thursday, 27 Oct. Ford: Ch 12-6 to 12-8
Red-black trees
Conversion from 2-3-4
Construction from scratch
Tuesday, 1 Nov. Ford: Ch 12-1 to 12-5
Cormen 3rd ed: Ch 11
Hashing and Tables
Collision handling
Thursday, 3 Nov. Ford: Ch 14-5, 14-6
Cormen 3rd ed: Ch 16.3
Bitsets
Wikipedia: bit array
Specialized std::vector<bool>
Java BitSet
Tuesday, 8 Nov. Ford: Ch 16-1 to 16-3
Cormen 3rd ed: Ch 22
Bit-based compression
Graphs: introduction
Thursday, 10 Nov. Ford: Ch 16-4 to 16-6
Cormen: Ch 22 to 24
Graphs: search and traversal
Strongly-connected components algorithm
Tuesday, 15 Nov. Ford: Ch 16-4 to 16-6
Cormen: Ch 22 to 24
Graphs: search and traversal (continued)
Thursday, 17 Nov. Cormen: Ch 25 and 26
Graphs: all-pairs paths, maximum flow All-pairs paths, animation
Max flow 1, Max flow 2
Tuesday, 22 Nov. Cormen: Ch 25 and 26
Graphs: all-pairs paths, maximum flow (continued) All-pairs paths, animation
Max flow 1, Max flow 2
Thursday, 24 Nov. no class no class (Thanksgiving)
Tuesday, 29 Nov. none Special topic: Program analysis, data flow in graphs
Thursday, 1 Dec. Survey comments
Review for exam
Project Posters (3)
Tuesday, 6 Dec. Project Posters (6)
Quick review for exam
Thursday, 8 Dec. Project Posters (6)
Quick review for exam
Wed, 14 Dec. Final Exam Practice final exam