---
title: Eboard 07  More regular expressions, Ppir programming, evaluating expressions, and other issues
number: 7
section: eboards
held: 2019-02-08
link: true
---
CSC 151 2019S, Class 07:  More regular expressions, Pair programming, evaluating expressions, and other issues
====================================================================================

_Overview_

* Preliminaries
    * Notes and news
    * Upcoming work
    * Extra credit
    * Friday PSA
    * Questions
* Quiz
* RegExp lab, continued
* Discussion of pair programming reading
* Class code of conduct

Preliminaries
-------------

### News / Etc.

* Please sit where you sat on Wednesday!  Whoever was logged in should
  log in now.
* Don't forget to log out when you are done!
* Even after I talked about pulling the keyboard away from your
  partner, some of you did that.
* Goals for today: Quiz done by 10:20.  Lab work until 10:45.  Discussion
  until 11:20.

### Upcoming work

* Reading due before class Monday
    * [Processing homogeneous lists](../readings/homogeneous-lists)
    * Note: I'm updating the reading and the `loudhum` library.  Please
      don't read this until tomorrow.
* [Assignment 4](../assignments/assignment04) due Tuesday night.
    * Partners assigned via email.
* [Flash cards](../flashcards/flashcards04) due Wednesday at 8:00 p.m.
    * Covers Wednesday/Friday/Monday classes
* [Lab writeup](../labs/writeup07) due before class Wednesday.
    * Exercise: TBD
    * Subject: CSC 151.01 Writeup for Class 7 (YOUR NAMES) 
    * To: csc151-01-grader@grinnell.edu

### Extra Credit

#### Extra credit (Academic/Artistic)

* _Once Upon a Time Wolf_ (tickets required), Bucksbaum.
  TONIGHT, 7pm.
* _Once Upon a Time Wolf_ (tickets required), Bucksbaum.
  TOMORROW, 7pm
* Any Data Week activity next week.
* HackGC weekend of 15-17 February 2019.  (I'm still looking for links.)
* Gardner concert (Karen Meat w/ Katie Sin and Prairie Dogs) TONIGHT, 8:30 p.m.

#### Extra credit (Peer)

* Home track meet, Saturday, 9 Feb 2019, all-day and beyond.  (30 min suffices)
* Conference Swim and Dive meet, 15-17 February 2019.  Dive times to
  be announced later.

#### Extra credit (Wellness)

* Boxing, 2:00 pm, Saturday, Dance Studio
* HIIT training, 4:30 pm, Tuesday, Dance Studio, Bear.  (Cap of two EC units.)
* HIIT training, 10:00 am, Saturday, Dance Studio, Bear
* Hatha Yoga, 7:00 pm, Tuesday, Dance Studo, Bear.  (Cap of two EC units.)
* Brazilian Jiu-Itsu, Wednesday and Friday, 6:30, Dance Studio (cap of two
  EC units.)
* Any Sex Week activity next week.

#### Extra credit (Misc)

* Host a prospie! (Details forthcoming.)
* Saturday, 1-2pm JRC 225, Prospie Host Training Session

### Other things (no judgement involved)

* Union action today at 4.

### Friday PSA

* You're awesome.  I care.  Care for yourself.

### Questions

Can my group analyze State of the Union addresses instead of assorted
public domain books?

> Sure.  However, you'll need to do something creative about the 
  "Compare characters based on their verb usage" part of the assignment.

Do we need to include the punctuation in `string->sentences`?

> Nope.

How do I replace "aa" with something

> `(regexp-replace* #px"aa" mystring "something")`

> If you don't use star or brackets or anything, it matches the thing
  exactly.

How do I replace "aa" with something but not more than two a's?

> I think `(regexp-replace* #px"([^a]+)aa([^a]+)" mytext "\\1SOMETHING\\2")`

> But that's not perfect

        > (regexp-replace* #px"([^a]+)aa([^a]+)" "baab aaa aaaa" "\\1REPLACE\\2")
        > "bREPLACEb aaa aaaa"
        > (regexp-replace* #px"([^a]+)aa([^a]+)" "baab aaa aaaa baaaaac qaabaaq" "\\1REPLACE\\2")
        "bREPLACEb aaa aaaa baaaaac qREPLACEbaaq"

        ; Replace "aa" with replacement, but not "aaa"
        (define replace-aa
          (lambda (str replacement)
            (regexp-replace* #px"\u1"
                             (regexp-replace* #px"\u0001aa\u0001"
                                              (regexp-replace* #px"(aa+)" str "\u1\\1\u1")
                                              replacement)
                             "")))

Quiz
----

If you finish early, relish the time to sit quietly.  (Alternately, go
get some water or use the rest room.)

Lab, continued
--------------

We'll have about twenty minutes to work on the lab.

Write up exercise 6.

Pair programming
----------------

* There are two people, driver (at keyboard), and naviagator (not at keyboard)
* The navigator watches what the driver is doing and warns them when
  they're driving off the road (e.g., "you forgot a paren")
* The navigator can suggest other approaches.
* Help troubleshoot
* The navigator can provide reference, particularly if you have multiple
  computers.
* If you don't like pair programming, it may be that you're doing it
  wrong.  (Or maybe you have a really bad partner.  Or maybe *you*
  are the really bad partner.)
* Benefits
    * Pair pressure: You don't want to let your partner down.
    * The rubber plant effect.  Talking through a problem helps.
      (It works with a rubber plant.  It works better with someone
      who responds and/or asks questions.)
* In industry, evidence that pair programmers are more productive
  than two people working individually.

Class code of conduct
---------------------

There are potential problems.  Bad pairing can make partners feel
unvalued or useless or want to leave this awesome department or ...

_What are some practices that we can all agree upon that would make
pairing successful?_

I will do my best to ...

* Instead of saying "*You* did this wrong", say "Maybe *we* got this wrong"
    * "We" not "I"
    * Don't blame, suggest.
* Don't talk when other people are talking.
* Switch regularly.  Talk at the beginning of class.  We'll use the timer,
  but you can ignore it.  You can switch at each problem.  Or at each
  intution.
* Own your confusion
* Be honest about what you do and don't understand.  (And what you have
  and have not done.)
* Try to be empathetic.  Give your partner the benefit of the doubt.
* Listen to other ideas, be willing to try them out.
* Driver: Talk while writing/coding.  Helps your partner learn and understand.
  Also helps you learn and understand.
* Check in with yourself; if you're having a problem with someone else,
  maybe you are the problem.
* Be open; honest, but not harsh.
* Don't do the lab before coming to class.  (Don't do hw before meeting
  with your partner, etc.)
* Don't rush your partner, even when you aren't yet at the writeup.
* Take a look at the assignment before meeting, but don't code.
* Sam doesn't know everything, so you certainly don't.
* Don't make people who are underrepresented prove that they are people.
  (Be careful particularly with gender and race issues.)
* Be active in whatever role you're in.
* Talk through goals of a homework, before you start working on it.
* Embrace each other's strengths.  
* Don't Samsplain.
* Pay attention to non-verbal queues.
