In Class: Week 8 Tuesday:
Top-Down Design Practice


Create a week08 subdirectory in your cs21/class directory by running update21:

$ update21
$ cd
$ cd cs21/class/week08

Topics


Top Down Design

Top Down Design is a problem solving technique where:
  1. Start with General Description of Problem
  2. Break it into several high-level steps
  3. Iteratively break the steps into smaller steps until you have steps that are easy to solve

In-class work

  1. Last week, we started working on the program to play Black Jack. Open up blackjack.py to review our design.
  2. Together, we will begin implementation on the bottom-level functions. I will implement getYesOrNo. When I'm finished, let's try some unit testing on getYesOrNo() (see below).
  3. Once we are satisfied with getYesOrNo(), work individually on implementing other functions in blackjack.py. Start with printInstructions() and getName(). Perform unit testing on both of these functions to see if they work as you expect.
  4. Next, work on implementing flipCard(). This function will require the use of the random library, so be sure to import random:
    	from random import *
    	
    Perform unit-testing on flipCard() multiple times to see if you get numbers that you expect.
  5. If you finish flipCard(), move up a level in implementation and work on playUser(). Since flipCard is implemented and tested, you can concentrate on the larger problem of executing one user turn.

Unit Testing

Unit testing is the process of validating functions as individual pieces, in isolation from other large portions of the program. This allows a developer to focus solely on the (small) subproblem at hand and think carefully about potential errors. To perform unit testing:

To use the python interpretor, add the following lines of code to the bottom of your program where main() is:
if __name__ = "__main__":
  main()

This allows python to import your program without running it. To do so, run python in interactive mode:

$ python
In interactive mode, use the command import to load your file.
>>>import blackjack
To test a function, say flipCard(), you can invoke your method:
>>>blackjack.flipCard()
in function flipCard()
5
The function flipCard was invoked. Any print statements are output to the screen. Finally, python will automatically output the return value, which was 5 in this case.

If you make changes to your program, you can reload your file in the python interpretor by calling the reload command:

>>>reload(blackjack)
Lastly, you can see your function prototypes and block comments using the help command:
>>>help(blackjack)