This course ended
May 12, 2019

CPSC 225: Intermediate Programming

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Spring 2019.

   Instructor:  David J. Eck  (

   Course Handout:

   Monday, Wednesday, Friday, 9:05–10:00 AM
       Gulick 2000.

   Lab: Tuesday, 11:55–1:20
       Rosenberg 009.

Lab Worksheets
Lab 1, January 22
Spellcheck / Eclipse
Lab 2, January 29
Artistic Inheritance
Lab 3, February 5
Recursion Exercises
Lab 4, February 12
Timing Experiments
Lab 5, February 19
Linked Lists
Lab 6, February 26
GUI Tutorial
Lab 7, March 5
Lab 8, March 12
Lab 9, March 26
Symbol Table
Lab 10, April 2
Streams / eCards
Lab 11, April 9
eCard Files
Lab 12, April 23

Some Useful Links

Fifteenth Week and Final Exam: May 6 and 12

The final exam for this course will be at 1:30 on Sunday, May 12, in our regular classroom. A study guide was handed out in class. You can also look at the first test study guide and at the second test study guide

Monday, May 6 is the last day of class. I will do some of the sample problems from the final exam study guide and answer questions.

The final project is officially due on May 6, but if you need an extension, you should ask for one. I am willing to give extensions up until the final exam time, on request.

End-of-semester Office Hours:

    Monday, May 6:      1:30–4:00
    Tuesday, May 7:    10:00–2:00
    Wednesday, May 8:   1:00–4:00
    Thursday, May 9:    1:00–4:00
    Saturday, May 11:  11:00–2:00
    Sunday, May 12:    12:00–1:20

Fourteenth Week: April 29; May 1 and 3

For the last full week of classes, we will cover topics from Chapter 13. We will be looking at some of the more advanced aspects of GUI programming with JavaFX, especially those ideas that have more general applicability. We will look at properties and bindings, transformations in a GraphicsContext, and the Model-View-Controller pattern. If there is time, we will also look at how to manage multiple windows in the same program and maybe how to work with resizable windows.

Thirteenth Week: April 22, 24, and 26

We will continue work on Chapter 12, covering much of the material in Section 12.1 through Section 12.4. We will not cover Section 12.5.

The lab for Tuesday will use networking and threads. This is the last lab assignment for the course. Next week's lab period will be a chance to work on your final project.

Twelfth Week: April 15, 17, and 19

There is a test on Monday, April 15. A study guide was handed out in class last Wednesday.

After the test, we will move on to Chatper 12, which covers threads and parallel processing.

For the lab this week, you can work on your final project, or you can continue work on Lab 11 if you haven't finished it.

Eleventh Week: April 8, 10, and 12

After finishing up with files on Monday, we will move on to networking and the socket API, Section 11.4.

Your final project proposal is due in class on Friday. There is test coming up next Monday, April 15, covering Sections 9.4 through 11.3.

Tenth Week: April 1, 3, and 5

We will spend the week on I/O streams in general and on using files in particular. The reading is Section 11.1, Section 11.2, and Section 11.3.

Ninth Week: March 25, 27, and 29

I will spend some time on Monday talking about Section 10.5, which covers writing generic classes and methods. However, this material is not used often in practice, and you are not required to learn it. We will then spend some time on the "stream API", Section 10.6, a relatively new feature of Java that was introduced in Java 8. We will probably have time to get a start on Chapter 11 on Friday.

Final project requirements were distributed in class on the Wednesday before Spring break. Remember that you must meet with me to discuss your ideas for a project no later than next Friday, April 5, and a written proposal is due the following Friday, April 12.

Eighth Week: March 12, 14, and 16

We are woking on Chapter 10. For Monday and part of Wednesday, we will still be working on Section 10.1 and Section 10.2. We should move on to Section 10.3, which covers HashMap and TreeMap, by Wednesday.

Note that we will not cover priority queues (10.2.4). And, although I will cover them briefly, you are not responsible for knowing the material in 10.3.2 and 10.3.3. We will be doing some of the examples in Section 10.4, but you are not responsible for knowing those specific examples.

Seventh Week: March 4, 6, and 8

We will finish Section 9.4 and then move on to Chapter 10. (We will not cover Section 9.5.) We will finish Section 10.1, which covers the basic ideas of generic programming, parameterized classes, iterators, for-each loops, and wrapper classes. (Note that you are not responsible for knowing anything about generic programming in Smalltalk or C++.) We should also have time to do much of Section 10.2, which covers generic classes to represents lists and sets.

Sixth Week: February 25 and 27; March 1

There is a test on Wednesday, February 27. A study guide was handed out in class last Friday.

Monday will be mostly review for the test. After the test, we will start Section 9.4, which covert binary trees, binary sort trees, and trees that represent arithmetic expressions.

Fifth Week: February 18, 20, and 22

This week, we look at stacks and queues and the general idea of abstract data types. The reading is Section 9.3. If time permits, we will talk about JavaFX for part of the class on Friday.

Reminder: There is a test coming up on Wednesday of next week.

Fourth Week: February 11, 13, and 15

This week, we begin our study of Linked Data Structures. We will spend much of the week on linked lists, Section 9.2.

We should have time near the end of the week to talk about "lambda expressions," Section 4.5, and how they are used to define event handlers in JavaFX programs.

Third Week: February 4, 6, and 8

After finishing up analysis of algorithms, the main topic for the week is recursion, Section 9.1. We will look at some basic examples of recursion, including a recursive version of binary search and Quicksort, a recursive sorting algorithm. On Monday, in preparation for the lab on Tuesday, we looked at "turtle graphics" and how to draw fractals with turtle graphics and recursion.

Second Week: January 28 and 30; February 1

On Monday, we will continue to talk about material from Chapter 5, including inheritance, polymorphism, this and super, and interfaces. For the rest of the week, we will be working on Chapter 8. The reading is Section 8.2, Section 8.3, and Section 8.5. We will not be going into great depth on this material, but you will see the ideas used from time to time for the rest of the course.

First Week: January 23 and 25

Welcome to the course!

The first meeting for the class will actually be a lab on Tuesday, January 22. It will be a regular programming lab, with an assignment that will be due the following week. The assignment will give you a chance to review some of the material from Introductory Programming that you should already know. The lab will also introduce the Eclipse development environment, in case you are not familiar with it.

On Wednesday, we will talk about inheritance and class hierarchies. This will be new material for some of you, but even if it is not new to you it won't hurt to review it. The reading for this material is Section 5.5. You should also read Section 5.6, Section 5.7, and Section 5.8, if you are not already familiar with the material in those sections. We will be talking about that material on Friday.

The required reading for the first week also includes the course handout and the style guide that will be handed out on the first class meeting.