CPSC 225 Data Structures and Algorithms Spring 2025

CPSC 225 Schedule

Class preparation assignments are generally based on the assigned reading and are due by 10pm the night before the class for which they are listed. For readings, "Eck" refers to the textbook (Introduction to Programming Using Java).

Dates for things in light gray are for planning purposes and may be adjusted slightly. Expect class preparation assignments for most classes, weekly labs, and several projects.

 Assignments

Week 1: 1/21-1/24

Topics: course introduction; review of procedural programming

 

Wed Materials from class: introductory survey
(on Canvas)
   

Thu   lab 1
Linux and Eclipse


due Thu 1/30 1:10pm

Fri Materials from class: class prep — review of procedural programming
(on Canvas)

due Thu 1/23 10pm
 

Week 2: 1/27-1/31

Topics: review of object-oriented programming

 

Mon Materials from class: class prep — programming with objects
(on Canvas)

due Sun 1/26 10pm
project 1a
Flip


due Mon 2/3 11:59pm

Wed Materials from class: class prep — writing classes
(on Canvas)

due Tue 1/28 10pm

Thu  

Fri Materials from class:    

Week 3: 2/3-2/7

Topics: OOAD fundamentals; program correctness

 

Mon Materials from class:     project 1b
OO Flip


due Mon 2/10 11:59pm

Wed Reading:
  • Eck 8.1 (introduction to correctness and robustness)
  • Eck 4.1, 4.7.1, 4.6.5 (method contracts, pre- and postconditions, javadoc)
Materials from class:
  • slides: correctness (correctness and robustness, Javadoc comments, preconditions, testing)
class prep — Eck 8.1, 4.1, 4.7.1, 4.6.5
(on Canvas)

due Tue 2/4 10pm
 

Thu   lab 2
Testing



due Thu 2/13 1:10pm

Fri Reading:
  • Eck 8.2.1-8.2.3 (reasoning about correctness)
  • Eck 8.4.1 (assertions)
Materials from class:
class prep — Eck 8.2.1-8.2.3, 8.4.1
(on Canvas)

due Thu 2/6 10pm

Week 4: 2/10-2/14

Topics: correctness and robustness: debugging, preventing bugs, checking preconditions, robust handling of input, exceptions


Mon Materials from class:
  • slides: correctness (reasoning about correctness, assertions)
  lab 1 resubmit
due Mon 2/10 9:40am

Wed Materials from class:
  • slides: correctness (defensive programming, clean code)
   

Thu   lab 3
Correctness


due Thu 2/20 1:10pm
 

Fri Reading:
  • Eck 8.2.4 (robust handling of input)
  • Eck 8.3 (exceptions)
Materials from class:
class prep — Eck 8.3
(on Canvas)

due Thu 2/13 10pm
   

Week 5: 2/17-2/21

Topics: data structure fundamentals: arrays

 

Mon Reading:
  • Eck 3.8.4 (partially full arrays)
  • Eck 7.1.1, 7.1.3 (for-each loops, array literals)
  • Eck 7.2.1-7.2.2 (working with arrays)
  • Eck 7.2.4 (dynamic arrays)
Materials from class:
  • slides: arrays (syntax recap, arrays as collections, figuring out array operations)
  • examples: ArraySequence (in progress)
class prep — arrays
(on Canvas)

due Sun 2/16 10pm
   

Wed Materials from class:      

Thu   lab 4
Arrays and Debugging


due Thu 2/27 1:10pm
 

Fri Materials from class: class prep — Omino
(on Canvas)

due Thu 2/20 11:59pm
(optional, but encouraged)
project 2
Omino


due Fri 3/7 11:59pm
flip resubmit
due Fri 2/21 9:40am

feedback

Week 6: 2/24-2/28

Topics: searching, sorting, shuffling; linked lists

 

Mon Reading:
  • Eck 7.5.3-7.5.4 (insertion sort, selection sort)
Materials from class:
class prep — Eck 7.5.3-7.5.4
(on Canvas)

due Sun 2/23 10pm
 

Wed Reading:
  • Eck 7.5.1 (searching)
  • Eck 7.5.5 (shuffling)
Materials from class:
class prep — Eck 7.5.1
(on Canvas)

due Tue 2/25 10pm
 

Thu    

Fri Reading:
  • Eck 9.2 (linked data structures)
Materials from class:
class prep — Eck 9.2
(on Canvas)

due Thu 2/27 10pm
 

Week 7: 3/3-3/7

Topics: linked lists; efficiency

 

Mon Materials from class:    

Wed     lab 2 resubmit
due Wed 3/5 9:40am

feedback

Thu Materials from class:
  • slides: comments on in-class exercises (linked lists)
  • the "Reference" subsection near the end of the Omino handout has been updated to include what was mentioned in lab about fixing compiler errors involving Color and what colors to use
  lab 5
Linked Lists


due Thu 3/13 1:10pm

Fri Reading:
  • Eck 8.5 (analysis of algorithms)
Materials from class:
class prep — Eck 8.5
(on Canvas)

due Thu 3/6 10pm

Week 8: 3/10-3/14

Topics: efficiency; streams, readers/writers, files

 

Mon Materials from class: class prep — Solitaire
(on Canvas)

due Sun 3/9 10pm
project 3
Solitaire


due Wed 4/2 11:59pm

Wed Materials from class:    

Thu
exam 1
   

Fri Reading:
  • Eck 11.1 (except 11.1.6) (streams, readers, writers)
  • Eck 11.2-11.3 (except 11.2.3) (files)
