---
title: Eboard 42  Wrap Up
number: 42
section: eboards
held: 2017-12-08
current: true
---
CSC 151.01, Class 42:  Wrap Up
==============================

* Sit where you would like (within reason).
* Feel free to take Chocolate Candy, a Clementine, and/or an oatmeal Creme pie.

_Overview_

* Preliminaries
    * Notes and news
    * Upcoming work
    * Extra credit
    * Questions
* Project presentations
* The subject matter(s) of the course
* Course evaluation
* Concluding comments
* Final Friday PSA
* Comments on the final (optional)

### News / Etc.

* Don't forget that epilogues are due tonight!
* I don't have office hours next week, but I should be in my office at
  assorted times on Monday and Tuesday.  I'll also be in 3815 from
  9-noon on Wednesday.

### Upcoming work

* Cover sheets for exam 4 due NOW!
* Epilogues due TONIGHT!
* Optional final during finals week (Wed 2pm, Thu 9am, or Fri 9am).

### Extra credit (Peer)

* Musical: Next to Normal Friday at 7:30, Saturday and Sunday at 2:30.
  Arrive early and put your name on a waiting list.

### Extra credit (Misc)

### Other good things

* Stay healthy and sane during finals week.

### Questions

When will we get our grades?
  : Monday, I plan.

Presentations
-------------

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

### Problem solving

* Draw it out.
* Break a big problem down into smaller problems.
* Work in a pair (or group): It's helpful to bounce ideas off of
  someone else.
* Work the algorithm by hand, or try to observe the solution
  in action, so as to understand what it's doing.
* Understand the problem well before trying to develop a solution.

### The core of computer science: Algorithms and data structures

* Core algorithms
    * filter
    * sort - merge, insertion, selection
    * search - linear and binary
* Core data structures
    * lists
    * queues
    * trees
    * binary search trees
    * files - persistent data
* Algorithms and data structures interact.  The data structure
  limits your operations but also encourages you to think in different
  ways.
* Recursion: Solve problems by breaking them down into smaller versions of 
  the same problem.
* Core components of algorithms
    * Built-in operations and types
    * Sequence operations
    * Make choices - conditionals
    * Repeat operations - map, recursion
    * Input and output
    * Name values
    * "That one other thing."

### Functional programming

* Higher-order procedures - functions as first class values
    * `map`
    * `section`, `l-s`, `r-s` -> Fill in *some* parameters of a procedure
      to create a new procedure.
    * `apply`
    * `compose`
    * `filter`
    * ...
* Anonymous procedures (in Scheme, use lambda to do that)
* "Pure" procedures - Don't modify their input (or the world around
  them); always return the same value given the same input.
     * Contrast with (a) the things that end in !, (b) `random`, `read`,
       that give different values with the same input

### Program and software design

* Documentation
* Debugging
* Make your code readable to others (format, variable names)

### Scheme

* (P (a ren) (the (s ((((((is)))))))))
* lambda for procedure (and anonymous procedure definition)

### Data science

* Clean data.
* Files.
* Use helpers

### General thinking skills

* Responding to unexpected Q's.  (This situation.)
* Problem solving (beyond CS)
* Ask for help, don't hit your head against the board (too much)
* Work with others
* Take a break from your work; trust your subconscious.
    * Know when to walk away

### And beyond

* "Uh" and "um" always works as answers, as long as you can figure out
  what they stand for.
* There's more to life then <any academic discpline>
* Have fun
* You have amazing peers, support them in their activites (or just in
  themselves)
* Take care of yourselves and others; you're worth it
* Don't swear.

Course evaluation
-----------------

Concluding comments
-------------------

Final Friday PSA
----------------

Comments on the final
---------------------

