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:
- Elaborate a general specification from a given somewhat unclear
problem statement.
- Find the different components (subproblems) that need to be
solved.
- Elaborate a detailed specification for each subproblem found.
- Describe, in a concise stepwise-fashion, the process performed by
each component (i.e., a high level algorithm to solve each problem.)
- Recognize and enlist low-level problems (details on the mechanics of
the components) that somehow have to be addressed to implement the
solutions.
- 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:
- What non-computational concepts ("theory") were needed to perform
this activity?
- What assumptions did you have to make to work out the problem?
- How many components (modules) did you find in your model?
- Describe the "mechanics" used by your ATM machine to dispense an
specific amount of money.
- Indicate why your plan for the ATM is just a model.
- Describe the "architecture" of your model by drawing a hierarchical
scheme of its components (use a rectangle for each part.)
- Can you find any pattern or regularity among different components?
- Describe, as a sequence of if-then statements, the way different
components of your model are activated.
- Which do you think are basic actions (primitives) the
ATM can perform and are used to built everything else.
- Think of any the money dispenser component, and explain why it has a
black-box behavior.
- 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