IB Computer Science Projects          Getting Started         Dave Mulkey, Germany 2007

Simply Getting Started (or getting started simply)

  1. Start with a simple idea - a possible simple idea.
    For example - a Tic-Tac-Toe game.
    Is it too simple?  That depends on how you solve the problem.  
      
  2. Improve the user's life.  
    Why would a person want to play Tic-Tac-Toe?  To win a trophy?  No, probably not.  Probably to pass the time, play a few games out of boredom.  If that's true, then it needs to be :
    - quick
    - simple
    - play at the right level of difficulty

  3. Why is this better than the "old-fashioned" way (e.g., playing on paper against a person)?
    Don't need a person to play against - I can do it any time, at the spur of the moment.
    Can have a "perfect" opponent.   
    More improvements coming...

    But what happens if the user gets tired of it - e.g .......
     
  4. How can it be made EVEN BETTER?  Changeable?  Flexible?
    In Tic-Tac-Toe, maybe you want it to play a really "good" strategy.  Maybe you want different levels of difficulty - beginner, intermediate, advanced.  Maybe you can play on a bigger board.  How about three dimensional?
     
  5. Put the user in control.
    Good software lets the user change the settings.  For example, play with smiley faces and frowny faces instead of X and O.  Can you make "skins"?  If you have instructions, can the user choose a different language?
     
  6. But don't make the user do everything - something needs to be AUTOMATED.
    How about letting the computer play against itself, so the user can just watch?
    Can it remember games that were played?  Keep score over several days?
    Can it give advice - teach me how to play better?
    *  What automation makes all this worthwhile?
     
  7. More, more, more.
    How about organizing a tournament, with several players, making sure everyone plays against everyone (round-robin) or double-elimination?  How about playing online against an opponent in another country?  On a 3D board?  Connect it to an educational quiz?
     
  8. Computer systems have Input, Output, Processing, and Storage.
    Make sure you spend time and effort in all these areas.
     
  9. No - don't make it bigger and bigger - KEEP IT SIMPLE
    Once you have brainstormed all the clever ideas, throw some away and only keep "enough" - whatever that is. 
     

Here is a possible prototype.

Starting Over (?)

You have NINE MONTHS to complete this project.  So you could:
   -   wait 8 months and then start?  Bad idea!
   -  start one project, throw it away, then start another?  Maybe once, but only in the early stages.

Let's throw away the Tic-Tac-Toe game, and start over with a different idea.

  1. Simple Idea - adding numbers (wow - that MUST be too simple!)
     
  2. Improve the user's life
    This will depend on the user.  Who wants to add numbers anyway?
    Someone checking their bank account.
    The school's accountant, checking money for books, salaries, etc.
    A student calculating a grade-point-average.
     
  3. Better than paper or a calculator?
    Computers make fewer mistakes (?), making corrections is easy (or should be),
    can save a copy of every calculation, can reformat it and print it out or copy into a word-processor
     
  4. Put the user in control
    Make sure they can do "extra" things like copy/paste, saving, corrections, pretty printing, etc
    They should be able to specify the format they want for the display - e.g. how many decimal
    places, do they want scientific notation, so they want numbers printed in a row or column,
    use a comma instead of a decimal point, etc
     
  5. Automation
    Can the computer be "smart" about this work?  Like can it "guess" what numbers I want to type, so I don't need to do it?  Here are a few ideas:
    - Rather than typing 5,5,5,6,6,7,7,7,7 , type 5x3 + 6x2 + 7x4
    - Accountants like to leave out the decimal point, typing  650, 1400 instead of 6.50 , 14.00
    - It could report the highest and lowest values, as a common error is typing a double digit (thus producing an unusally large number) or leaving out a digit (making a very small number)
     
  6. Make it better
    - save all numbers and results into data file(s)
    - don't permit round-off (truncation) errors, like  5.9 + 0.1 = 5.99999999999999
    - write reports with rows and columns for "sets" of numbers
    - print nice reports on paper with headers and footers and nice fonts
     
  7. More, more, more
    If you get addition to work, how about adding multiplication and division and subtraction
    How about permitting the user to type and print fractions
    How about other strange types of numbers like times and dates?
     
  8. Computer systems have Input, Output, Processing, and Storage.
    Make sure you spend time and effort in all these areas.

  9. No - don't make it bigger and bigger - KEEP IT SIMPLE
    Once you have brainstormed all the clever ideas, throw some away and only keep "enough".
     

Here is a possible prototype. 

Enough is Enough

So what is enough?  Consider the following:

Setting Goals

You are required to write Criteria for Success (goals) as part of the Analysis Stage in the IB Assessment Criteria - A2.  These must be:

You must write clear, specific goals.  These should be performance features.  They are NOT programming goals.  For example:

Your goals must specify the features that the user needs in order to solve their problem.

Who is the User?  Why?

After choosing a topic/problem, the next big question is: "Who is the intended end-user?"  You really NEED an intended user.  You might be an expert programmer.  You might be experienced in the problem domain (for example, using a student planner).  But that doesn't mean that you actually know exactly what another person wants or needs.

You need to choose a user, and then talk to them to clearly specify the goals of the program.  They will have both reasonable and unreasonable wishes.  You need to AGREE with them on reasonable goals for the project.

Once you have an intended end-user, you can start disuscussing user-stories and specifying goals.