Ideas for various projects

Computer programming is one area where searching the web for half an hour can often pay off. Here are some examples of things I turned up, along with other useful files. The web is a highly volatile library, so I recommend trying Google or the Wayback machine if the original page has vanished already.

Remember to give precise attributions if you use the work of other people in your program or report.

Calculators, Countdown numbers game

To evaluate an arbitrary arithmetic expression, with proper account of the precedence of operators, one possibility is to write the expression using postfix or reverse polish notation, which is easy for computers but hard for humans (but was used by some HP calculators). See here for a simulation.

There are various ways of converting ordinary infix notation to postfix and evaluating it. One from Berkeley is very clear. A web search for infix and postfix will yield a lot of information. Do not be misled by the "postfix" email program, which has nothing to do with arithmetic.

Noughts and crosses

A web search for this or its US alias, Tic Tac Toe, will turn up plenty of ideas, for example this by Erwin D'Souza. General articles about game trees are also plentiful (if sometimes complex). See, for example "Computer Gamesmanhip" by David Levy (1983) pp.30-39

Solitaire

It is reasonable to make a simulation for a human player to solve. A computerised solver is possible but harder. The puzzle and some programming techniques are discussed here. Various ideas 1, 2 and algorithms have been discussed.

Word-based programs

You would be well advised to make your own very short dictionary or text file for initial testing. Later, you might need a short dictionary (45 000 words - the Linux dictionary, 409kB) or a really big dictionary (200 000 words, 2.2MB), or some online books from project Gutenberg. See here for the attributions.

Mathematical routines

These routines were kindly provided by Dr N. Thomas, based on routines in Numerical Recipes. You will certainly need to modify them before use. Indeed, a good project would be to encapulate them in classes.
  • fastran Simple random number generator
  • ran Sophisticated random number generator
  • gauss Gaussian random number generator
  • integration Runge-Kutta integration of differential equations
  • fftdemo Fast Fourier transform
  • Ideas about how you might use the above (pdf).

Many body mechanics using numerical integration

There is a comprehensive summary of several professional methods, of which the first would be fine for this course! There are also explanations of the necessary techniques using fortran and java. These include screenshots of some nice applications.