CMPSCI 187: Fall 2011

Syllabus and Course Schedule

Prof. David Mix Barrington

Reading assignments are from Lewis and Chase, Java Software Structures, third edition.

Lecture meetings are Mondays, Wednesdays, and Fridays 1:25-2:15 in Hasbrouck 134, and discussion meetings are either 9:05-9:55 (section 2) or 10:10-11:00 (section 1) on Wednesdays, both in ELAB 323. Discussion attendance is required and will form a small portion of the final grade.

This is a course under construction! The syllabus may change as the term progresses. In particular, the discussion period activities are not yet finally decided.

PART I:  Overview, Collections, and Stacks

Wed 07 Sep ---  NO DISCUSSION  
Wed 07 Sep L01  Course Overview
Fri 09 Sep L02  Java Overview, Primitive Java (App. B, as needed)
Mon 12 Sep L03  Software Engineering Overview (1.1)
Wed 14 Sep D01  Playing With Stacks
Wed 14 Sep L04  Data Structures Overview (1.2)
Fri 16 Sep L05  Analysis Overview (2)
Mon 19 Sep L06  Collections and Abstract Stacks (3.1, 3.2)  (END OF ADD/DROP)
Wed 21 Sep D02  A Jukebox With Two Stacks
Wed 21 Sep L07  Java:Inheritance and Class Hierarchies (3.3)
Fri 23 Sep L08  Java: Polymorphism, Generics, Exceptions (3.3, 3.6)
Mon 26 Sep L09  The Evaluator Example (3.4-3.6)
Wed 28 Sep D03  Playing With the Evaluator
Wed 28 Sep ---  Optional Review Session for Exam 1
Thu 29 Sep X01  Midterm Exam #1, 7-9 p.m., room TBA

PART II: Stacks, Queues, and Implementations

Fri 30 Sep L10  The ArrayStack Class (3.7, 3.8)
Mon 03 Oct L11  Linked Lists (4.1, 4.2)
Wed 05 Oct D04  Hacking Linked Lists 
Wed 05 Oct L12  Implementing Stacks With Lists (4.3, 4.4)
Fri 07 Oct L13  Stacks as in Collections (4.6)
Mon 10 Oct ---  NO CLASS (Columbus Day Holiday)
Tue 11 Oct L14  (MONDAY SCHEDULE) The Queue ADT, Breadth-First Search (5.1)
Wed 12 Oct D05  Double-Ended Queues
Wed 12 Oct L15  Implementing Queues (5.4, 5.5)
Fri 14 Oct L16  Two Queue Applications (5.2, 5.3)
Mon 17 Oct ---  Optional Review for Midterm #2
Tue 18 Oct X02  Midterm Exam #2, 7-9 p.m., room TBA

PART III: Lists, Recursion, Sorting, and Searching

Wed 19 Oct D06  Coding Double-Ended Queues
Wed 19 Oct L17  The List ADT (6.1)
Thu 20 Oct ---  MID-SEMESTER DATE (last chance to W-drop or P/F)
Fri 21 Oct L18  List Examples (6.2, 6.3)
Mon 24 Oct L19  Implementing Lists With Arrays (6.4)
Wed 26 Oct D07  Ordered Lists With Holes 
Wed 26 Oct L20  Implementing Linked Lists (6.5)
Fri 28 Oct L21  Lists as in Collections (6.6)
Mon 31 Oct ---  NO CLASS -- Power Failure
Wed 02 Nov D08  Computing Fibonacci Numbers
Wed 02 Nov L22  Recursive Thinking and Programming (7.1, 7.2)
Fri 04 Nov L23  Using and Analyzing Recursion (7.3, 7.4) 
Mon 07 Nov L24  Linear and Binary Searching (8.1)
Wed 09 Nov D09  The Sorting Lower Bound
Wed 09 Nov L25  Some Sorting Algorithms (8.2)
Fri 11 Nov ---  NO CLASS (Veteran's Day Holiday)
Mon 14 Nov ---  Optional Review for Exam #3
Mon 14 Nov X03  Midterm Exam #3, 7-9 p.m., room TBA




PART IV: Additional Data Structures

Wed 16 Nov ---  (FRIDAY SCHEDULE)  NO DISCUSSION
Wed 16 Nov L26  Trees and their Implementation (9.1, 9.2. 9.6, 9.7)
Fri 18 Nov L27  Expression Trees (9.4, 9.5)
Mon 21 Nov L28  Binary Search Trees (10.1, 10.2, 10.3)
Wed 23 Nov D10  Tree Traversals (9.3)
Wed 23 Nov L29  Using Binary Search Trees (10.4)
Fri 25 Nov ---  NO CLASS (Thanksgiving Holiday)
Mon 28 Nov L30  Defining and Implementing Heaps (11.1, 11.3, 11.4)
Wed 30 Nov D11  Shortest Paths in a Maze 
Wed 30 Nov L31  Using Heaps: Priority Queues, Heapsort (11.2, 11.5)
Fri 02 Dec L32  Hashing (14.1, 14.2 (part), 14.3)
Mon 05 Dec L33  Hashing in Collections (14.5)
Wed 07 Dec D12  Course Evaluations (University's and Mine)
Wed 07 Dec L34  Set Collections (15.1, 15.3)
Fri 09 Dec L35  Maps in Java (15.5)

FINAL EXAM (cumulative) Tuesday 13 December, 1:30-3:30, ECSC 119

Last modified 1 November 2011