---
title: Eboard 31  Project introduction
number: 31
section: eboards
held: 2018-04-16
link: true
---
CSC 151.01, Class 31:  Project introduction
===========================================

_Overview_

* Preliminaries
    * Notes and news
    * Upcoming work
    * Extra credit
    * Questions
* Debrief on analysis lab
* About the project
* Group composition and construction
* Playing and brainstorming

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

### News / Etc.

* I brought strange food to try to try to remind us of spring during the
  return of winter.
* Quiz 10 returned.
* I am about 2/3 done with grading exam 3.  Barring unforeseen circumstances,
  I expect to have it returned by Wednesday.
* I was glad to see a few of you at the Medieval Improv concert.
* I am glad to hear the many positive experiences people had at Drag.
* Sorry that the link to the [project description](../assignments/project)
  was not obvious.
* Yay!  It's prereg week.
    * If you're having fun in CSC 151, you should consider 161.  It has 
      robots!
    * Some of you were asking about which Math to take for CS
        * If you are good at math, and can spare the courses in yuour
          schedule, I recommend 131-133-215-218.  Linear algebra is
          increasingly important.
        * If you are a bit more math phobic, 131-208-209 is often a
          good approach.

### Upcoming work

* No lab writeup.
* [Assignment 7](../assignments/assignment07) due Tuesday at 10:30 p.m.
    * Are folks using the evening tutors?
* Reading for Wednesday
    * [Association lists](../assignments/association-lists)
* [Flash Cards](../flashcards/flashcards11) due Wednesday at 9pm.
    * Optional.
    * Grade is percent of eight flashcard assignments you complete 
      (capped at 100%).
* [Project Proposal](../assignments/project) due **Monday** at 10:30 p.m.
    * Due early to give me time to react.

### Extra credit (Academic/Artistic)

* Any one activity in the student research symposium this week.
* Convo Thursday.  Mary Katherine Nagle.
* CS Table Tuesday: TBD
* CS Extras: Programming Languages Research Group, 4:15 p.m. Thursday.

### Extra credit (Peer)

* Play presentation Friday at 4pm.  In the Wall Theatre (154).
* The 25th: Mellon Mays Project introductions, 4:15 to 6:30 p.m.
* ISO Cultural Evening Saturday night in Harris Cinema (time forthcoming)

### Extra credit (Recurring peer)

* Listen to KDIC Wednesdays at 6pm - Witty banter with other 
  personalities and/or co-host.  Also Indian, Arabic, and Farsi music.  
  (Up to two units of extra credit.)
* Peer editing with SS.  Talk to SS about the details.  Make your
  English Lit more literate.

### Extra credit (Misc)

* Host one or more prospective students.  (I think there's one main visit
  weekend left.)

### Other good things

### Questions

_What documentation on assignment 7?_

* 6Ps.  What else?

_If we do part 1 of the homework, most of our tasks are to change code.
What else do we have to do?_

* Change documentation.

_What's the difference between apply and reduce._

* `reduce` requires a binary procedure and a list of values.  It then
  "reduces" the list to a single value by repeatedly applying the procedure
  to neighboring values.
    * The order in which it applys the procedure is unspecified.
* `apply` will take *any* kind of procedure and a list, and treat the
  list as the arguments for the procedure.
    * I could write `(apply substring (list "rebelsky" 2 5))`
    * You would not likely write that exact command.
    * However, you might have somehow generated the list '("rebelsky" 2 5)`
      We can just use `apply`.
* For the quiz, if we have `(apply - '(1 2 3 4))`.  That's really just a
  long way to write `(- 1 2 3 4)`.
     * The `-` operator is left-associative, so it ends up being
       `(- (- (- 1 2) 3) 4)`

Debrief on analysis lab
-----------------------

```
(define list-reverse
  (lambda (lst)
    (if (null? lst)
        null
        (list-append (list-reverse (cdr lst)) (list (car lst))))))
```

We found that this did about 28 calls to `list-append` for a list of length 7.
Why?  (It's clearly a problem, but what leads to the bad behavior?)

* `(list-append lst1 lst2)` requires about `(length lst1)` calls to
  `list-append`.

Can we generalize?  Yes.  For a list of size `n`, this takes about
`(n*(n+1))/2`.  (No, that's not Scheme.)

About the project
-----------------

* Do something interesting of your choice within constraints
    * New and different data set
    * Requires some processing/munging/whatever you want to call
    * With a novel algorithm that does something to help you understand
      the data
* Examples
    * Literature classifier
    * Text generation (better than what we just did, perhaps based on
      word frequencies rather than letter frequencies)
    * A more complicated neural net (e.g., two levels, rather than one)
    * A set of tools for dealing with a data set. (E.g., ...)
* Goals
    * Apply what you've learned this semester
    * To something new and interesting
    * Including at least one substantive algorithm
* Constraints
    * Time-boxed: 8-10 hours per person over two weeks
        * You will get to use about one hour of class time on Friday,
          April 20.
        * You will get about the same amount of time on Friday, April 27.
        * Plus 3-to-4 hours outside of class each week.  (Half your
          designated out-of-class time.)
    * Ideal group size: 3 
        * 2, or 4, or 1 is also okay
* For a week from today: Find the data set and write a proposal
    * Describe set
    * Describe your intended goals with the data set
        * What you think you can do
        * What would satisfice
        * Reach goal
    * Describe the algorithm(s) you will be writing
* Additional work
    * Do the project (probably started while writing the proposal).  Due
      Tuesday, May 1st.
    * Present! (Friday, May 4 and Monday, May 7)
* There's a [*draft* rubric](../assignments/project-rubric.txt)

Group composition and construction
----------------------------------

_With your partner, identify three to five skill sets that you think would
be particularly important for your project to succeed._

* "Big picture thinker" = Someone who can conceptualize the overall project
  and how we should approach it.
* "Internet researcher" - Someone who can find data sets or interesting
  algorithms.
    * Note: You might outsource some of this to DASIL in ARH.
* "Dedication" - Will put in the work to get it done.
* "Writer" - Someone who can English.
* "Communicator" - Someone who can present, recap what we've done so far
  with the group.
* "Manager" - Time management, planning, leadership.  The person who makes
  sure that we don't go off on wild tangents.
* "Coder" - Someone who can write the code that the BPT comes up with and
  that the Writer will write about.
* "Creative" - Someone who can come up with a good project idea.  (Might
  also help design an awesome presentation.)
* "Devil's Advocate" - Someone who asks the simple (but hard) questions.

Sam's selection of skills

* Yellow - Coder
* Pink - Writers
* Blue - Managers
* Green - Creative or Big Picture
* Purple - Devil's advocate

Good approaches

* Understand the limitations of Scheme

Playing and brainstorming
-------------------------

Start thinking about possible projects.  We'll look at project topics on
Wednesday and try to pair them with people.  (I'll figure out a strategy
for presenting topics by Wednesday.)

Text stuff

* Poetry generation, using knowledge of syllables in words (and rhymes
  and ...)
* Using phonemes, rather than letters, for text generation.
  (Sam would call this the ghoti project.)
* TED talks.  (Generate, understand topic, ....)

Visualization

* Visualizations of health care disparity.
* Visualization of cancer rates.
* Visualization of prison locations and populations.

Neural net

* Cat (or LOLcat) identification.
* CSC 151 grade predictor. [Data would be hard to gather.]
* Language determination.

Things that always scare Sam

* Will this student graduate from Grinnell?  (What if we want to apply
  this to who we accept because the administration wants to increase our
  retention rate?)
