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

hand in as lab3v2

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

hand in as lab4v2

feedback

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

due Tue 4/1 10pm

Thu    

Fri class prep
(to be posted)

due Thu 4/3 10pm
   

Week 11: 4/7-4/11

Topics:

 

Mon     project 4 Omino resubmit
due Mon 4/7 9:40am

hand in as ominov2

feedback

Wed    

Thu    

Fri    

Week 12: 4/14-4/18

Topics:

 

Mon    

Wed    

Thu
exam 2
   

Fri    

Week 13: 4/21-4/25

Topics:

 

Mon    

Wed    

Thu    

Fri    

Week 14: 4/28-5/2

Topics:

 

Mon    

Wed    

Thu    

Fri    

Week 15: 5/5

Topics:

 

Mon    

Reading Period: 5/6-5/8

 

Tue      

Wed      

Thu      

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

Sat

Sun      

Mon