600.106 Pre-programming (Algorithmic Thinking) Intersession 2007 Project 3: Tamagotchi Introduction: A virtual pet is a computer program that emulates the behavior of a living animal, and is usually embedded in some electronic gadget. The owner attends the pet by pressing some buttons and sees its behavior on a screen. Description: Make the analysis and design of a Tamagotchi to create a new virtual pet. Goals: Work in a team to make the plan for a new product. Elaborate a detailed specification of requirements from a very general problem statement Practice the breaking down of a problem into a number of well-defined sub problems. Practice analysis, strategy, and algorithm design of a well-defined problem. Objectives: 1. Create a precise specification of requirements from a somewhat unclear statement. 2. Find the different components of the product and elaborate a sound specification for each component. 3. Describe, in a concise stepwise-fashion, the process performed by each component (a high level algorithm to solve each problem.) 4. Practice costumer interaction to clarify the proposed problem. 5. Practice the problem solving activity in a methodological way. 6. Recreate the elaboration of a well-know product. 7. Perform a documented search to find information required to solve the problem. 8. Elaborate the documentation for the solution given to a particular problem. (That is, a formal document containing the problem specification, the analysis of resources, inputs and outputs, the design to transform inputs into outputs given only the resources, and expected behavior examples.). 9. Recognize (enlist) low-level problems (component mechanics "details") that somehow have to be addressed to implement the solution. 10. Determine the usefulness of the Basic Strategy for Algorithmic Problem Solving with respect to this project. Instructions: Assign positions/tasks regarding the skills of each member in the team (general coordination, documentation, marketing, art and design, testing, research and development, programming, etc.). Every member must perform his or her task according to the document of specifications he or she is given, returning a product/document that someone else is going to follow. Sent every comment, question, problem or suggestion to jorgev@cs.jhu.edu to create a weblog. Follow the General Strategy for Algorithmic Problem Solving (http://www.cs.jhu.edu/~jorgev/cs106/ProblemSolving.html), and the experience you may have had with the previous projects, to make a document with qualitative and comprehensive explanation of the problem, concepts involved, tools required, resources, data and results; along with a programmer's manual, a clear and simple description, written for an unknown third party, who will used to make the program. 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. Hints: 1. You do not have to elaborate a computer program as result of this project, but you can use the computer, at any stage, as a tool to make your work easier. 2. Tamagotchi specifications, and examples, are hosted in several sites of the WWW. 3. You may think that your solution will be embedded in a keychain gadget. Answer the following questions: 1) What non-computational concepts ("theory") were needed to perform this activity? 2) In what way this problem was abstract? In what way your solution is abstract or concrete? 3) What assumptions did you have to make to work out the problem? 4) How many components (modules) did you find in your model? 5) Describe the "mechanics" used by your model to keep track of the population status from one generation to the next. 6) What happens if the program does not remember what was the status of the pet status the day before to the current one? 7) Indicate why your plan for the pet is just a model. 8) Describe the "architecture" of your model by drawing a hierarchical scheme of its components (use a rectangle for each part.) 9) What are the basic actions the entities living in the keychain can perform? 10) Think of each component and explain why they can be regarded as black-boxes.