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

* Grab a not-quite-blank playing card, identify where the associated
  computer is, and sit by that computer.

_Overview_

* Preliminaries.
    * Admin.
    * Upcoming Work.
    * Extra Credit.
    * Questions.
* About the course.
* Common parts of an algorithm.
* Lessons from day one. (maybe)
* Getting started with Linux.

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

### Admin

* In case you didn't know, there is a course Web site at 
  <http://www.cs.grinnell.edu/~rebelsky/Courses/CSC151/2015S/>.
  We'll do a quick overview.
* Welcome to Dr. Brown, who is observing us learn this semester.
* Two quotations
    * "Don't take 151, they're going to teach you a useless language.
       Take Web Development so you can learn HTML." (Overheard in mailroom)
    * "I wish someone had told me that Scheme was just Javascript with a 
       better syntax.  Now that I understand that, I wish I'd taken more
       CS." (Graduating senior who developed Web consultancy.)
* I expect that you do readings before class.
* The self-checks are for your benefit.  You do not need to turn them in.
* There are some bugs in the lab; we will work on resolving them.
    * Use "2015S" instead of "2014F" when you enter course URLs.
    * If you're willing, right click on your Web window and allow 
      scripts globally.
    * The menu in Iceweasel/Firefox is in the upper right-hand corner.
* Review sessions at 9am and 1:15 pm and 8:00 pm tomorrow.

### Upcoming Work

* [Assignment 1](../assignments/assignment.01.html) due tonight.
* Assignment 2 will be distributed on Friday.
* Quiz 1 will be Friday.  It will primarily be on the parts of algorithms,
  and is intended mostly to get you used to having Friday quizzes.
    * The quiz is closed book, open mind.
* Readings for Friday:
    * [Parts of Algorithms](../readings/algorithms-reading.html) (review)
    * [The DrRacket Program-Development Environment](../readings/drracket-reading.html)
    * [Beginning Scheme](../readings/beginning-scheme-reading.html)
    * [How Scheme Evaluates Expressions (take 1)](./readings/scheme-eval-1.html)

### Extra Credit Opportunities

* _You don't get the extra credit if it's an activity you are participating
  in.  E.g., if you are a swimmer and go to a swim meet, others are supporting
  you!_.
* _I'll cap most repeated things at two times: E.g., two swim meets, two
  BBall games, two meditation nights._
* _ Preferably within two days_
* _Yes, radio shows count._

#### Academic 

* Friday, 12:10 p.m., JRC 224A (Day PDR), CS Table, "Computer Programming
  as an Art" (copies outside my office)

#### Peer Support (Afternoon Section)

* Meditation group, Wednesday (TONIGHT), 9:00 p.m., CRSSJ
* Men's Baskeball, Saturday, 3pm?, Darby2
* Meditation group, Sunday, 4 p.m., CRSSJ
* Swimming, Friday, January 30, 6:30 p.m., Osgood Natatorium
* Swimming, Saturday, January 31, noon, Osgood Natatorium
* Men's Tennis, Saturday, January 31, Field House

### Things Your Peers Recommend (no EC unless mentioned above)

* Belly Dance Club, to be scheduled
* Salsa Club, Tuesdays at 7pm and Sundays at 2pm

### Questions

About the course
----------------

* Computer Science 151 has a number of goals
    * To introduce you to fundamental ideas of computer science: abstraction,
      algorithms, and data
    * To enhance your problem-solving skills and give you experience
      in formal representation of problems and solutions.
    * To introduce you to two primary paradigms of writing algorithms:
      functional and imperative.
    * To give you some programming skills that you can apply to problems
      in other disciplines.
    * To improve other learning and thinking skills (as we hope all
      Grinnell classes will do).
* I expect and hope that you will find CSC151 different from any class
  you've taken in the past.
    * We use a different format than many classes: a collaborative,
      workshop-style format.  (You may have seen this format in other
      introductory science courses; we do it somewhat differently, particularly
      in that we ask you to do reading and reflection before each class.)
    * Computers and computer science also require you to think differently.
      I expect that you'll exercise some brain cells you may have forgotten
      you have.  (And after all, isn't liberal arts education an exercise
      in thinking in as many ways as you can?)
    * **Don't bang your head against the wall for too long!**
* Like most computer science courses, CSC151 will have both theoretical
  and practical components.  I hope you will enjoy relating the two.
* And, hey, we're going to make pretty pictures, too.
    * That is, you can solve problems in many different domains.  We are
      going to use image making as our problem domain.  
    * We've found that images are useful for a wide variety of reasons,
      not least of which is that it's sometimes much easier to "see" where
      things went wrong.

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

* Small group: Discuss the reading on algorithms.  [4 min]
    * Don't forget to introduce yourselves!
    * Make sure that you are ready to answer questions I might ask about 
      the parts of an algorithm. 
    * Develop a list of questions for me.
    * Example of each component from AB&J discussion 
* Large group: Overview of Algorithms. [4 min]
* What is an algorithm?
    * A procedure for figuring things out
* What are the parts of an algorithm?
    * Variable - A named thing (that can sometimes be changed), preferably
      named descriptively, that allows you to refer to something consistently.
      Ingredients: Jar of nut butter.  Dominant hand.
    * Subroutines - An algorithm within an algorithm.  E.g., opening a jar.
    * Parameter - A named input to an algorithm/subroutine.
* What questions do you have?
    * Is a subroutine an algorithm within an algorithm?  Yes.
    * What's the relationship between variables and parameters?
    * How do we distinguish things from processes?

Lab: Getting Started with Linux
-------------------------------

* We'll break about midway through today's class to get you set up
  working with our Linux computers.
* This "lab prep" is somewhat pointless and annoying, but also necessary.
* Not all of you will get to do this today; some will have to do so on
  Friday or on your own.
* Do [the lab](../Labs/linux-lab.html)
