Computer Science 225
Advanced Programming

Spring 2020, Siena College

Course Schedule

Links will be added here with additional information about lectures and problem sets. All assignment dates are subject to change, and are provided only as a general guideline until the actual assignment is posted.

"Bailey" refers to the free online textbook Java Structures: Data Structures in Java for the Principled Programmer, "Root 7" Edition (a free online textbook) by Duane Bailey. This text has been made freely available as a PDF by the author.


Topic and/or Event Readings
January 21/22 Lecture 1: Introduction; Problem Set 1 Out; Lab 0: Setting Up and Refresher
January 24 Lecture 2: Java You Know Topic Notes: Java You Know
January 27 Lecture 3: More Java You Know
January 28/29 Lecture 4: Lab 1: Java Interfaces
January 31 Lecture 5: Interfaces; Problem Set 2 Out Topic Notes: Interfaces
February 3 Lecture 6: Interfaces; Introduction to Inheritance Topic Notes: Inheritance
February 4/5 Lecture 7: Lab 2: Introduction to Java Swing
February 7 Lecture 8: More Inheritance; Problem Set 3 Out
February 10 Lecture 9: Abstract Classes and and Inheritance Case Study Bailey Ch. 7; Bailey's Structure Package: Code on GitHub, Javadoc
February 11/12 Lecture 10: Lab 3: More Java Swing
February 14 Lecture 11: Designing a Graph Data Structure Topic Notes: Graph Structure Design; Bailey Ch. 16
February 17 Lecture 12: Spatial Data Structures Topic Notes: Spatial Data Structures
February 18/19 Lecture 13: Lab 4: Java Graphics and Mouse Events
February 21 Lecture 14: More Quadtrees; More Event-Driven Programming
February 24 Lecture 15: Event-Driven Programming: Dragging Topic Notes: Event-Driven Programming
February 25/26 No Labs: Optional Review during first hour of each lab meeting
February 26 Evening Exam
February 28 Lecture 16: More Event-Driven Programming; Problem Set 4 Out
March 2 Lecture 17: Custom Graphics Objects; Introduction to Animation Topic Notes: Threads and Animation
March 3/4 Lecture 18: Lab 5: Object-Oriented and Recursive Graphics
March 6 Lecture 19: More Threads and Animation
March 9-13 Spring Break!
March 16-20 Extended Pandemic Break
March 23 Lecture 20: Dangers of Concurrency; Problem Set 5 Out
March 24/25 Lecture 21: Lab 6: Animation
March 27 Lecture 22: Keyboard Events; More Animation Topic Notes: Keyboard Events; Topic Notes: More Threads and Animation
March 30 Lecture 23: More Advanced Animation; Final Project Introduction
March 31/April 1 Lecture 24: Lab 7: Memory with Threads
April 3 Lecture 25: Exam Review
April 6 Lecture 26: Thread Safety
April 7/8 Exam 2 During Lab Meetings
April 9-13 Easter Break
April 14/15 Lecture 27: Lab 8: Threads for Parallel Processing
April 17 Lecture 28: Java Packages Topic Notes: Packages and Jar Files; Java Tutorial page: Controlling Access to Members of a Class
April 20 Lecture 29: Jar Files, Collisions, and Branches in Git Topic Notes: Animation with Collisions
April 21/22 Lecture 30: Lab 9: Working with Regular Expressions
April 24 Lecture 31: Merge Conflicts; Files, NIO.2 and Exceptions; Java Odds and Ends Topic Notes: Files and Exception Handling; Java Tutorial page: File I/O (Featuring NIO.2); Topic Notes: More Java: Odds and Ends
April 27 Lecture 32: More Java: Odds and Ends Covariant Return Type in Java; 5 Java concepts explained: Overloading, overriding, shadowing, hiding, and obscuring
April 28/29 Lecture 33: Lab Recaps; Final Project Work
May 1 Office Hours Only, No Lecture Meetings
May 4 Lecture 34: Course Review and Wrapup (during regular time slots)
May 4 Lecture 35: Final Project Demos (7-9 PM)
May 7 Final Exam, 1:30-3:30