Skip to main content

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 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 due Tuesday at 10:30 p.m.
    • Are folks using the evening tutors?
  • Reading for Wednesday
  • Flash Cards due Wednesday at 9pm.
    • Optional.
    • Grade is percent of eight flashcard assignments you complete (capped at 100%).
  • Project Proposal 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

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?)