EBoard 21 (Section 1): Pairs and Pair Structures

Approximate overview

  • Administrative stuff [~5 min]
  • Racket stuff [~10 min]
  • Questions [~5 min]
  • Lab [~60 min]

Administrivia

Introductory notes

  • Happy Monday!
  • I hope that you are adjusting to daylight savings time. (I’m not sure that I am yet.)
  • SoLA 2 has been graded and returned.
  • I have 9am-4pm meetings on Tuesday/Thursday this week. I’ll try to be more available in the evening.
  • Apologies for the error on part two of the starter code for MP5.

Class mask policy

  • We have students in this class with immunocompromised family members who they will see during break. Hence, Masks are required.
  • We will revisit this policy after spring break, but assume they are also required after spring break.

Reminders

  • Please say your name when you ask or answer a question (even if I’ve just called you by name).
  • Evening tutors are available 7–10 p.m. Sunday through Thursday as well as 3–5 p.m. on Sunday.
  • Mentor sessions are Monday 8–9 p.m. Wednesday, 8–9 p.m., Sunday 4–5 p.m.

Notes from the survey

I have not completely digested the week-seven survey, but I’ve learned some things.

  • Pair programming appears to be going much better. Only three were still at ‘eh stage.
  • You folks are generally enjoying meeting new people.
  • More than half of you want quiz 8 this Friday. Quiz 8 will be on randomness.
    • Like all quizzes, it is effectively optional; it just may cut down the number of problems you have to do on SoLA 3.
    • Since some of you have to travel on Friday, I’m releasing the quiz on Thursday morning.
  • Mentor-led days went fine, in part because Sam cut back on the labs. (Or maybe everything is easier after recursion.) (Or maybe because the mentors are better without Sam.)

A few negative partner comments

  • Some of y’all are very annoying to work with, seriously
  • Sometimes my partners will run through things and not explain them, so please explain when you can and I will do my best to do the same. Also it really helps to read the directions and problems out loud
  • Sometimes I wish my partner would let me talk about my ideas instead of going ahead with their own
  • My only issue was when someone told me that I need to type faster, and added pressure on top of the low-quality keyboards definitely helped.
  • It’s a bit of an abstract and/or un-actionable idea, but the timing of when the course staff comes to help during labs sometimes feels like my partner and I were about to break through on our own. It’s a tiny complaint in the long run, however.
  • I would like them to know that my experiences have been positive so far but I have worked with some male partners that have tried to “mansplain” the readings and lab to me before.
  • Some people are very annoying to work with, and I’d rather work by myself than with those people even if I won’t get as far into the lab

A few positive partner comments

  • I enjoy working with so many smart people
  • That they should not hesitate to ask me questions
  • I have had great experiences! Really appreciate the patience of my partners when I have trouble understanding something and I have not had any problems.
  • I have not had a bad experience with anyone, but please yell at me if I’m being annoying.
  • That I appreciate how everyone is listening and there is a clear effort to work collaboratively.
  • I am enjoying working with you all. It is also nice to know that I am not the only one struggling with certain concepts.

Recommendations / General Issues

  • Make mini-projects easier.
    • I’ve been trying.
    • I’m hoping that giving you starter code will help.
    • (Sorry for screwing up a some parts of the starter code.)
  • Some folks are really struggling. We should talk (perhaps after break).
  • Frustration that you have to pass all of the tests.
    • You don’t. Some tests are only required for E. Some are only required for M.
  • Questions on redos/regrades.
    • First redo on MPs is free (unless you didn’t turn it in).
    • Second redo on MPs costs a token.
    • You should only have to fix the things in the checklist the grader provides you. (Fixing more is good.)
  • Your average time per SoLA problem ranged from 5 minutes to 61 minutes (60 x hours-spent / number-of-problems).
    • It is difficult to give you work that is the appropriate amount of challenge for all students.

Upcoming work

  • Reading for Wednesday: Vectors, due Tuesday at 10:00 p.m.
  • Today’s lab due Tuesday at 10:30 p.m.
    • As usual, “SAM SAID I CAN STOP HERE”
  • Quiz 8 distributed Thursday at 8am, due Sunday at 4pm: Randomness.
  • MP 5 due Thursday at 10:30 p.m.
  • MP 6 NOT due Thursday after break. (Revisions to schedule and grading system coming soon.)
  • Mini-competition NOW.

Upcoming Token-Generating Activities

Note: For mentor sessions, I’d like reflections and not just “this is what we did.

  • Mentor session tonight at 8pm.
  • Mentor session Wednesday at 8pm

Other Upcoming Activities

  • Follow baseball/softball/golf on their spring trip

Sample Quiz 8

Write programs that produce unpredictable output.

Grinnell has suggested that we make up “random ids” for the students in our classes that we can use in online platforms.

Write a procedure, (random-id), that creates a string consisting of a random six-letter identifier of the form consonant-vowel-consonant-vowel-consonant-vowel, with all letters uppercase.

> (random-id)
"PALEQO"
> (random-id)
"ZEDUMI"

Isn’t that fun?

Racket/Lab Stuff

Section and one-parameter procedures

(section string-length <>) is the same as string-length.

Note that section is intended to fill in one or more parameters of a procedure. You generally won’t use section with one-parameter procedures. One exception is for random procedures.

(define random-name
  (let ([names '("A" "B" "C")])
    (section random-list-element names)))

Questions

Reading questions

Can we go over the second half of the self check?

Certainly. I should have the board all set for that.

To get e, we need (cadddr thing) or (car (cdr (cdr (cdr thing)))) or ((o car cdr cdr cdr) thing)

To get to d, we need (cadaddr thing). Unfortunately, cadaddr doesn’t exist, so … (cadr (caddr (thing))).

Other issues

Am I spending enough time on the reading? I only spent twenty minutes.

If you feel confident in the material, then you likely spent enough.

There’s a huge variation in how much time students need to spend on the readings. On the latest reading, one person took nearly two hours, a bunch spent an hour, and a bunch spent about thirty minutes. A few spent about fifteen.

I would generally suggest stopping at an hour or so.

Lab

Preparation

  • Have the normal start-of-lab discussion.
  • Save as pairs.rkt

During Lab

General

  • A list of n elements will have n cons cells.
  • Every non-empty list is a pair. (So not every list is a pair.)
  • Every pair whose cdr is a list is a list. (So not every pair is a list.)
  • Anything you create with cons is a pair.
  • Because the “list printing algorithm” is optimistic (in that it assumes every cons cell is part of a list, unless there is good evidence to the contrary), we only see the dot (representing “not a list”) right before the last element.

Exercise 4

  • You cannot take the cdr of a non-pair.
  • There is a pair? predicate with the expected behavior.

Exercise 5

  • You needed a helper for 5b; you’ll probably want a helper for 5c.

Wrapup

  • “Sam said I could stop here.”