This course ended
May 12, 2019 |

Department of Mathematics and Computer Science Hobart and William Smith Colleges Spring 2019. Instructor: David J. Eck (eck@hws.edu) Course Handout: http://math.hws.edu/eck/courses/cpsc225_s19.html Monday, Wednesday, Friday, 9:05–10:00 AM Gulick 2000. Lab: Tuesday, 11:55–1:20 Rosenberg 009.

- Introduction to Programming Using Java, Version 8.0 (the textbook for the course).
- PDF version of the textbook, good for reading on-screen.
- Java 8 Documentation and API. (local access only -- from off-campus use Oracle's copy: Documentation and API)
- JavaFX API Documentation.
- A Style Guide for Java Programming.
- Download Site for JDK 8, where you can download a Java programming system for Windows, if you want to be able to compile Java programs on your own computer. You want to download the "Java SE Development Kit," and it is very likely that you want the version for Windows x64. (For Mac OS, you should be offered the choice to install Java the first time you try to use it, but it also available at the above web site. For Linux, it should be installable using your regular software installer, but it is also available on the download site.)
- Download Site for Eclipse, which we will use for programming. Several different download packages are available. Grab the "Eclipse IDE for Java Developers" if you want to use it on your own computer. Note that this will be a newer version of Eclipse than we are using in the lab, but the differences are minor.

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.**

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.

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.

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.

**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.