Questions about Unit 8

15 views
Skip to first unread message

Lori Mains

unread,
Aug 3, 2012, 10:50:57 AM8/3/12
to bootstrap...@googlegroups.com
Background:  I am run after school math programs (non-profit), mostly for kids who really enjoy math.  I am hoping to run a Bootstrap session next spring or summer with 8th graders who are struggling with math.  Right now I am going through the lessons with a neighbor's son, who I will call "Jason".  Jason is going into 8th grade and very sharp.  I hope to use him as my TA when I run the program.  My background is a degree in CS, 7 years with IBM (many moons ago) and 15 years working with kids from K-12 and math.

Here are my comments/questions:

Specific to Unit 8:
  1. Both Jason and I got confused with the order of teaching.  Specifically in Section 1, we were to act out “line-length” and “collide?”.  In Section 2, we were to write “line-length”.  By this time, Jason had collide? and line-length scrambled in his head.  I think that next time I teach it, I would do “line-length” all the way through, then act out “collide” and then code “collide?”.  To you see any issues with that?
  2. I made a note to myself for next time to go ahead and teach the optional lesson on conditions, since Jason was confused when he tried to write the condition for line-length.  Specifically he has trouble with the first part of each condition, where you write the code that will tell you if you should execute the rest of that condition.
  3. Jason had trouble writing “collide?” and when I asked him to reflect on what would have helped him to see it more easily, he replied “write the Circle of Expression” first.  In general, he and I have not been doing that.  I am considering annotating my classroom notes to add in “have students draw the Circle of Expression”, at least for these harder functions.
General:
I am confused when it comes to the usefulness of writing out EXAMPLE. Specifically:
A.  On the design recipe page, I am always confused as to if I am just supposed to hard code in the number the function should return, with the given inputs, or show some kind of algorithm there (or write specific Racket code, with numbers instead of variables).  I can see how circling the “things that change” can help kids transition from the concrete to the more abstract, but I can’t yet write a condition myself!  (Guess I need to study the answer guide harder!).
B. I was under the (mistaken?) impression that the compiler actually compared your Example to your Define statement and would tell you about errors.   Does the EXAMPLE statement get compiled or run?  If so, could you give me an example of how it would help you catch an error?  Maybe I am expecting too much out of it??
 

Emmanuel Schanzer

unread,
Aug 5, 2012, 8:06:28 AM8/5/12
to bootstrap...@googlegroups.com
Hey Lori -- I think your earlier suggestion to create a discussion board for questions is a good one! 
I've included an answer to your post below, but for all teachers looking to post additional questions, let's move these to the new Bootstrap-Discuss board.

Lori, thanks for good idea, and for posting your questions!
Emmanuel
---------------------------------------------------------------------
 
Both Jason and I got confused with the order of teaching.  Specifically in Section 1, we were to act out “line-length” and “collide?”.  In Section 2, we were to write “line-length”.  By this time, Jason had collide? and line-length scrambled in his head.  I think that next time I teach it, I would do “line-length” all the way through, then act out “collide” and then code “collide?”.  To you see any issues with that?

That's how we did it last year, and some teachers reported that students were failing to see the big picture for how "line-length" and "collide?" were supposed to work together. I'm certainly game to switch it back, though.

 

  1. I made a note to myself for next time to go ahead and teach the optional lesson on conditions, since Jason was confused when he tried to write the condition for line-length.  Specifically he has trouble with the first part of each condition, where you write the code that will tell you if you should execute the rest of that condition.
I find that having students act it out carefully is often the easiest way to get them to find the bug, or alternately to have them uncomment both EXAMPLEs and then use them to debug the code. This is their second opportunity to debug as part of the curriculum (since rocket-height), and there's some pedagogical value to that. What would you think about replacing the debugging with just a straight-up Design Recipe worksheet? 
  1. Jason had trouble writing “collide?” and when I asked him to reflect on what would have helped him to see it more easily, he replied “write the Circle of Expression” first.  In general, he and I have not been doing that.  I am considering annotating my classroom notes to add in “have students draw the Circle of Expression”, at least for these harder functions.
Your instincts are exactly right here. In general, "write the circle of evaluation" is the go-to fallback when students aren't sure how to begin. This is something we cover during our workshops, but there's no good place to put teaching method suggestions in the lesson plans.  

I am confused when it comes to the usefulness of writing out EXAMPLE. Specifically:
A.  On the design recipe page, I am always confused as to if I am just supposed to hard code in the number the function should return, with the given inputs, or show some kind of algorithm there (or write specific Racket code, with numbers instead of variables).
Think back to the debugging we asks students to do in "rocket-height": writing the answer can wind up biting you later on. The whole point of the DR is to make your thinking explicit, which is it's valuable to have students write out how they got the answer

 
 I can see how circling the “things that change” can help kids transition from the concrete to the more abstract, but I can’t yet write a condition myself!  (Guess I need to study the answer guide harder!).
Wait, do you mean all EXAMPLEs, or the just the ones where (cond...) is involved?
 

B. I was under the (mistaken?) impression that the compiler actually compared your Example to your Define statement and would tell you about errors.   Does the EXAMPLE statement get compiled or run?  If so, could you give me an example of how it would help you catch an error?  Maybe I am expecting too much out of it??

You're correct - it does check your code. Try typing this into a blank WeScheme window, and see what happens when you click run.

; double : Number -> Number

(EXAMPLE (double 2) (+ 2 2))

(EXAMPLE (double 5) (+ 5 2))

(define  (double n) (* n 2))

Clicking the link will highlight the example that didn't match the code, helping you find the bug. 

When I code, I write one EXAMPLE, and then copy-and-paste it for the second EXAMPLE and change each of the inputs. Then I copy that EXAMPLE and change "EXAMPLE" to define, and then each changeable value to a variable. If I have to use (cond..), I copy all of the examples, and then filter them out into unique conditions before replacing values with variables.  

Let me know if this is helpful?

Reply all
Reply to author
Forward
0 new messages