CSC151.01 2015S, Class 16: Transforming Images
==============================================

_Overview_

* Preliminaries.
    * Admin.
    * Upcoming Work.
    * Extra Credit.
    * Questions.
* Important learning outcomes from Friday's class.
* Important/strange concepts from today.
    * Composition
    * Lambda expressions
* Lab

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

### Admin

* New partners!
* Mentor session Monday at 7:00 p.m.
* Just in case it's not clear: If I find that you have posted your exam
  work online, including via social media, I will report you for ethical
  violations and, unless prevented by College policy, will fail you in
  the class.
* Friday the 13th falls on Friday next month.  Be careful.
* *Exam 1 to be returned tomorrow*.  
* Congrats to all of our athletes who competed this weekend.
* We'll do a quick debrief on some learning outcomes from Friday's class.
    * An overview of logic ... understanding these things through logic
      and not just programming is useful.
    * A different approach to checking your programs.
        * Make a table of expected outputs (complete for Boolean;
          incomplete for normal functions)
        * We should more frequently put tests in our definitions pane
          as a development strategy.

### Upcoming Work

* [Homework](../assignments/assignment.04.html).
    * Due Tuesday night at 10:30 p.m.
* Lab writeup for today: Exercise 3, 
  <http://bit.ly/151-2015S-lab16>
* Reading for Tuesday:
    * [Making and Manipulating Homogeneous Lists](../readings/homogeneous-lists-reading.html)

### Extra Credit Opportunities

#### Academic 

* TEDx Grinnell, February 21
* Pioneer Diversity Council talk

#### Peer Support (Morning Section)

* Julia's radio show, "The Hot Box".  Wednesday night/Thursday morning 
  1:00-2:00 a.m.  
* Host a prospie!  

### Other Good Things

* Women's Basketball vs. Knox on Wednesday.

### Questions

_Do we have to document if it doesn't say so on the homework?_

> 6P's required for anything that say "write and document".  6P's
  appreciated for everything else.  At least a sentence for everything.

New Concepts from the Reading
-----------------------------

* `lambda`s without definitions.  If you have a function you don't
  need multiple times, there's no need to define it.
    * We don't write
        > (define partial-sum (+ 2 3))
        > (* 8 partial-sum)
    * We instead write
        > (* 8 (+ 2 3))
    * Similarly, we don't have to write
        > (define only-blue (lambda (irgb-color) (irgb 0 0 (irgb-blue irgb-color))))
        > (image-variant kitten only-blue)
    * We can substitute the lambda in ourselves
        > (image-variant kitten (lambda (irgb-color) (irgb 0 0 (irgb-blue irgb-color))))
* Compose (`o` and `compose`)
    * See whiteboard.
    * Lets you do more than one thing at a time.
    * A way to create new procedures
    * Can be faster for some things
    * Another way to sequence operations
    * Fewer parentheses!
    * Finally, something that's potentially comprehensible in Scheme

Lab
---
