CSC 207.02 Grinnell College Fall, 2018
 
Object-Oriented Problem Solving, Data Structures, and Algorithms
 

Tentative Class Schedule

Monday Wednesday Friday
August 27



New Student
Orientation
August 29



Class
Registration
August 31 Unit 0: Intro. to Java and Object-oriented problem solving
  • Intro to OO Prog.
  • Objects and Classes
Reading:
September 3 Unit 0: Intro. to Java and Object-oriented problem solving
  • Intro. to Java
  • Intro. to the Eclipse Development Environment
  • Java Packages
  • Output, Classes
Reading:
Lab:
September 5 Unit 0: Intro. to Java and Object-oriented problem solving
  • Control structures
  • Arrays
Reading:
Lab:

Due: Response to OO Film (collaboration ok)
September 7 Unit 1: Objects and classes
  • Review of basics
Reading
Lab:
September 10 Unit 1: Objects and classes
  • Inheritance
  • Polymorphism
Reading:
  • Weiss 3.1-3.6, 3.8, 4.1-4.5.2, pp. 69-86, 90-97, 109-138
Lab:
September 12 Unit 1: Objects and classes
  • Generalization, Polymorphism, and Exceptions
Reading:
Lab:

Due: Control Structures/Arrays Lab (collaboration ok)
September 14 Unit 2: Utilizing objects and classes
  • Basic Input
Reading:
Lab:

Due: Reference, Autoboxing, and Autounboxing (collaboration ok)
September 17 Unit 1: Objects and classes
  • Git and GitHub
Reading:
Lab:

Due: Lab on Generalization (collaboration ok)
September 19 Unit 2: Utilizing objects and classes
  • GitHub and Eclipse
  • Javadocs
Reading:
Lab:
September 21 Unit 2: Utilizing objects and classes
  • Notes on Testing and Debugging
  • Using the Eclipse Debugger
  • Black box testing
  • White box testing
  • Unit Testing and JUnit
Reading:
Lab:
September 24 Unit 3: Generics and interfaces
Warm-up Examples

Due: Eclipse, Java Style, Javadocs, and Input lab (collaboration ok)
September 26 Unit 3: Generics and interfaces
  • Software Development
  • Observations Regarding Classes and Objects
Reading:
Reading examples
Lab:
September 28 Unit 3: Generics and interfaces
  • [Multiple] inheritance
  • Classes
  • Abstract Classes
  • Interfaces
Reading:
Example:
Lab:

Due: Supplemental Problem 1 (no collaboration)
October 1 Unit 4: Intro. to the analysis of algorithms
  • Asymptotic Analysis
  • Weiss 5.4-5.8, 201-214
Class discussion
October 3 Unit 4: Intro. to the analysis of algorithms
  • Asymptotic Analysis
  • Weiss 5.4-5.8, 201-214
Take-home Test 1 distributed (no collaboration)
  • Part A due Mon., Oct. 8
  • Part B due Fri., Oct. 12
Lab:

Due: Library example lab (collaboration ok)
October 5 Pause for Breath
October 8 Unit 5: Intro. to Collections
  • Collections API
  • Sets
  • Maps
Reading:
  • Weiss 6.1-6.5, pp. 229-258
  • Weiss 6.7-6.8, pp. 261-274
Lab:

Due: Take-home Test 1, Part A (no collaboration)
October 10 Unit 6: Soft. dev. with assertions and loop invariants
  • Assertions
  • Loop invariants
Reading:
Lab:
October 12 Unit 6: Soft. dev. with assertions and loop invariants
  • Pictorial Loop Invariants
Reading:
Lab:

Due: Take-home Test 1, Part B (no collaboration)
October 15 Film: Sorting Out Sorting (1981)
Film response (at least 6 sentences) due Mon., Oct. 17:
Unit 6: Soft. dev. with assertions and loop invariants
Lab:
October 17 Unit 6: Sorting
  • Sorting
Reading:
  • Weiss 8.1-8.5, pp. 351-364
  • Sorting

Due: Response to Sorting Film (collaboration ok)
October 19 Unit 6: Sorting — Applying Loop Invariants
  • Stacks and Queues
  • Priority Queues
  • Collections
