CSc 11: Introduction to Computing
Assignment #8 (Chapters 13, 14, 15 and 16)

Exercises: Write answers to the following exercises in the textbook:
                        13.2, 13.7,
                        14.3, 14.22, 14.26, 14.27,
                        15.17, one of 15.26, 27 or 28 (choose one of these three),
                        16.3, 16.19, 16.22, and 16.26.

Extra credit: 14.28.

Due: Friday, 12/8, anytime before midnight.

Hand in: When you're ready to submit your assignment, combine the answers to all the exercises (including source code for the programming exercises. Then, using a web browser, go to The Student Drop Box for Introduction to Computing. (It's under Student Tools.) Click on the Browse button, then find your files in their folder (if you put it on a floppy disk, it's in A:). When you've selected your file, you should see a directory path to this file next to the Browse button. If it looks right to you, click on the Send File to Instructor button. Then you should see this file listed under Current Files in your DropBox. The Teaching Assistant, Jeffrey Eynon, will get this file and grade it.

Hints:
For exercise 13.2, you can hand in "cards" as text showing the three sections of each new or revised card, e.g.,,

Transaction
Responsibilities		Collaborators
Get amount			
Set amount
Ask for amount		Deposit, Withdrawals (clients)
You need only hand in cards for any new classes or classes you modify.
For this problem, I recommend that you try thinking analogically: an Account already maintains a balance, which gets initialized by constructors of subclasses (like Checking) and modified by Transaction subclasses (like Withdrawal). So, do you have to make new cards or do you fix up the given cards to include the check deposit, loan payment, and balance? These are design choices. Since the goal of the assignment is to practice object-orientation, I would like you to try an approach that distinguishes different (new) classes. But where the existing classes already do some of the work (such as maintaining a balance), then you may try to reuse this functionality.

Exercise 14.22 refers to the code near the top of page 462.

For exercises 14.26 and 14.27, which call for running the programs atm_oop.cc and atm_oopt.cc, respectively, you may encounter an error message saying that it does not recognize the class atm_oop. LOOKOUT automatically copies atm_oop.cc from your a non-writable drive, such as a CD-ROM or the LAN drive, to C:\tmp, but it doesn't automatically copy the header file atm_oop.h which atm_oop.cc #includes. So you need to copy atm_oop.h from your CD-ROM or the Y: drive into C:\tmp, e.g., in MSDOS: copy D:\gcc\lookout\atm_oop.h C:\tmp or copy Y:\lib\gcc\lookout\atm_oop.h C:\tmp or use Windows Explorer to accomplish the same thing. Then compile and run at_oop.cc or atm_oopt.cc.
These exercises do not require you to modify the source code (you won't be writing any code for this assignment); just explain what the code is doing. Learning how to read someone else's code is an important part of programming and software engineering.

For exercise 16.3, Loebner contestants do engage is some fakery, for example, delaying responses, introducing typos, talking nonsense just to keep the conversation going. The Loebner contest does allow some restrictions on the domain under discussion. It's reasonable for a machine to refuse to answer an irrelevant question, just as a human might. These rules are not explicit in the Turing test, though one could argue they are reasonable in an interim approximation of the Turing test....

For exercise 16.19, here's how you might "draw" a semantic network in text form, using dashes, slashes, etc.:

                       Reptile--hasPart->scales
                      /isa   \isa
shell<-hasPart--Turtle        Dinosaur--status->extinct
                             /isa    \isa
    plants<-eats--Brontosaurus     Tyranosaurus-Rex--eats->meat

Prof. Blank