My name is Andrew Scoby. I attend Sabetha High School as a senior. I am taking an independent study under Mr. Jamie Raymond, the chemistry and physics teacher at our school. The first semester, I focused mainly on computer programming concepts. Specifically, I worked through about the first thirteen chapters of the How to Design Programs draft book written Felleisen, Findler, Flatt, and Krishamurthi at Rice University. After the first semester, Mr. Raymond asked me to write a short summary of my experience working through the book.
First, I would like to give my background approaching this project. I have taken as much math as possible during high school. In addition, I have focused on science courses, especially chemistry and physics. However, I have not had a lot of programming. In high school, I have taken a semester of Quick Basic programming and some web design classes. I have done some web design on my own, and I enjoy working with computers. Over the previous summer, I worked with a teacher to redesign a website for Wenger Mfg., a local manufacturing company (www.wenger.com). There I picked up some low-level internet programming and knowledge. During the semester that I worked through the class, I worked with Wenger's to do some maintenance on some Visual Basic programs and develop some small programs. They use these programs to interface with databases and interface them into a user-friendly form. Still, with this background, I really did not have a sound sense of programming.
Next, I want to describe my approach to the book. As I started the book, I did not know what to expect. Mr. Raymond told me that it was about developing programs and not actually about the Scheme language. At first, it took me a little while to get used to the grammar of the language, but that came with time. Gradually, I began to see a pattern with the design of the programs that the book went through. The thought process of what do I want to happen, what do I have to make it happen, and what can I do with what I have to get to what I want to work. I found that mapping it out in the program recipe helped me organized my thoughts into processes. Soon, I began to transfer this way of thinking over from working in class with Scheme to working with Visual Basic. I use the same process to plan the steps that I want to take. Mr. Raymond let me work through the book at my own pace, and would provide help for any problems that stumped me for quite some time. He was a wonderful resource while working through the course.
Finally, I want to state why I believe that the Scheme program was worthwhile. I believe that the approach used in the book has helped me understand how to approach a program. The design recipes help lay out a plan of action that lead to new ideas of ways to solve the problem. I found that scheme was an excellent learning tool because it eliminated the unnecessary time to teach the user interface such as input and output. This allowed me to concentrate on learning the programming concept that I could apply to other languages, even Visual Basic. Another advantage that I found is that it helped me in general problem solving. I have found that you can approach most problems like a program and develop a plan of action to solve it.
To be fair, I would like to point out some things that I feel could be improved in future releases of the program. Some of my most difficult problems arose from the extended activities. These helped me apply what I had learned in previous exercises. However, for some of my most difficult problems involving the extended activities, a sample solution would have been nice to compare my solution to, or if the problem had me stumped, to get an idea of where to go next. This might be handy for individual study in a later edition of the book. I found the examples helpful to illustrate practical applications of where a program could be used in real life. I think that developing these further could help some people see the value of the course. An another idea might be to include a hypothetical example of where a particular concept might be used in other programming languages.
I found the course to be of great value. I believe this is a programming tool that could last for a long time. It does not rely on a constantly changing language that one must relearn every time it changes, but instead it uses a basic and stable language to teach the concept. I would encourage the team of developers to continue their work on a great project.