CPSC 225 Intermediate Programming Spring 2022

CPSC 225 Schedule

Reading is to be done for the class period where it is listed; "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.

 Assignments

Week 1: 1/24-1/28

Topics: course introduction; program correctness

 

Mon In Class:    

Tue   lab 1
Linux and Eclipse

Wed Reading:
  • Eck sections 8.1, 8.2.1-8.2.3 (introduction to correctness and robustness, reasoning about correctness)
  • Eck sections 4.1, 4.7.1, 4.6.5 (method contracts, pre- and postconditions, javadoc)
In Class:

Fri Reading:
  • Eck section 4.3.7 (throwing exceptions)
  • Eck section 8.4.1 (assertions)
In Class:

Week 2: 1/31-2/4

Topics: correctness and robustness

 

Mon In Class:

Tue   lab 2
Correctness

Wed Reading:
  • Eck section 8.2.4 (robust handling of input)
  • Eck section 8.3 (exceptions)
In Class:
  • slides: lab 2 (comments on preconditions and invariants for lab 2)
  • slides: robustness (exceptions)
programming assignment 1
Omino!


resubmit due 5/10 4:30pm
comments and resubmit info

Fri In Class:

Week 3: 2/7-2/11

Topics: exceptions; ADTs and collections; using Java Collections classes


Mon Reading:
  • Eck section 9.3 (introduction only), 9.3.1-9.3.2 (just the first few paragraphs in each - about stacks, queues, and their operations; skip the discussion of implementation) (ADTs, stacks, queues)
  • Eck sections 10.1.3-10.1.7 (generic programming and the Java Collection Framework)
  • Eck section 10.2 (except 10.2.2) (lists, sets, priority queues)
  • Eck sections 10.3-10.3.1 (maps)

There's a lot of content here - don't worry about absorbing all of the syntax! Focus on getting the main idea of each section - what the elements of generic programming are in Java (parameterized types, iterators, for-each loops, equality and comparison, wrapper classes and autoboxing) and what lists, stacks, queues, priority queues, map, sets are (including their operations). Also don't worry about discussions of implementation (especially mentions of linked lists) or efficiency.

In Class:


Tue
  • slides: collections (lookup and membership - Map, Set)
lab 3
Java Collections

Wed Reading:
  • review Monday's reading, now paying more attention to the details of syntax
  • Eck 10.2.2 (sorting collections)
In Class:

Fri In Class:

Week 4: 2/14-2/18

Topics: collections (BinaryTree); streams, readers, writers


Mon In Class:

Tue   lab 4
Binary Trees

Wed In Class:
  • slides: lab 4 (comments on lab 4, working with trees)

Fri Reading:
  • Eck 11.1 (streams, readers, writers)
  • Eck 11.2-11.3 (except 11.2.3) (files)
In Class:

Week 5: 2/21-2/25

Topics: dynamic and partially full arrays; linked lists


Mon Reading:
  • Eck 3.8.4 (partially full arrays)
  • Eck 7.2 (array processing, dynamic arrays)
In Class:
programming assignment 2
File Compression


resubmit due 5/10 4:30pm
comments and resubmit info

Tue   lab 5
Streams

Wed In Class:

Fri Reading:
  • Eck 9.2 (linked data structures)
In Class:

Week 6: 2/28-3/4

Topics: linked lists; analysis of algorithms


Mon In Class:

Tue   lab 6
Linked Lists

Wed In Class:

Fri Reading:
  • Eck 8.5 (analysis of algorithms)
In Class:

Week 7: 3/7-3/11

Topics: analysis of algorithms; implementation of searching, sorting, shuffling


Mon In Class:

Tue   lab 7
Algorithm Detective

Wed Reading:
  • Eck 7.4.3-7.4.4 (insertion sort, selection sort)
In Class:

Fri Reading:
  • Eck 7.4.1 (searching)
  • Eck 7.4.5 (shuffling)
In Class:
programming assignment 3
Solitaire Encryption


resubmit due 5/10 4:30pm
comments and resubmit info

Week 8: 3/14-3/18

Topics: recursion


Mon In Class:

Tue *** lab section 1 (11:50-1:20) meets in the Geneva Room ***
*** lab section 2 (3:10-4:40) meets in Lansing 301 ***
exam 1

(review information)

redo due 4/13 in class
comments and redo info

Wed Reading:
  • Eck 9.1 (recursion)
In Class:

Fri In Class:

Spring Break: 3/19-3/27


Week 9: 3/28-4/1

Topics: implementing collections: linear collections (List, Stack, Queue), priority queues, binary trees


Mon In Class:

Tue   lab 8
Recursion

Wed In Class:

Fri Reading:
  • Eck 9.4-9.4.1 (binary trees)
In Class:

Week 10: 4/4-4/8

Topics: implementing collections: Map, Set; binary search trees, hashtables; choosing data structures and implementations


Mon Reading:
  • Eck 9.4.2 (binary search trees)
In Class:

Tue   lab 9
Implementing ADTs

Wed Reading:
  • Eck 10.3.3 (hashtables)
In Class:

Fri In Class:

Week 11: 4/11-4/15

Topics: designing programs (determining classes and methods)


Mon Reading:
  • Eck 5.3.4, 5.4 (object-oriented analysis and design)
In Class:
  • slides: program design (identifying classes, instance variables, methods)
final project
Adventure

Tue   lab 10
Program Design

Wed In Class:

Fri *** class meets in Gulick 100 ***

In Class:

  • slides: program design (pseudocode, representation, completing the Pennywise design)

Week 12: 4/18-4/22

Topics: designing programs; inheritance and polymorphism; intro to GUI programming and JavaFX


Mon In Class:

Tue *** lab section 1 (11:50-1:20) meets in the Geneva Room ***
*** lab section 2 (3:10-4:40) meets in Lansing 301 ***
exam 2

(review information)

redo due 5/10 4:30pm
comments and redo info

Wed Reading:
  • Eck 5.5-5.7 (inheritance, polymorphism, abstract classes, interfaces)

In Class:


Fri Reading:
  • Eck chapter 6
    Read the chapter introduction and section 6.1 for the background on JavaFX, then look through the rest of the sections to get an overview of what is there.

In Class:


Week 13: 4/25-4/29

Topics: JavaFX; abstract classes and interfaces


Mon *** class meets in Rosenberg 009 ***

Reading:

  • Eck 6.1 (overview of a JavaFX application)
  • Eck 6.4, 6.5 (controls, layout)

In Class:


Tue   lab 11
GUI Calculator

Wed *** class meets in Rosenberg 009 ***

Reading:

  • Eck 6.2 (basic classes)
  • Eck 6.3.1-6.3.3 (event handling, mouse events)

In Class:


Fri In Class:

Week 14: 5/2-5/6

Topics: JavaFX; wrapup


Mon *** class meets in Rosenberg 009 ***

Reading:

  • Eck 6.6.2 (menus and menubars)
  • Eck 13.4.1 (dialog boxes)

In Class:


Tue In Class:

Wed *** class meets in Rosenberg 009 ***

Reading:

  • Eck 6.4.5 (slider)
  • Eck 13.1 (properties and bindings)
  • Eck 13.2.4 (stacked canvases)
In Class:

Fri *** bring a device (laptop, tablet, phone) if you can ***

In Class:


Reading Period: 5/7-5/9


Sat

Sun TF hours: 7-10pm

Mon office hours: 11am-1pm
TF hours: 7-10pm

Exams: 5/10-5/13

 

Tue office hours: 11am-1pm, 1:30-4:30pm end-of-semester deadline
no work accepted after 5/10 4:30pm

Wed

Thu

Fri