Reports of the First Adopters of HtDCH Curriculum
Dan Anderson, Viewpoint High School, Viewpoint, CA
May 5, 2004
I took the course HtDCH course this summer 2003. This was the third Java class that I took. The first Java class was through a university extension and was helpful though at the end of the class, I was quite confused and disoriented. In the second course at another university I was completely lost after about the third day. The HtDCH material was exactly what I needed to bring all of the disparate concepts together from the other course. In addition, I learned advanced concepts (anonymous inner classes) by the fifth day and actually understood them. I used the HtDCH curriculum in my AP Computer Science Class this year with great success. I expect most of my students to earn a 4 or 5 on the exam even though I covered the Big-O notation rather inadequately. I heartily endorse the curriculum for AP Computer Science teachers.
Dennis McCowan, Weston High School, Weston, MA
September 14, 2004
After 3 classes of 79 minutes, my kiddos are writing containment classes- things like:
2. In a new window write a data definition for a worker - include her hourly rate, normal hours worked in a week, and name.
a. Write a method that reports the base pay for this worker for a normal week.
b. Write a method that gives this worker's pay for a given total number of hours assuming hours over normal hours per week earn "time-and-a-half."
c. Write a method which calculates this worker's income tax withholding in dollars for a given number of hours worked using the following schedule:
- $350/week or less: withhold 7%
- more than $1000/week withhold 23%
- otherwise withhold 17%
[A week later, Dennis's students were writing union classes, linked lists, and recursive functions.]
Michael Olan, e-mail to SIGCSE listserv
November 14, 2004
I am one of the enthusiastic adopters of design recipes (in Java). They're simple. They're straight forward. They work. I encourage anyone teaching software design at any level to check them out. But be forwarned, you may need to abandon a lot of Java baggage at first. It can be traumatic to ignore public, private, static, etc. and just concentrate on learning to do good object oriented design with minimal Java related overhead. But even if you can't ignore the Java realities, give the design recipes a try. I've used them in my data structures course this semester, where the students have already had a year of Java knowledge. It was really fun to first present linked lists in the typical text book way, and then tell them that we were going to look at a different implementation - a Lisp/Scheme like (functional) definition that is much simpler and takes a fraction of the time to explain and implement.
Don Blaheta, Knox College, Galesburg, Illinois
December 8, 2004
Note: Excerpts from a detailed three-page debriefing:
I've just turned in grades for my first-term intro course, the first I taught under the influence of HtDCH. It's not the straight-up HtDCH plan, because I didn't start in Scheme; that meant some things went slower, and I had to cover things that graduates of HtDP could be expected to already know. However, I think it went well enough to pronounce it an overall success; I have a lot of notes about things that worked well, things I screwed up, and so on, that I thought might be helpful to the readers of this list. ...
The inventory system (which in the HtDP design recipes is called a "template") was a huge, huge win. Early on it seemed like overkill, and I was starting to doubt myself on whether it was worth it. ...
Then, a week or two later, when we hit recursion, the payoff came. I was able to have them "take inventory" when they ran into the brick wall; and they all knew how to do it! ... The carefully-written method descriptions ("*determines whether* the *given String* is contained in *this* StringList") helped there. (This is exactly what HtDCH taught, of course. I'm just warning you, if you've never done it before, to teach them and hold your ground. :) ...
Even if you don't believe deeply in functional programming, delaying mutation as long as possible is a good idea. The folks coming from Scheme don't need convincing there, I'm sure, but even if you start right out in Java, there is a huge advantage to using mutation-free code: you don't need to talk about reference semantics! ...
For ProfessorJ, I have mostly praise. The comfortable straitjacket it provides for the beginner programmer has caused a sea change in how the students progress. They get past their syntactic problems a lot faster when there are less ways to get stuff silently wrong, and I think requiring the use of "this" was singlehandedly responsible for keeping at least a quarter of my class afloat in the first weeks. The ease of writing examples and test cases meant that my students actually did so (mostly), and this too was a big help. The only thing that really holds me back from wholeheartedly recommending it for use isn't even really its fault: it is still, fundamentally, alpha software. ...