- We gather as a community in studio session to learn from each other.
Our community includes:
- Instructor
- TAs
- Students

- Our community is egalitarian in terms of learning: all of us will have questions and all of us should try to provide answers.
- The idea is to challenge each other and to share what we discover.
- You are free (downright encouraged) to collaborate in this
session:
- Primarily within your small group of 3-5 people
- Secondarily with any group in the class
- As much as you like with the instructor and TAs

- In studio, the instructor's mission is to observe, interact,
and work with groups.
- How you think, work, and arrive at a solution is more important than getting the right answer. Thus, the instructor and TAs will observe you throughout the exercise and offer constructive feedback.
- The help you receive may be incomplete at any given time, so that you can work through more of the solution on your own. Do not hesitate to ask for more help.

- In studio, the student's mission is to acquire new knowledge
and skills by the collaborative solving of problems.
- You are
*not*graded on whether you get wrong or right answers on this exercise. - You are graded on your level of participation in studio.

- You are
- Participation is defined as
- Asking questions, at any level, of any person in the studio
- Discussing possible solutions with people in the studio
- Helping somebody in the studio solve a problem
- Presenting or demonstrating your solution to people in the studio
- Documenting your group's experiences in studio

- Please eliminate external stimuli (cell phones, IM, Facebook) during studio. Please devote yourself to learning, mastering, and extending the material for the session.

The results of your studio session are to be reported and documented in a file that you save in your workspace. You are to print and turn in one copy of that report for your group. In the descriptions of the studio exercises, verbs likereportanddocumentare indications of activities you should summarize and discuss in your report.In your groups, take turns documenting results, looking over shoulders, and staffing the keyboard.

It is unacceptable to copy anything without understanding it. At any point, the TA or instructor can point to something you've done and ask you why it works, or change it and ask what would happen with the modification.

By the end of this session, a TA will have completed a Studio Observation form for your group. You will have to attach your team's observations so keep track and type things in as you go along for printing by the end of studio.First, read over the problems enumerated below.

Next, pick one of the first two problems to start. If you are personally interested in a problem not favored by your group, feel free to find another group, but do not work on your own.

After that, try the third or fourth problem.

Be careful how you use the web. You are required to develop solutions as a group by thinking not by finding solutions that have been thought out by others. You must be able to explain anything that you have done.

Pick one of these two, or both:

- Here is a simple but interesting recursive function.
f(x) = x-10 if x > 100 = f(f(x+11)) if x <= 100

- Using the substitution model, sketch the computation of f(99)
- Using the data flow model, sketch the computation of f(98)
- Using the model of your choice, sketch the computation of f(87)
- Discuss whether this function will terminate for all positive integers supplied as arguments.
- What do you expect this function to do for values of x > 100?
- How will it behave for values <= 100?
- Implement it and test it to develop or valdiate your hypotheses.

- Here is another interesting recursive function:
f(x,y) = y+1 if x = 0 = f(x-1,1) if x > 0 and y = 0 = f(x-1, f(x, y-1)) if x > 0 and y > 0

- Using the data flow model, sketch the computation of f(1,0)
- Using the substitution model, sketch the computation of f(1,2)
- Using the model of your choice, sketch the computation of f(2,2)
- Discuss whether this function will terminate for all positive integers supplied as arguments.
- How do you expect
this function behave with respect to
`x`and`y`? - Implement it and try it out for values of x < 4 and various values of y.
- Now try it for x = 4 and various values of y.
- What do you see?
- Why does the function behave this way?

Consider one of the following, or both:

- Consider the picture:
Develop an approach for drawing the figure recursively. Investigate the YOPS Polygon if it helps your implementation.

- Develop your own fractal image like the one above and design an algorithm to draw it.