Reading:
  • Weiss 6.6, 6.9, pp. 258-261, 274-279

Due: Lab on Pictorial loop invariants (collaboration ok)
October 22 Fall Break October 24 Fall Break October 26 Fall Break
October 29 Unit 7: Implementing Collections
  • ArrayList implementation
  • Iterators, examples
Reading:
Lab:
October 31 Unit 7: Implementing Collections
  • ArrayList implementation
  • Iterators, examples
Reading:
Lab:
November 2 Unit 6: Sorting — Applying Loop Invariants
  • Quick sort
Reading:
  • Weiss 8.6-8.8, pp. 364-384
  • Sorting
Lab:
November 5 Unit 6: Sorting
  • More Sorting
Lab:

Due: Lab on implementing Arraylists (collaboration ok)
November 7 Unit 8: Linked Lists
  • [Singly-] Linked Lists in Java
Reading:
Lab:
November 9 Unit 8: Linked Lists
  • Doubly-linked Lists
  • Circular Linked Lists
Reading:
  • Weiss, 17.1-17.3, pp. 619-633
Take-home Test 2 distributed (no collaboration)
  • Part A due Wed., Nov. 14
  • Part B due Fri., Nov. 21

Due: Sorting lab (collaboration ok)
November 12 Unit 8: Linked Lists
  • Variations of Linked Lists
  • Weiss, 17.1-17.3, pp. 619-633
Lab:
November 14 Unit 9: Tree Structures
  • Trees
  • Tree Traversals
Reading:
Lab:

Due: Take-home Test 2, Part A (no collaboration)
November 16 Unit 9: Tree Structures
  • Binary Search Trees
Reading:
Lab:
November 19 Unit 10: Hashing and Hash Tables
  • More binary search trees
Lab:
November 21 Unit 10: Hashing and Hash Tables
  • More binary search trees
Lab:

Due: Take-home Test 2, Part B (no collaboration)
November 23 Thanksgiving Break
November 26 Unit 10: Hashing and Hash Tables
  • Iterators, Revisited
  • Hash Table Algorithms
  • Hash Table Practice
Reading:
Lab:
  • Hash tables
    Lab due Fri., Nov. 30 (collaboration ok)
November 28 Unit 10: Hashing and Hash Tables
  • Hash Tables
    • Analysis
    • Hash Tables
Flex-time, as needed
Due: Lab on binary search trees (collaboration ok)
November 30 Unit 11: Heaps and Heap Sort
  • Priority Queues
  • Binary Heaps
  • Heaps Operations
  • Binary Heap Sort
Reading:
  • Read: Weiss 21.1-21.3, pp. 807-822
Lab:

Due: Lab on hash tables (collaboration ok)
December 3 Unit 11: Heaps and heap sort
  • Heap Sort
  • Discussion of Supplemental Problem 3
Reading:
  • Weiss 21.5, pp. 823-826
December 5 Unit 12: Graphs
  • Graph Concepts
    • Graph Implementations
    • Adjacency Matrices
    • Adjacency Lists
Reading:
  • Definitions, Implementations:
    • Weiss, 14.1, pp.527-539
    • Walker, Abstract Data Types, pp. 438-469
December 7 Unit 12: Graphs
  • Traversing Graph
Reading:
  • Walker, Abstract Data Types, pp. 472-476
Lab:

Due: Lab on heaps (collaboration ok)
December 10 Unit 12: Graphs
  • Graphs: Shortest paths
  • End-of-course Evaluations
Reading:
  • Unweighted graphs: Weiss, 14.2, pp. 539-545
  • Dijkstra's Algorithm: Weiss, 14.3, pp. 545-552, Walker, Abstract Data Types, pp. 476-479
Lab:

Due: Problems on graph adjacency matrices/lists, and graph traversals (collaboration ok)
December 12 Unit 12: Graphs
  • Minimum Cost Spanning Trees
Reading:
  • Walker, Abstract Data Types, pp. 491-503
Lab:


Take-home Exam distributed (no collaboration); Due Thursday, December 20, at 5:00 pm
December 14 Course review
  • Semester wrap-up

Due: Problems on shortest paths and minimum cost spanning trees (collaboration ok)
Due: Supplemental Problem 3 (no collaboration)