The course described on this page ended December 11, 2007

CPSC 225: Intermediate Programming

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Fall, 2007.

   Instructor:  David J. Eck  (

   Monday, Wednesday, Friday, 1:55 to 2:50, Room Eaton 110.
   Lab:  Tuesday, 11:55 to 1:20, Gulick 208.


Lab 1, August 28
Introduction to Eclipse
Lab 2, September 4
Exceptions (and CVS)
Lab 3, September 11
Fun with Search and Sort
Lab 4, September 18
Exercises in Recursion
Lab 5, September 25
Self-Modifying Linked List
Lab 6, October 2
Turing Machine
Lab 7, October 9
QuickerSort? (With Stacks)
Lab 8, October 23
Text Files
Lab 9, October 30
Networking I
Lab 10, November 6
Networking II
Lab 11, November 13
Using the TreeMap Class
Lab 12, November 20
A Generic "Bag" Class
Lab 13, November 27
Lab 14, December 4
Work on Final Projecct
Assignment 1 Assignment 2 Assignment 3

Fifteenth Week and End of Term: December 3, 5, 7, and 11

The final reading is Section 12.4. We will cover parts of that section in class on Monday, concentrating on the Model-View-Controller design pattern. On Wednesday, we will do some review for the final exam, concentrating on recursion, linked data structures, and analysis of algorithms. On Friday, students will present their final projects. The final exam takes place on Tuesday, December 11, at 1:30. More information about the exam and about final projects can be found in this information sheet. That sheet also contains a list of my office hours for the remainder of the term.

Fourteenth Week: November 26, 28, and 30

We will be working on Chapter 12 this week. You should read Sections 12.1 and 12.2. We might also have to review some material from Chapter  6. In this week's lab, you will work with BufferedImage. And please continue to work on your final project!

Note that the final exam for this course is scheduled for Tuesday, December 11, at 1:30 PM.

Thirteenth Week: November 19

There is no class on Wednesday or Thursday this week, because of Thanksgiving Break.

On Monday, I will finish up everything that I have to say about Generic Programming (Chapter 10). I will talk about writing generic classes. The lab this week is also about writing generic classes.

Twelfth Week: November 12, 14, and 16

On Monday, students will present their ideas for final projects to the class and get feedback. Then, for the rest of the week, we will be continuing with Chapter 10. The lab this week is designed to be short so that it can be completed in the lab period. It will not be due until after Thanksgiving (and will be collected and graded along with Lab 12). Students should be spending their programming time outside of class on their final projects.

Eleventh Week: November 5, 7, and 9

After wrapping up our coverage of networking, we will return to Chapter 10, which will occupy us until Thanksgiving break. We will cover all of Chapter 10 except possibly for the last two subsections, 10.5.3 and 10.5.4.

Your final project proposal is due Wednesday. Next Monday, you will have a chance to "defend" your proposal in class.

In the lab this week, you will write a small Web server.

Tenth Week: October 29 and 31; November 2

There is a test on Friday of this week. An information sheet is available. On Monday, we will look at the basic ideas of threads and how they can be used in network programming. The reading on threads is Section 8.5, but only though Subsection 8.5.1 and 8.5.2. This material will be included on the test. The lab this week is about networking with the URL and URLConnection classes and about creating a thread.

Assignment 3, which asks you to describe your final programming project, will be due next week on Wednesday, November 7.

Ninth Week: October 22, 24, and 26

We will continue working on Chapter 11 this week. We should finish up files on Monday and get to networking on Wednesday and Friday. The lab for this week is a pair programming project related to files.

Advising week is coming up soon. To provide you with more information about some of the courses that will be offered next term, several faculty members will do short presentations about the courses that they will teach. The presentation session is scheduled for 7:00 to 8:00 PM on Thursday, October 25, in Napier 201 (with refreshments at 6:45).

Eighth Week: October 17 and 19

There is no class on Monday of this week because of Fall break. The lab from last week is due by 3:00 PM on Thursday; I will check your CVS repository at that time.

We are going to depart from the original tentative syllabus, starting this week. Instead of doing Chapter 10, we will be doing Chapter 11, which covers files and networking. We will return to Chapter 10 later in the course. You should begin reading Chapter 11, Sections 1, 2, and 3.

Seventh Week: October 8, 10, and 12

This week, we will move on from stacks and queues to trees. We will look at binary trees, binary sort trees, and expression trees. The reading is Section 9.4 and starting Section 9.5. The lab this week allows you to apply what you have learned about stacks to the QuickSort algorithm.

Sixth Week: October 1, 3, and 5

We will spend most of the week looking at stacks and queues and at their implementations and their applications. We will also look at the idea of abstract data types, and see what it means to treat lists, stacks, and queues as ADTs. The reading for the week is Section 9.3.

The lab this week introduces doubly linked lists and applies them to build working models of Turing machines.

Fifth Week: September 24, 26, and 28

There is a test this week, on Friday. It will cover everything that we have done in class up to and including the material that we cover on Monday. This includes Chapter 8, Sections 2, 3, 4, and 6; and Chapter 9, Sections 1 and the first half of Section 2. The test might also include material from the labs. See also the following

Information Sheet for the First Test

We started looking at linked data structures on Friday of last week. This week, we will look at one specific kind of linked data structure, the linked list, in some detail. The reading for the week is Section 9.2. The lab this week will let you do some work with a linked list class that implements a well-known linked list processing algorithm.

Fourth Week: September 17, 19, and 21

We have begun Chapter 9, which covers recursion and linked data structures. We should complete Section 9.1 (recursion) on Wednesday and start Section 9.2 (linked lists) on Friday. In the lab for this week, you will work on several applications of recursion.

In addition to the lab this week, there is a short set of exercises on the analysis of algorithms. The exercises are Assignment 2, and they are due in class next Monday, September 24.

Announcement: TA hours in the computer lab have changed slightly. The new hours are: Sunday, Tuesday, and Thursday 7:00 -- 9:00 PM; and Monday and Wednesday, 8:00 -- 10:00 PM.

Third Week: September 10, 12, and 14

This week, we will cover Chapter 8, Section 6, and we will get started on Chapter 9, Section 1. Section 8.6 covers some of the basic ideas of analysis of algorithms. We are mostly interested in this so that we can talk about the "run-time efficiency" of the algorithms that we will study in the rest of the course. In the second part of this week's lab, you'll do some empirical testing of the run time of sorting algorithms. Section 9.1 covers the important programming technique known as recursion.

Don't forget the department picnic, at 5:30 this Thursday!

Second Week: September 3, 5, and 7

The reading for the week is Chapter 8, Sections 2, 3, and 4. Section 8.1 is optional. We will be skipping Section 8.5 entirely, at least for the time being. We might start Section 8.6 by the end of the week.

The lab for this week gives you a chance to do some work with throwing exceptions and handling them in a try..catch statement.

Some announcements:

First Week: August 27, 29, and 31

For the first week of the course, you will be reviewing some of the basic features of Java and of programming in general, and you will be introduced to some new tools that can help you write better programs more easily.

In class on Monday, you will be introduced to the Eclipse IDE (Integrated Development Environment), and in lab on Tuesday, you will start programming in Eclipse. You will also learn how to use Javadoc-style comments in your programs. Javadoc is the standard documentation system that is used to produce the API documentation for many Java programs. For the rest of the week, we will be going over various aspects of program design and good style.

A short writing assignment will be handed out on the first day of class and is due on Wednesday. In lab on Tuesday, I will ask you to sign up for an individual meeting with me, where we can discuss your background in computing and your response to the assignment. You will also be given a printed copy of the textbook at that meeting.

There is no reading for the week, other than the lab worksheet, the course handout, and a programming style guide that will be handed out in class.