CPSC 225 Intermediate Programming Spring 2017

CPSC 225 Schedule

Reading is to be done for the class period where it is listed.

Dates for things in light gray are for planning purposes and may be adjusted slightly.

 Assignments

Week 1: 1/16-1/20

Topics: course introduction, review of CPSC 124, program correctness

   

Mon      

Tue lab 1
Eclipse

due Fri 1/20
 

Wed Slides and Examples:
  • slides (course introduction)
  • Nim (program development example): first pass (outline with broad steps), second pass (filling in code, with placeholder variables for key values and placeholder methods for complex tasks - not quite complete)
programming assignment 0
Benford's Law

due Wed 1/25

Fri Reading:
  • Eck sections 8.1, 8.2.1, 8.4.1
Slides and Examples:
  • slides (using placeholders in program development, correctness, assertions)
  • Nim (program development example): Nim.java (a little more functionality, considering correctness - added some pre- and postconditions, other invariants)
 

Week 2: 1/23-1/27

Topics: robustness; review of classes and objects; objects as data structures; ADTs

 

Mon Reading:
  • Eck sections 8.2.2, 8.3
Slides:
  • slides (lab 1 comments)
  • slides (robustness and exceptions)
 

Tue   lab 2
Correctness and Robustness

due Fri 1/27

Wed Reading:
  • Eck sections 5.1-5.4 (review)
Slides and Examples:
  • slides (correctness and robustness recap)
  • slides (learning nim, imagining classes)
  • Nim (program development example): Nim.java (adding ComputerPlayer to accommodate a complex computer strategy)
programming assignment 1
Evolution

due Wed 2/15

muddiest points due Fri 1/27

(grading and common problems)

