|
|
 |
 |
 |
|
Java as a Pre-AP Strategy in Computer Science, Part IV
|
|
|  |
Handouts
Electronic Presentations
Real Lectures
Lab Work
This is Part IV in a series of articles designed to take a computer science teacher in the Pre-AP years through the more difficult and confusing first components of teaching computer science in Java. In Part IV we discuss the role of lectures and lab work. Additional articles will discuss the integration of student projects into the course and the evaluation of student assignments and projects.
I generalize the term lecture to refer to the teacher's formal organization and presentation of the course, aside from actual student program design, implementation, and testing, which I refer to as lab work. This lecture component of the course can take many forms, including handouts, electronic presentations (e.g., Web-based, PowerPoint-style, or Java applets), and actual "listen to me" lectures.
As a side note, the new USB flash "hard drives" are very useful for allowing portability of work between school and home. You can maintain JCreator workspaces, PowerPoint presentations, and so forth on the device. I've found the capability extremely useful for grading student work as well. I use a Fuji 256 MB USB Drive, but there are lots of other vendors. These devices are very small -- mine fits on a key chain. Windows XP automatically recognizes the device as a removable hard disk. Other operating systems may require driver software. If your machine supports USB 2.0, try to get a USB 2.0-compatible flash device -- they're faster.
Handouts
After the Hello World application is done using console output, we normally have a look at it using a simple GUI implementation. The Nascent Java: GUI handout below is an example of the handout that accompanies that presentation. It is implemented here as an HTML document, though it was originally distributed as a Word document. Over the years, I have found that it helps to adopt some conventions with programming handouts, much as programming authors do with their books.
Nascent Java: GUI
- Each handout is headed with a specific topic and a subheading identifying the class. This helps with student organization and also makes it easy to refer to the handout by topic rather than as "that handout I gave you about simple GUIs."
- I use subsection headings to allow students quick access to specific subtopics.
- Writing is broken into small bites of information separated by blank lines. This is a holdover from my early journalism training -- large blocks of text are intimidating.
- Keywords are boldfaced.
- I often use hyperlinks to link to related documents, both those of my own making and others available on the Internet.
- Programming statements are set in a nonproportional font, usually Courier New.
- Program segments, set in Courier New, are placed in boxes to clearly define their extent.
- I try to keep the narrative tone light. Programming is inherently ponderous enough without my encouragement!
I typically make all handouts available electronically. This makes it easier for students who are absent or who misplace handouts.
Electronic Presentations
Most of my electronic presentations are either PowerPoint-type slide shows over various topics or Java applets whose animation ability helps students follow a particular idea. In our early discussions of classes and inheritance, I use a Spacecraft class as an illustration. (A zipped PowerPoint version of the presentation is available below.) I later add an appropriate toString() method to this class that is not included in this PowerPoint presentation. This style of presentation, particularly with well-chosen images, animation, video, and sound, can both enliven a presentation and make its content clearer. A ceiling-mounted video projector makes electronic presentations very effective and easy to integrate into other class activities.
Java IV PowerPoint Presentation (.zip/119KB)
In the category of Java applets, there are a lot of possibilities. I like the idea of using Java to learn Java. I use these more in AP Computer Science, where we deal with a number of rather complicated algorithms and data structures. There are many applets for presenting ideas like recursion and binary search trees that truly help make the topics easier to understand.
I maintain a class Web site that keeps students up to date on assignments. As mentioned earlier, I also make handouts available online. Java applets and PowerPoint presentations used in class are also made available for later study on the site. Finally, I often put together self-study units of links to my own work or other Internet sites for studying particular topics (say, Monte Carlo methods).
Real Lectures
I usually introduce new concepts, at least briefly, in a lecture and discussion format. For something like a for loop, this might take five or 10 minutes. For the concept of inheritance, an entire period or two might be needed. I do try to get in and get out rather quickly. Once students have read a bit on the topic and then heard me hold forth on it for a while, they are usually ready to jump into lab and get their feet wet. I spend about 45 minutes a week in lectures, and they are usually supported, at least in part, by some sort of electronic media. Lectures are more common earlier in the year.
Lab Work
Lab work comprises the bulk of our class time, especially in the second half of the year. Students work on individual workstations equipped generally with Microsoft Windows XP and Internet Explorer, TextPad, JCreator LE, and Sun's Java SDK. Several of my students work on Linux workstations. Under my supervision, they installed double-boot systems on these machines, and they enjoy working with this alternative operating system. Several faculty members have audited the course using Apple laptops.
All workstations are connected to the school's network, and I have direct access to the computer science directories in students' network storage areas. This simplifies keeping up with what they're doing. The workstations also have high-speed Internet access and access to a classroom laser printer.
We begin the year with short, highly focused lab work: implement a class, implement a test class, or demonstrate the use of primitive data types, wrapper classes, inheritance, simple GUIs, and so forth. In the second quarter we move on to small, fully developed applications. Here, I encourage students to help one another. There will inevitably be students who are faster or more adept than others, and they often make excellent teachers. I do have to monitor this closely; help is one thing, crutching is another. It is very important to set firm deadlines for this early class work, otherwise students can get spread out all over the place. If some students finish early, I have files of additional small projects that earn them bonus credit.
In the larger, cooperative project of quarter three, deadlines are still made, but with greater flexibility. The emphasis is on various time points: design deadline, deadlines for team development, and finally a deadline for the fully integrated application.
The special topics of the fourth quarter are assessed on a portfolio basis. One student might be working on fractals, another creating a Java3D simulation of the solar system, and a pair of students developing a networked, interactive video game. Weekly assessments and daily monitoring and direction keep everyone (well, nearly everyone!) on track.
Please note: Some topics covered in this series of articles are not included in the defined curriculum. Refer to the current official AP CS Course Description for the topics that will be tested on the AP Exams.
James Aldridge, Ph.D., is a science and computer science teacher at Fort
Worth Country Day School in Fort Worth, Texas. He has taught computer
programming for 10 years and currently teaches AP Computer Science using
Scheme, Java, and C++. James also teaches AP Chemistry and has special
computer science interests in the area of real time data acquisition and
control subsystem hardware and software design.
|
|
|
|
|
|