---
title: Eboard 01  An introduction to algorithms
number: 1
section: eboards
held: 2019-01-23
link: true
---
CSC 151 2019S, Class 01:  An introduction to algorithms
=======================================================

_Overview_

* Preliminaries
    * Notes and news
    * Upcoming work
    * Extra credit
    * Questions
* Introduction - What is CS?
* Exercise - An everyday algorithm
* Debriefing on exercise 
* Common parts of an algorithm

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

### News / Etc.

* Welcome to CSC151!
* I'm Sam (or SamR)
* Our class mentors are Sanah and Xinya
* You should have received five handouts at the start of class
    * A playing card.
    * The [CS Department Academic Honesty Policy](http://www.cs.grinnell.edu/academic-honesty-policy)
    * [Assignment 1](../assignments/assignment01)
    * [Assignment 2](../assignments/assignment012
    * [A packet of readings](../readings/meta-day02).
* Since it's the first day of class, I will take attendance.  (_It will take
  me a few weeks to learn all of your names._)
    * "Hi, my name is FORENAME SURNAME."
    * "You can call me PRIMARY_NAME."
    * "If you must address me by surname, you can call me
      Mr./Ms./Mx./[nothing] SURNAME."
    * Something cool did you during break (if you're willing to share)
    * Optional: "My pronouns are ...."

### Upcoming work

* [Assignment 1](../assignments/assignment01) due Sunday night.
* Readings (handed out today), due before class Friday.
    * We're starting with a lot of reading.  It will taper off after the
      first few weeks.
* [Assignment 2](../assignments/assignment02) due Tuesday night.
    * Sam will assign partners on Friday.

### Extra credit (Academic/Artistic)

_None yet._

### Extra credit (Peer)

* Indoor track meet, Saturday at 9:30 a.m.  The track meet is long, so
  30 minutes of attendance suffices.  (Send me a paragraph of reflection,
  not report.)

### Extra credit (Wellness)

_None yet._

### Extra credit (Misc)

_None yet._

### Other good things

### Questions

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

* The study of the mechanics and processes of computing through coding
    * coding: typing instructions to the computer, using a language
      the computer can process
    * Hey computer, please pick a number between 1 and 34.
* How do scientists study
    * Find a problem and try to solve it
    * Investigate using the scientific method
    * Form a hypothesis
    * Design an experiment
    * Conduct the experiment
    * Analyze the results
    * "Confirm" or "reject" hypothesis
        * You can do more experiments
* Using lived experience and oral history
* Humanitistic study of the world
    * Rational thinking, discussion, and questioning
    * Reflecting on what other people have said and thinking about it.
    * An approach to the works of humanity through
        * Close reading
        * Theory
* In computer science, we study computation
    * Computation: understandable processes for achieving goals
    * How do we write instructions that can be carried out?
        * Most typically, by computer.
* This semester: Looking at how to write instructions to achieve particular
  goals.
    * Often: In a programming language that the computer understands.
    * Sometimes: In a language that humans understand
* Terminology:
    * "Algorithm" - A set of instructions to achieve a goal
    * "Data structure" - A way of organizing information
* We will study in a variety of ways
    * Writing them
    * Reading them

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

* Get with a group of four people with the same card number as you.
* Introduce yourselves to each other.
* Assume I am relatively clueless.
* Give me instructions for making a soy butter and preserve sandwich

Debriefing on exercise 
-----------------------

Three minutes, four lessons you might have taken from this process.

* "I'm worried about having Sam as a teacher.  He appears to have 
  **no clue whatsoever**."  (Alternately: "I'm worried about Sam's
  dad jokes.")
* Make sure you understand your inputs.  (There are multiple kinds
  of jars.  There are multiple ways to end a loaf of bread.  Nut-butter
  jars often have a seal.)
* Make sure you understand the capabilities of your audience.  (You
  should have learned something similar in Tutorial - know your audience.)
  [+1.5]
* Ambuiguity is dangerous.  Computers generally choose whichever meaning
  is least appropriate. [+0.5]
* It's good to try your algorithm as you write it so that you understand
  the state of the system.
* Four heads are better than one.
* Take time to understand the details of each operation.
* There are multiple processes for achieving the same goal.
* Need to make sure that you clean up after yourself.
* Be precise.
* Leave room for error (and ways to recover from errors).
* Algorithms may have unintended consequences.
* Be aware of the tools and resources you have available.

Common parts of an algorithm
----------------------------

_We may not have time for this section._

_Nope, we never do._