Fri Reading:
  • Eck section 9.3 (we haven't covered all of the material referenced in this section yet - focus on what an ADT is and what stacks and queues are, what operations they have, and some applications; skip the parts about implementation)
Slides:
  • slides (evolution muddiest points)
  • slides (data types and ADTs)
 

Week 3: 1/30-2/3

Topics: basic collections (List, Stack, Queue); using the Java Collections Framework; array-based implementation of List, Stack, Queue


Mon Slides and Examples:
  • slides (ADTs; Sequence, Stack, Queue; Java Collections)
  • Reverser and Forwarder (ADTs as part of program development; use of stacks and queues)
Reading:
  • Eck sections 7.3.1-7.3.3
  • Eck sections 10.1.4-10.1.7
 

Tue   lab 3
Java Collections

due Fri 2/3

Wed Slides:

Fri Slides and Examples:  

Week 4: 2/6-2/10

Topics: efficiency; linked lists

 

Mon Reading:
  • Eck section 8.5
Slides:
  • slides (analysis of algorithms)
 

Tue   lab 4
Algorithm Detective

due Fri 2/10

Wed Reading:
  • Eck section 9.2
Slides and Examples:

Fri  

Week 5: 2/13-2/17

Topics: linked lists; linked-list based implementation of List, Stack, Queue; correctness (testing)

 

Mon  

Tue   lab 5
Linked Lists

due Fri 2/17

Wed Slides: programming assignment 2
Solitaire Encryption

due Wed 3/1

muddiest points due Fri 2/17

(grading and common problems)

Fri Slides:  

Week 6: 2/20-2/24

Topics: testing; review of recursion; recursive data structures (binary trees)

 

Mon Slides and Examples:  

Tue   lab 6
Testing

due Fri 2/24

Wed Reading:
  • Eck section 9.1
Slides and Examples:

Fri Reading:
  • Eck sections 9.4 (the introduction part), 9.4.1, 9.4.3
Slides and Examples:
 

Week 7: 2/27-3/3

Topics: binary trees

 

Mon Slides and Examples:  

Tue   lab 7
Binary Trees

due Fri 3/3

Wed Slides and Examples:  

Fri Slides and Examples:    

Week 8: 3/6-3/10

Topics: recursive backtracking

   

Mon
exam 1
   

Tue Slides: lab 8
20 Questions

due Fri 3/10
 

Wed Slides:
  • slides (some ideas about lab 8)
  • slides (recursive backtracking)
programming assignment 3
Recursive Backtracking

due Fri 3/31

muddiest points due Fri 3/10

Fri Slides and Examples:
  • slides (recursive backtracking)
  • NQueens.java (three patterns for n queens - find a solution, find all solutions, count solutions)
  • slides (muddiest points for the backtracking assignment)
 

Spring Break: 3/11-3/29


Week 9: 3/20-3/24

Topics: sorting and shuffling; searching

 

Mon Reading:
  • Eck sections 7.4.3-7.4.4, 9.1.3
Slides:
  • slides (comments about the solitaire encryption programming assignment and exam 1, including info on the exam redo option due 4/5)
  • slides (fundamental algorithms - sorting)
 

Tue   lab 9
Recursive Backtracking

due Fri 3/24

Wed Reading:
  • Eck section 7.4.5
Examples:

Fri Reading:
  • Eck sections 7.4.1-7.4.2, 9.1.1
Slides:
  • slides (fundamental algorithms - sorting efficiency, recursive sorts, shuffling)
 

Week 10: 3/27-3/31

Topics: binary search trees, lookup; PriorityQueue and Set

 

Mon Reading:
  • Eck section 9.4.2
Slides:
  • slides (comments on lab 9)
  • slides (searching, sorting/searching/shuffling in Java)
  • slides (lookup, Dictionary/Map)
 

Tue   lab 10
Fundamental Algorithms

due Fri 3/31

Wed Reading:
  • Eck section 10.3
Slides:

Fri Reading:
  • Eck sections 10.2.3, 10.2.5
Slides and Examples:
  programming assignment 4
File Compression

due Fri 4/14

muddiest points due Mon 4/3

Week 11: 4/3-4/7

Topics: streams, readers, and writers; choosing classes, methods, and data structures


Mon Reading:
  • Eck sections 11.1, 11.2.1-11.2.2
Slides:
 

Tue Slides: lab 11
Streams

due Fri 4/7

Wed Slides and Examples:

Fri Slides and Examples:  

Week 12: 4/10-4/14

Topics: designing programs; inheritance and polymorphism

 

Mon Slides and Examples:  

Tue   lab 12
OOAD

due Fri 4/14

Wed Reading:
  • Eck sections 5.5-5.7
Slides and Examples:

Fri Slides:
  • slides (inheritance and interfaces)
  final project
Adventure

design due Fri 4/21
project due Tue 5/9 11:30am

muddiest points due Mon 4/17

Week 13: 4/17-4/21

Topics: GUI programming

 

Mon Reading:
  • Eck sections 6.1, 6.3.1, 6.5-6.6
Slides and Examples:
 

Tue   lab 13
GUI Calculator

due Fri 4/21

Wed
exam 2
Slides and Examples:

Fri Reading:
  • Eck section 13.4
Slides and Examples:
 

Week 14: 4/24-4/28

Topics: GUI programming

 

Mon meet in Rosenberg 009 lab

Reading:

  • Eck sections 6.2, 6.5-6.7, 13.3
  • slides (custom painting, spacing and sizing, menus, dialogs)
Slides: Materials:
 

Tue   lab 14
Shape Painter

due Fri 4/28

Wed meet in Rosenberg 009 lab

Reading:

  • Eck section 13.1
Slides: Materials:

Fri Slides and Examples:  

Week 15: 5/1-5/2

Topics: GUI programming; wrapup

 

Mon meet in Rosenberg 009 lab

Reading:

  • Eck section 13.2
Slides: Materials:
 

Tue Slides:
  • slides (exam 2 redo option due 5/9)
 

Reading Period: 5/3-5/5

 

Wed office hours 10:30-12:30  

Thu office hours 12-2  

Fri office hours 1:30-3:30  

Exams: 5/6-5/9

 

Sat  

Sun  

Mon office hours 12-2

Slides:

  • slides (comments on project 3 - backtracking)
 

Tue
final exam (final project due)
Tue 5/9 8:30-11:30am

Slides:

  • slides (comments on project 4 (compression), Adventure, and labs 10, 11, and 14)
end-of-semester deadline
no work accepted after 5/9 11:30am

Valid HTML 4.01!