CMPSCI 187: Programming with Data Structures

Marc Liberatore and John Ridgway
Spring 2015 (archived)

Syllabus (Subject to Change)

The topics and readings are subject to change as the semester progresses, as are assignment due dates (though they are less likely to change). Exam dates will not change.

Reading assignments are from Dale, Joyce, and Weems, Object-Oriented Data Structures Using Java, third edition.

Lecture meetings are Tuesdays and Thursdays in Morrill I room N375 (the auditorium); Section 1 (Marc) meets 10:00-11:15 a.m., and Section 2 (John) meets 8:30-9:45 a.m.

Discussion meetings occur in LGRT room 223 on various times on Mondays, as listed on SPIRE. Discussion attendance is required and will form a portion of the final grade.

PART I: Overview, Abstract Data Types, and Stacks
DateTopic(s) ReadingsAssignments
Tue, Jan 20 L01 Course Overview: Administration, Software Engineering 1.1
Thu, Jan 22 L02 Course Overview: Java and Data Structures 1.2-1.4
Mon, Jan 26 D01 Introduction to Eclipse
Tue, Jan 27 SNOW DAY
Thu, Jan 29 L03 Course Overview: Data Structures and Analysis 1.5-1.7 Project 0 due
Mon, Feb 2 End of Add/Drop period
Mon, Feb 2 D02 SNOW DAY — homework assigned
Tue, Feb 3 SNOW DAY
Thu, Feb 5 L04 StringLogs: Specifying, One Implementation 2.1-2.4 Project 1 due
Mon, Feb 9 D03 SNOW DAY — Dog teams discussion as homework D02 homework due
Tue, Feb 10 L05 StringLogs: Another Implementation, A Case Study 2.5-2.8
Thu, Feb 12 L06 Stacks: The Abstraction 3.1-3.3 Project 2 due
Mon, Feb 16 NO CLASS (Presidents' Day)
Tue, Feb 17 D04 (Monday class schedule) — Sorting with Two Stacks D03 homework due
Thu, Feb 19 L07 Stacks: Array Implementation;
Application: Well-Formed Expressions
3.4-3.6
Thu, Feb 19 X01 Unit Exam #1, 7-9 p.m., Marcus 131
Mon, Feb 23 D05 Stacks: Linked Implementation 3.7
Tue, Feb 24 L08 Stacks: Evaluating Expressions 3.8 Project 3 due
PART II: Recursion, Queues, and Lists
DateTopic(s) ReadingsAssignments
Thu, Feb 26 L09 Thinking Recursively 4.1–4.4
Mon, Mar 2 D06 Fibonacci Numbers
Tue, Mar 3 L10 Thinking About Recursion 4.5–4.7
Thu, Mar 5 LAST DAY TO DROP WITH W OR CHANGE TO PASS/FAIL
Thu, Mar 5 L11 End of Recursion; Queues: The Abstraction 5.1, 5.2 Projects 4 and 5 due
Mon, Mar 9 D07 Playing with Deques
Tue, Mar 10 L12 Queues: Two Implementations 5.3–5.6
Thu, Mar 12 L13 Concurrency, Interference, and Synchronization 5.7, 5.8 Project 6 due
Mon, Mar 23 D08 Binary Search
Tue, Mar 24 L14 Lists: The Abstraction and Array Implementation 6.1–6.4
Wed, Mar 25 X02 Unit Exam #2, 7-9 p.m., Marcus 131
Thu, Mar 26 L15 Lists: Linked Implementation 6.7
Fri, Mar 27 Project 7 due
Mon, Mar 30 D09 Doubly-linked Lists 7.2
PART III: Yet More Data Structures, Sorting and Searching
DateTopic(s) ReadingsAssignments
Tue, Mar 31 L16 Binary Search Trees 8.1-8.4
Thu, Apr 2 L17 Implementing Binary Search Trees 8.5-8.9 Project 8 due
Mon, Apr 6 D10 Traversing Binary Trees
Tue, Apr 7 L18 Using Binary Search Trees 8.10
Thu, Apr 9 L19 Heaps and Priority Queues 9.1, 9.2 Project 9 due
Mon, Apr 13 D11 Unit Testing a Graph Package
Tue, Apr 14 L20 Graphs 9.3-9.5
Thu, Apr 16 L21 Searching a Graph 9.6 Project 10 due
Mon, Apr 20 NO CLASS (Patriots' Day)
Tue, Apr 21 L22 Sorting Algorithms 10.1-10.3
Wed, Apr 22 D12 Sorting and Lower Bounds
Thu, Apr 23 L23 More Sorting, Searching, and Selecting 10.4, 10.5
Thu, Apr 23 X03 Unit Exam #3, 7-9 p.m., Marcus 131 Project 11 due
Mon, Apr 27 D13 Hash Functions
Tue, Apr 28 L24 Selecting, Hash Tables
Thu, Apr 30 D14 (Monday class schedule) Evaluations Project 12 due
Mon, May 4 FINAL EXAM, 6:00-8:00 p.m., Totman Gym.
Note the non-standard time!