CSC151.01 2015S, Class 54: Recap
================================

_Overview_

* Preliminaries.
    * Admin.
    * Upcoming Work.
    * Extra Credit.
    * Questions.
* Quiz 13.
* The subject matter(s) of the course.
* Topics within each subject matter.
* Looking beyond the class.

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

### Admin

* Sit anywhere, but be prepared to work with the person next to you.
* If you can't be in class on Friday (e.g., two teams are traveling), 
  please let me know and please try to fill out the evaluation form today.
    * Please hand write answers to the following two questions at the end
      of the form: 
        * Q7: The one thing that most helped my learning was ...
        * Q8: One thing that would have helped my learning more is ...
    * Please fill out the RISC survey at
      <https://survey.grinnell.edu/se.ashx?s=251137455F0C97CF>
* Review session Thursday at 8pm.  No daytime review sessions.
* I heard enough arguments that the misdeeds of a few should not cause 
  harm to the class as a whole that I will be including grades for exam 
  2 in my computation of your grade in the course.

### Upcoming Work

* Exam 4 and its epilogue (for those of you with extensions)
* Optional final.

### Extra Credit Opportunities

#### Academic 

* Thursday Technology Studies Extra: An Insider's Look at the Music 
  Industry: What I Learned from my Internship on the Digital Team at 
  an Artist Management Firm.  4:30, Science 3821.

#### Peer Support (Morning Section)

* KY's radio show, "We Think We're Funny", 9-10pm Mondays 
* Julia's radio show, "The Hot Box".  Wednesday night/Thursday 
  morning 1:00-2:00 a.m.  Tonight's Theme: Almost There!!!!!!!!!!!!!

#### Peer Support (Afternoon Section)

#### Miscellaneous

* SGA State of the College talk tonight, 8:30 p.m. in JRC 209.
* Open campus forum on ARH/Carnegie, Monday, 3:00-4:30 p.m. in Harris
  Concert Hall.

### Other Good Things (no extra credit)

* Puppies and Pancakes on Sunday.
* If you have a mother or mother figure, please wish that person a
  happy mother's day on Sunday.

### Questions

The subject matter(s) of the course
-----------------------------------

* Problem Solving.
* Computer Science: Algorithms and Data Structures.
* Scheme.
* Program and Software Design.
* General Thinking Skills.
* And Beyond.

Topics within each subject matter
---------------------------------

### Problem Solving

* Express the problem formally.
* Generalize!
* We solve problems better with others.
* There are multiple ways to solve a problem; stay open minded
* Don't give up immediately

### Computer Science: Algorithms and Data Structures

* Recursion.
    * Structural, over lists
    * Structural, over trees 
    * Numeric recursion, over numbers
    * Generalized recursion
    * Tail recursion
* The problem of sorting.
* Famous sorting routines: Selection, Insertion, Merge sort
* Big picture: CS is more than solving mathematical problems
* Big picture: Even when it doesn't seem mathematical, it often ends
  up being mathematical
* We have multiple mechanisms for storing data, and each has its own
  advantages and disadvantages.  lists, vectors, trees
* Logic
* Algorithms
    * Subroutines
    * Conditionals
    * Repetition
    * Variables and Parameters
    * Sequencing
    * Basic building blocks
* Simple actions plus control (repetition, conditionals) yields
  a lot of power.
* Think about the efficiency of your algorithms.
* Two key algorithm design techniques
    * Divide and conquer
    * Map-Reduce

### Scheme

* Vocabulary: A lot of different procedures
* Learning to read error messages
* Boolean values and operators
* Scheme can make images
* Procedures/Subroutines
    * Can be local or global, with different benefits
* Scheme and DrRacket, like CS professors and computers, can be evil
* Syntax of Scheme.  Parentheses matter!
* Anonymous procedures
    * With lambdas
    * With l-s, r-s, and compose
* Higher-order procedures

### Program and Software Design

* Don't repeat identical expressions; it's inefficient
* Document!  Helps communicate ideas to other programmers.
  Lets us think about preconditions (and, more generally, about
  the problem).
* Formatting of code affects how readable it is.
  Formatting standards and autoformat let you understand whether things 
  are organized properly
* Empowering
* Test!
* Generalize!
* Name things well.
* Think about your tradeoffs.  

### Image Making

* Sam's weird Scheme extensions: Gimp tools, turtles, etc.
* There are lots of ways to make and think about images
    * Drawings
    * Gimp tools
    * Turtles
    * Image compute / image-variant
    * image-get-pixel and image-set-pixel

### General Thinking Skills

* Handling unexpected questions
* Don't be afraid to look at references!
* The importance of academic honesty.  You can succeed even if you
  don't cheat.
* You need to be able to step away from your work.
* Dealing with stress.
* Work with others.

### And Beyond

* Care about the people around you.
* Ask for help!
* Sam can't type (you can be successful at life even if you can't
  type or have legible handwriting or spell)
* There is more to life than CS (or any academic subject)
* At some point you need to say "that's enough"
* Snark is the best way to deal with the people around
* You have amazing peers.  Support them!
* Think about your actions and their consequences for you and for those
  around you.
* Have fun with what you do.  Laugh.
* Eat, bubula, eat

Looking beyond the class
------------------------

