The power of pairs

A number of you have decided you would rather work solo. I allowed this, largely for one reason: culture.

CMPSC 220 is made of a combination of students who have taken anywhere from one to almost all of the department's course offerings. My impression is that you have not been encouraged (in the past) to work closely with your classmates on your programming assignments. You most definitely have not been encouraged to engage in pair programming, and it is not something many of you are comfortable with. I heard you say that the scheduling is difficult, or that you feel you "slow down" your partner, or... but that's all part of the process. 

The coming laboratories require you to think hard about the structure of data. You need to write an interpreter that handles everything from

{+ 3 5}


to

{with {{x 3} {y 5}}
    {with {{z {+ y x}}
           {w {with {{r {* x x}}}
                {+ {* r r} x}}}}
      {+ w x y z}}}


The second expression looks complex: it kinda is. There are simpler examples that represent programs you should be working to write an interpreter for. However, if you get those right, then the above code will "just work." 

All of that is to say: use your colleagues. I encouraged pair programming from the start (and encouraged you to practice it properly, with constant communication and no one being along for a "free ride") because you were headed here. And here is where you are now in a position to be working with, and discussing, and drawing pictures of trees of code with your programming partner. Saying "we are here" means "we are now digging into the really cool stuff." And that's where you want someone to help you dig. 

Don't be afraid to ask questions, but also, don't be afraid to work with someone else, as long as you're doing it in a way that benefits both of you. 

I'll be away most of today (potentially reachable by phone), and will be more accessible for questions on Sunday. Ask questions, and I'll do my best to answer.