EBoard 34: Project Prep

Approximate overview

  • Admin
  • Quick notes on the project
  • Team and project formation, phase 1
  • Team and project formation, phase 2
  • More notes from yesterday
  • Fun with patterns
  • Project work (I hope)

Administrative stuff

Introductory notes

  • MPs 3-5 returned. Makeups will be posted soon.
    • Our graders seem to be making good progress on other things.
    • If you have questions, contact me.
  • The autograder for MP7 will be minimalist.
  • The autograder for MP8 will be even more minimalist.
  • Don’t forget, if Sam doesn’t respond in 24 hours, feel free to contact him again.

Friday PSA

  • I care about you. I want to see you be safe and healthy.
  • So please take care of yourself. If you consume substances that may affect you, like sugar, please do so in moderation.
  • Respect the people you are with! Consent is essential.
  • Do what is right for you.

Upcoming activities

Token Events

  • Mentor Session Friday at 4:30, there’s a sign somewhere. It’s probably in 3821.
  • Collegium Sunday the 21st at 2pm.
  • Mentor Session Sunday at 4pm.
  • Finding Jobs & Internships, Part 2, Tuesday Nov. 23 at 7pm
  • Finding Jobs & Internships, Part 3, Tuesday Nov. 30 at 7pm
  • Debate far in the future: Young Adult Dystopias.

Other good things

  • Play this weekend!
  • Applications are open for CSC-151 tutors and graders. Due Sunday at 10pm.

Upcoming work

Q&A

Do I get to choose my team for this assignment?

Nope, unless your team is “Just me.”

Do you have the same expectation for groups of 1 and groups of 4?

Nope. More work / larger projects from groups of 4.

Do you have any idea what the rubric will look like?

Nope. Can you tell that there’s a pattern here?

How do mini-project redos work?

Sam will post a place on gradescope, “MP3 Redo”. Fix the things that are wrong, post there. Let’s hope you earn an E. If not, there will be a second chance for a redo.

My grade look wrong.

DM me. When I fail to respond, DM me again.

Will Sam adjust expectations about the number of E’s you reach?

Perhaps. We will see.

Project introduction

  • It’s nice to apply your learning to something new that’s (kind of) your own.
    • Limited to “relevant to the class
    • Working with a group/team.
  • We end the semester with an open-ended project.
  • Time-boxed. Four hours per person (plus presentation).
  • Encourage a gradual (MVP) development cycle. Start small and build upon it, so that after the first short amount of time, you always have something working.
  • It’s important to show it off (Monday of week 14).
  • We need to decide on projects and form teams.

Team and project formation, phase 1

Today’s question: What skills do you need from group members to help ensure a successful project?

  • Presenter - Someone who can stand in front of the room confidently and talk about project and code.
  • Presentation Designer - Someone who can put the presentation together so that everyone, even those less confident, can do well presenting.
  • Creative - Someone who can help come up with new ways to push the project so that you’re not reinventing old projects.
  • Organized - Can keep the materials together so that we don’t get a morass of assorted stuff that looks like Sam’s office.
  • Leader - Keeps the group on task, helps assign roles. (But not a control freak.)
  • Energizer Bunny - Brings energy to the group through enthusiasm
  • Checker - Pays attention to details
  • Part Wizard - Particularly good at some part (e.g., regex, Web pages).
  • Explainers - Documentation, instructions, etc.
  • Linguist - Understanding of language
  • Tester - Someone who is good at saying “Will this work?” and “Where will this break?”
  • Researcher - Someone good at finding additional info.

Five roles

  • Leader: Blue
  • Tester: Purple
  • Visionary (Creative): Green
  • Documenter: Yellow
  • Presenter: Red

Broad characteristics

  • No control freaks
  • No minions
  • Communication skills
  • Programming
  • Collaborative
  • Reliable; we want to be able to trust our teammates
  • Committed
  • Good attitude
  • Be a decent human being; show up and be there and respond to email.
  • Timely
  • Self aware
  • Respectful

Now, form a group with all five colors.

Team and project formation, phase 2

Brainstorm ideas for the project.

Post to the appropriate Teams channel.

Remember: Projects should be relevant to the themes of the class: Text analysis and generation (including fancy HTML).

Failed algorithm

  • Grab three white cards and a red card.
  • Write your name at the top of each.
  • On the red card, write any restrictions (e.g., “I won’t work with Sam” or “I”d really like to work with Eamon”)
  • On the white cards, write your three favorite projects (number them 1, 2, and 3 and you skills).

On the white card

  • Name
  • Skills
  • Preferences

E.g.,

Name: SamR
Mad Skills: Leader, Disorganizer, Anger
Preferences: I'd like to work on the page that randomly
  replaces words with foreign language words.  I won't
  work with Eamon.  I'd like to work with Prof. J.

Fun with patterns

;;; (add-to-body xml addme) -> sxml?
;;;   xml : sxml?
;;;   addme : sxml?
;;; Adds addme to the start of the body.
(define add-to-body
 (lambda (xml addme)
   (match xml
     [(cons 'body (cons (cons '@ attributes) rest))
      (cons 'body (cons (cons '@ attributes) (cons addme rest)))]
     [(cons 'body rest)
      (cons 'body (cons addme rest))]
     [(cons head tail)
      (cons head (map (section add-to-body <> addme) tail))]
     [anything-else
      anything-else])))

More notes from yesterday

Recall this pattern

(define basic-recursive
  (lambda (params)
    (if (base-case-test params)
        (default-value params)
        (combine params (basic-recursive (simplify params))))))

For each of the following, what are base-case-test, default-value, combine, and simplify?

  • Express them as procedures
  • Approximate Scheme is okay.

(length lst)

  • base-case-test: null?
  • base-case-value: (lambda (anything) 0) (We want to just say “0”, but we’re phrasing it as a procedure.)
  • combine: + (well, (lambda (this that) (+ 1 that)))
  • simplify: cdr

(last lst)

  • base-case-test: Is the cdr null? (lambda (lst) (null? (cdr lst))) (o null? cdr)
  • base-case-value: car
  • combine: Just return the recursive result .
    (lambda (this that) that)
  • simplify: cdr

(factorial n)

  • base-case-test:
  • base-case-value:
  • combine:
  • simplify:

(select-odds lst)

  • base-case-test:
  • base-case-value:
  • combine:
  • simplify:

(product lst)