Eric Krupnik
December 10, 2008


This program is used as a checkbook balancer. You can do several things, such as check the account balance, make a deposit, make a withdrawal, and other features you will find at an ATM. It uses Scheme to control the GUI and C++ to do the rest of the features. You send information through Scheme GUI to C++, and C++ sends it back to Scheme. See the block diagram for a more detailed view.


Concepts Demonstrated

Some of the major concepts used in this project which I feel we covered in class are:

  1. Simulating classes
  2. Using Scheme to do GUI/using other libraries
  3. Passing functions as arguments

External Technology

Foreign Language Library is used for the GUI. Because Scheme naturally does not support GUI programming, I was forced to use the GUI library Scheme does have. I played around with it for several weeks and now feel fairly comfortable with it. Once getting the hang of it, this is a fairly simple library to use. I also found JScheme and SISC - two libraries I would have used if I did Java instead of C++ to be the primary running language of my application's back-end component.


I feel that a checkbook balancer is something that many people would benefit from, as people are constantly complaining that they hate balancing checkbooks, and some of them simply can not do the math well enough or fast enough to do it by hand. I feel that this idea was manageable, and that I would be able to implement it as well. I wanted to see how Scheme interacts with other programming languages, and this was a good way for me to realize that.

Technology Used Block Diagram

The C++ is the language which is used to do all of the back-end calculations as well as all of the record keeping of previous transaction/transaction history. The Scheme acts as a link between the C++ and the user. The entire GUI(Graphical User Interface) is written solely in Scheme, using the Scheme GUI library from the Foreign Language Library. When the program is run from Dr. Scheme (in Module) the GUI will pop up. The user will then make selections in the GUI, and those selections will be sent back from Scheme into the C++. C++ will do its work and send the final results back into Scheme which goes to the user through the GUI for the output.

Additional Remarks

Getting scheme to work with other languages is not as simple and straightforward as one would have hoped. The documentation is confusing and very often the people who write them are not thinking about the average user. I was debating between using C++ or Java to run the program. I was debating between using the Scheme GUI library and Foreign Language Library and JScheme and SISC. I found the Foreign Language Library the best one for me because it was much less involved to get running.