600.106 Pre-programming (algorithmic thinking) Intersession 2007

Project 2: ATM

Description: Design an automatic teller machine (ATM).

Goal: Practice the breaking down of a ("complex") problem into a number of well-defined subproblems.

Objectives:

  1. Elaborate a general specification from a given somewhat unclear problem statement.
  2. Find the different components (subproblems) that need to be solved.
  3. Elaborate a detailed specification for each subproblem found.
  4. Describe, in a concise stepwise-fashion, the process performed by each component (i.e., a high level algorithm to solve each problem.)
  5. Recognize and enlist low-level problems (details on the mechanics of the components) that somehow have to be addressed to implement the solutions.
  6. Determine the usefulness of the General Strategy for Algorithmic Problem Solving with respect to this project.
Instructions:

By carefully following the three first stages of the General Strategy for Algorithmic Problem Solving, and the experience you may have had with the machine; transform the somewhat vague description of the problem into a document giving a qualitative and comprehensive explanation of the problem, as well as the concepts involved, tools required, resources, data and results.

Use the questionnaires to guide your thoughts and the flowchart to guide your search. Keep a log of your work: for every stage, jot down comments and answers to the questions that best lead your work. Also record the time/date you start each stage.

Then, think of the different tasks the machine does, how they behave or operate, how they could be recreated by yourself, and repeat the previous experience (with project 1) to document each task (subproblem).

Do not forget to describe the parts in hierarchical way.

Then, answer the following questions:

  1. What non-computational concepts ("theory") were needed to perform this activity?
  2. What assumptions did you have to make to work out the problem?
  3. How many components (modules) did you find in your model?
  4. Describe the "mechanics" used by your ATM machine to dispense an specific amount of money.
  5. Indicate why your plan for the ATM is just a model.
  6. Describe the "architecture" of your model by drawing a hierarchical scheme of its components (use a rectangle for each part.)
  7. Can you find any pattern or regularity among different components?
  8. Describe, as a sequence of if-then statements, the way different components of your model are activated.
  9. Which do you think are basic actions (primitives) the ATM can perform and are used to built everything else.
  10. Think of any the money dispenser component, and explain why it has a black-box behavior.
  11. Make a list of special cases (situations that are not expected to occur during normal operation) any ATM has to face, and eventually has to be addressed in your design.

Alternatives to this project:

Instead of the ATM, you can select to do the project with a vending machine, an information kiosk at a tourist information center, a home enterteinment center with satellite tv/radio.

Return to the CS106 Homepage