CS2212: Introduction to Software Engineering Project Description Fall 2013

Version 1.0, January 3, 2013
Version 1.1 September, 2013


 

1. Project Overview

Your group must make a Facebook app to teach children their multiplication tables. Your project should allow a Facebook user to enter his/her children's first names and ages, get the child to try the tables and keep track of the child's successes in terms of time and number of correct answers.

 

2. Explanation of Terms


3. Non-Functional Requirements

(Non-functional requirements are requirements which do not have to do with the specific input-output behaviour of the system)

  1. The system must run as a Java applet on an Amazon virtual ec2 machine.
  2. The system must run inside a browser
  3. The system must be developed in Java and PHP
  4. The system must have a graphical user interface
  5. The system must connect to Facebook
  6. Quality:
    1. User Friendliness
      • The system must be easy to use. For example, a user must be able to navigate easily between menus and must have the option of quitting or going back to a previous menu at all times
      • Messages as well as errors must be reported correctly and consistently
    2. Reusability
      • You must attempt to make your code reusable
      • You must make sure that your code is commented (at least Java Doc descriptions of each class and each method must be given) so that it is can be modified by others.

 

4. Functional Requirements

(Functional requirements are requirements on the input-output behaviour of the system)

a) System Startup and Exit

  1. The system must be called uwottable?.php or uwottable?.html (where ? is your group's number)
  2. The user must be able to quit at any time from the system.
  3. If the user enters new information and saves it, the data must be stored on the machine before (or when) the user exits the program. The data must then be retrieved and restored when the system is started once again. I.E. THERE MUST BE DATA PERSISTENCE


b) Overview

  1. The main features of your system should include:
    1. Parent Mode -- This part of the system allows the parent (Facebook user) to add his/her children and set everything up
    2. Drill Mode -- This part of your system allows each child of the Facebook user to practice his/her multiplication table for a given number between 1 and 12
    3. Final Game Mode -- This part of the system must have a fun game (designed by your group) that reinforces the multiplication tables learned.
    4. Player Stats -- This part of the system must show other Facebook friends how your children are doing with your application.
  2. Each of the above options is explained in more detail below

c) Parent Mode:

  1. Parent mode must have a password on it. The password should be cs2212 initially. Then he/she should be able to change the password to one that is case sensitive and 3-6 characters long.
    1. Initially the Facebook user should also be forced to answer one of 3 pre-set questions such as "What is your mother's maiden name". The Facebook user can pick which of the 3 questions to answer. The answers should NOT be case sensitive. The answer can not be longer than 30 characters and must be at least 1 character. Your group can pick what 3 questions to show to the parent.
    2. If the user types in the wrong password more than 3 times, then your system should display the question that was answered by the user. If the user gets the answer correct, allow him/her to reset the password to something new, otherwise set the password back to cs2212
  2. Once in Parent mode, the Facebook user should be able to add his/her children. Each child should have a different first name (1 to 20 characters) and an age (or birthday). Initially each child starts at the beginner level
  3. In Parent mode, a Facebook user should be able to list his/her children in order by first name or by age.
  4. A Facebook user must be able to delete his/her children
  5. A Facebook user must be able to change the age on his/her child (but not the first name, if the first name is to change, then the user must delete the child and recreate it)
  6. A Facebook user must be able to see which level his/her children have achieved
  7. A Facebook user must be able to set the time for each level per child (thus one child may be given 1 minute to complete a level but another child may be given 2 minutes to complete a level). Make the default time 30 seconds for each child.
  8. A Facebook user must be able to set the number of mistakes the children can make per level (maybe they can not make any mistake for the ones table, but for the 9 tables, they can make up to 3 mistakes and still go on to the next level). The mistake is per level, but the time is per child
  9. The parent must be able to see how each of his/her children are doing:
    1. Which levels they have completed
    2. How long it took them to complete the level when they finally did complete it
    3. How many times they attempted each level
    4. How many mistakes they made on the final completion of a level (thus, only show the mistakes on the time they pass the level)
  10. If a parent wants to, he/she must be able to reset the child back to an earlier level, but the parent can NOT reset the child's  level to a later level.
  11. In Parent Mode, for testing purposes, have an option that will only show 4 of the times tables for each level rather than all 12. (This way we can do the acceptance testing faster)

d) Drill Mode:

  1. In Drill Mode, the child must play the levels in order. Thus he/she must complete the ones multiplication table before moving to the twos multiplication table.
  2. A child is displayed the multiplication tables in random order and the numbers should be displayed in random order, thus the child might see (for the ones multiplication table): 8*1 = , then 1*3 = , then 1*6= , then 12*1 = ,
  3. Allow the child to enter their answer (either type it in or pick from several choices) for each question, then tell the child if he/she was right or wrong. The child must do all 12 multiplications in a  table per level with less than the number of mistakes in the allotted time in order to complete the level. If the child does make a mistake, display the correct answer, then later on force the child to do the incorrect questions again TWICE for ever wrong answer, still within the allotted time, so:
    1. if the child make more than the allowed number of mistakes, he/she does NOT pass that level
    2. if the child takes longer than the allotted time to do the 12 questions with no mistakes he/she does NOT pass the level
    3. if the child is allowed to make 2 mistakes at the three multiplication table level and the child gets only 3*7 wrong, and then the child gets all the other 11 three multiplication table questions correct; THEN the child must do the 3 * 7 two more times correctly (if he/she  gets it wrong once more they then have to do it another two times e.g they answer 3x7 incorrectly, they are then given it twice more they answer it correctly once, then incorrectly the second time they are then given it twice more) within the allotted time otherwise he/she does NOT pass the level.
  4. Once a child passes a level, your program should do some fun little graphic/animation/congratulations message.
  5. After each level, give the child the option of posting his/her successful completion of a level on his/her parents Facebook wall.
  6. After each level, have a fun game that reinforces the multiplication table learned at that level. The game should be short and simple but can be anything of your choosing. The child does NOT have to play the game, the game is optional.

e) Final Game Mode:

  1. Once a child has completed all 12 multiplication table levels successfully, your program should have some final game that is fun and creative and reinforces the multiplication tables (but this time it is random, it could be any multiplication table)
  2. The game should have some sort of scoring method that tells how well the child did. The child should be able to play this game again and do better.
  3. The child should be able to post his/her score on the parents wall

f) Player Statistics:

  1. The system must allow the Facebook user:
    1. to see which of his/her Facebook friends have played this application at least once and display the Facebook friend's profile picture and the children's names who have played. For each child display which level the child is at right now and how old the child is as of today.
    2. list all of the Facebook friends who have also played some portion of this application.
    3. for a given level (for example, the three times tables):
      1. show the top 3 Facebook friends who have a child who has finished this level in the fastest time
      2. for a given age, show the average time in seconds a child takes on it in his final time of completing the level
  2. Show the top 3 players (their names and their parents profile picture) for the fun final game you have created.

 

g) Miscellaneous features --> Skins: Look and Feel:

  1. A user must be able to choose between three skins on the Drill Mode. A skin is a look and feel and/or a theme for the interface. For example all the buttons/text/menus would have the same colour scheme in a particular skin. 3% of your final mark for acceptance testing will be based on the aesthetic appeal/creativity/originality of your skins. HINT: Java swing has a look and feel class to help. If you want to do some cool stuff, do a search on Java, "Look and Feel" for sample code. BUT LEAVE THIS TO THE END, make sure all the other stuff works first :-) 
     

NOTE: IT IS VERY IMPORTANT TO HAVE PERSISTENT DATA! Without persistent data, the acceptance testing will not run smoothly. Any group without persistent data will not receive more than 60% on acceptance testing.