CSC151.02 2015S, Class 01: An Introduction to Algorithms
========================================================

_Overview_

* Preliminaries.
    * Admin.
    * Upcoming Work.
    * Extra Credit.
    * Questions.
* Introduction: What is CS?
* Exercise: An everyday algorithm.
* Debriefing on exercise (continues tomorrow).

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

### Admin

* Welcome to CSC 151!  I'm Sam.  Your mentors are Alex and Sarah.
* Grab a standard playing card.
* Grab a blank card and a pen, write your name on the card, illustrate
  the card if so inclined, and hand both card and pen to a mentor when 
  you are done.
* There are no textbooks for the class.
* Anything I type in this window will (eventually) show up online.

### Upcoming Work

* [Assignment 1](../assignments/assignment.01.html) due tomorrow night.
    * Expect me to take at least a week to respond.
* Readings for Wednesday:
  [Grinnell's Linux Environment](../readings/linux-reading.html) and
  [Parts of Algorithms](../readings/algorithms-reading.html)

### Extra Credit Opportunities

#### Academic 

* Today, 6:00 p.m., Herrick, Ta-Nehisi Coates, "The Case for Reparations"
* Friday, 12:10 p.m., JRC 224A (Day PDR), CS Table, "Computer Programming
  as an Art" (copies outside my office)

#### Peer Support (Afternoon Section)

* Swimming, Friday, January 30, 6:30 p.m., Osgood Natatorium
* Swimming, Saturday, January 31, noon, Osgood Natatorium
* Men's BBall Saturday, some time, vs. Beloit in that big gym thingy
* Men's tennis, January 31 in the field house
* Meditation group Wednesday night at 9pm and Sunday at 4pm in CRSSSSSJ

#### Fun Peer Things that aren't for extra credit

* Belly dance club to be scheduled starting next week
* Salsa club, Tuesdays at 7pm and Sundays at 2 or something like 2

### Attendance

* I would like to know
    * What name to use for you in less formal situations.  This will usually
      be your given name or a nick name.
    * What name to use if I am addressing you by family name or last name.
    * Your preferred gender pronoun.
    * Optionally, any upcoming events in which you are participating that
      you would like classmates to attend.
* When I call a name that resembles your name, please answer using something
  like the following models.  (It's okay if you don't have any upcoming
  events.)
    * Hi.  My name is Casey Smith.  I prefer that you call me "Case" or
      "Mr. Smith".  My preferred gender pronouns are he, him, and his.
      I'm singing in a Con Brio concert this weekend, and I hope to see many 
      of you there, even if you are in favor of toy trains.
    * Hi.  My name is Casey Smith.  I prefer that you call me "Casey" or
      "Ms. Smith".  My preferred gender pronouns are she and her.  I'm
      swimming against cornfolk from the neighboring state on Friday,
      January 30, and we always like to have folks cheer us on.
    * Hi.  My name is Casey Smith.  I prefer that you call me "Cay" or
      "Mx. Smith".  My preferred gender pronouns are zi and zir.  I'm
      giving a math talk on non-Euclidean combinatorics next Tuesday.
      I look forward to helping you think differently.

### Questions

Introduction: What is CS?
-------------------------

* Introduce yourself to the person next to you and try to come up with
  a definition of computer science.
    * One reason I love Grinnell students: There was no delay in you
      following that instruction.
* Programming a computer to get a computer to do what you want it
  to do.  [Programming is a skill, not a discipline.]
* Behind the scenes in functional problem solving
* Modality of thinking about problem spaces based on how computers work
* Has to do with computational work
    * Analyze data
    * Model processes (e.g., biological processes)
    * Dealing with larger amounts of data computationally
* "Computationally" - calculating using a bunch of operations
* Computer science is the study of algorithms and data structures
    * Algorithms: Instructions for calculating solutions to problems
    * Data structures: Ways to organize data (typically in support
      of algorithms)

Exercise: An everyday algorithm
-------------------------------

* Get together with people with the same card value.
* Write instructions to teach me how to make a nut butter and jam sandwich
* Assumptions:
    * I know the names of things
    * I'm clueless - If you give me ambiguous instructions, I am likely
      to interpret them differently than you intended
    * I'm clueless - If you leave things out, I'll make bad assumptions

Debriefing on exercises
-----------------------

* When things go wrong, it can be funny!  
    * Really important to remember.  Things will go wrong
      regularly this semester, and laughing and trying again
      is the best result.
* You generally don't get to see your data in advance, so you need
  to write algorithms that adapt to the data (or limit the kinds of
  data that you work with).
* "It's hard because we don't know how much you know."
* "It's hard because we have to try to write it all in one go."
* You need to account for the things that can go wrong.
* Watch what happens and troubleshoot.
* Be specific.