Materials from class:
class prep — Eck 11.1-11.3
(on Canvas)

due Thu 3/13 10pm
 

Spring Break: 3/17-3/21


Week 9: 3/24-3/28

Topics: ADTs and Java Collections

 

Mon Materials from class:    

Wed Reading:
  • Eck 9.3 (ADTs, stacks, queues)
Materials from class:
class prep — Eck 9.3
(on Canvas)

due Tue 3/25 10pm
 

Thu   lab 6
Streams


due Thu 4/3 1:10pm

Fri Reading:
  • Eck 10.1.3-10.1.7 (generic programming and the Java Collection Framework)
  • Eck 10.2 (lists, sets, priority queues)
  • Eck 10.3-10.3.1 (maps)
Materials from class:
class prep — Eck 10.1-10.3
(on Canvas)

due Thu 3/27 10pm
 

Week 10: 3/31-4/4

Topics: ADTs and Java Collections; object-oriented analysis and design; choosing data structures

 

Mon Reading:
  • Eck 10.4 (programming with the Java Collection Framework)
Materials from class:
  lab 3 resubmit
due Mon 3/31 9:40am

feedback
lab 4 resubmit
due Mon 3/31 9:40am

feedback

Wed Reading:
  • Eck 5.3.4, 5.4 (object-oriented analysis and design)
Materials from class:
class prep — Eck 5.3.4, 5.4
(on Canvas)

due Tue 4/1 10pm

Thu   lab 7
Java Collections


due Thu 4/10 1:10pm

Fri Materials from class: class prep — Adventure
(on Canvas)

due Thu 4/3 10pm
project 4
Adventure


design due Fri 4/11 9:40am
checkpoint Mon 4/14
project due Mon 4/28 11:59pm

Week 11: 4/7-4/11

Topics: binary trees and binary search trees; inheritance and polymorphism

 

Mon Reading:
  • Eck 9.4-9.4.1 (binary trees)
  • Eck 9.4.3 (expression trees)
Materials from class:
class prep — 9.4-9.4.1
(on Canvas)

due Sun 4/6 10pm
Omino resubmit
due Mon 4/7 9:40am

feedback

Wed Reading:
  • Eck 9.4.2 (binary search trees)
Materials from class:
class prep — Eck 9.4.2
(on Canvas)

due Tue 4/8 10pm

Thu   lab 8
Binary Trees


due Thu 4/17 1:10pm

Fri Reading:
  • Eck 5.5.1-5.5.3, 5.6 (inheritance)
Materials from class:
class prep — Eck 5.5.1-5.5.3, 5.6
(on Canvas)

due Thu 4/10 10pm

Week 12: 4/14-4/18

Topics: polymorphism, abstract classes, interfaces

 

Mon Reading:
  • Eck 5.5.4 (polymorphism)
  • Eck 5.5.5, 5.7.1, 5.7.3 (abstract classes, interfaces)
Materials from class:
class prep — Eck 5.5.4, 5.5.5, 5.7.1, 5.7.3
(on Canvas)

due Sun 4/13 10pm

Wed Materials from class:   lab 5 resubmit
due Wed 4/16 9:40am

feedback

Thu
exam 2
 

Fri Materials from class:    

Week 13: 4/21-4/25

Topics: OOAD with inheritance; nested classes; recursion

 

Mon Reading:
  • Eck 5.8-5.8.2 (static nested classes, inner classes)
Materials from class:
class prep — Eck 5.8-5.8.2
(on Canvas)

due Sun 4/20 10pm
 

Wed HWS Day — no class     lab 6 resubmit
due Wed 4/23 9:40am

feedback

Thu   lab 9
Inheritance


due Thu 5/1 1:10pm

Fri Reading:
  • Eck 9.1 (recursion)
Materials from class:
class prep — Eck 9.1
(on Canvas)

due Thu 4/24 10pm
 

Week 14: 4/28-5/2

Topics: recursion

 

Mon Materials from class:
  • slides: recursion (implementing recursion, correctness, divide and conquer)
  • examples: RecursionDemo.java (implementing recursive definitions, divide and conquer)
   

  project interviews
(see your email for the signup link)

signup deadline 4/28 11:59pm
Wed Materials from class:
  • slides: recursion (recursive backtracking, recursion vs loops)
  • examples: RecursionDemo.java (implementing recursive definitions, divide and conquer, backtracking)
  lab 7 resubmit
due Wed 4/30 9:40am

hand in as lab7v2

feedback

Thu   lab 10
Recursion


due Mon 5/5 11:59pm

Fri *** meet in Rosenberg 009 ***  

Week 15: 5/5

Topics: wrapup

 

Mon *** meet in Rosenberg 009 ***   Solitaire resubmit
due Mon 5/5 11:59pm

hand in as solitairev2

feedback
lab 8 resubmit
due Mon 5/5 9:40am

hand in as lab8v2

feedback

Reading Period: 5/6-5/8

 

Tue office hours: 12:30-4pm      

Wed office hours: 12:30-2:30pm      

Thu office hours: 12:30-4pm      

Final Exams: 5/9-5/12

 

Fri
final exam
5/9 8:30-11:30am
end-of-semester deadline
no work accepted after 5/9 11:30am
lab 9 resubmit
hand in as lab9v2

lab 10 resubmit
hand in as lab10v2

Adventure resubmit
hand in as adventurev2

due Fri 5/9 11:30am

Sat

Sun      

Mon