WEEK01: intro to python, unix, cs21
-----------------------------------
 M: Welcome to CS 21, about the course, etc


OVERVIEW:
 - write lots of computer programs, learn some CS along the way
 - learn PYTHON programming language
 - labs/programs due every week
 - meant for students without any CS/programming experience
 - attending lab sessions is REQUIRED this year


ALGORITHM EXAMPLE:
    can you solve sudoku puzzles?   http://en.wikipedia.org/wiki/Sudoku

    can you write out a list of step-by-step instructions that
    anyone could follow, that would allow them to solve a sudoku puzzle??

    an algorithm is like a recipe or list of instructions to follow

    Here's a simple algorithm for solving some sudoku puzzles:

Here's an example of this simple algorithm applied to an easy puzzle:


To SOLVE the above puzzle, we need to apply that algorithm:

   - to every region, given a number (ex: 6)
   - for every number from 1 - 9
   - and we might have to repeat the process (for every region,
     for every number 1-9) a few times (each time you fill in a box,
     that eliminates options for other numbers)

Computer Science & Algorithms:

    is it the "best" algorithm??
    what do we mean by "best"??
    is it the fastest algorithm?
    is it the simplest algorithm?
    is it in a form that the computer can understand?
    does it work for all sudoku puzzles?

Good EXAMPLE:

  - the above problem is a good example of what we will be doing 
    this semester: solve a problem ourselves, then turn that solution
    into an algorithm, then write/express that algorithm in PYTHON
    so the computer can do it
  - also a good example of the type of program you should be
    able to write by the end of this course
  - all programs (like the one above) have the following basic components:

         input/output (initial puzzle, results/solution)
         looping      (repeat for all regions, repeat for all nums 1-9)
         branching    (if there's only one open box, do this; otherwise, do that)
         data structure  (need some way to say where each number is in the puzzle,
                          what numbers are in a given row, column, region, etc)

    all tied together with an algorithm...

 
COURSE INFO:
 
    intro to cs, learning to program, learn to develop and
    analyze algorithms (lots of problem solving)

    who should you take this course: students new to CS and programming
    (if you've already done some programming, CS31 or CS35 might be
     better for you)

    what to expect
      - class builds on previous week's work
      - does require work (lab time)
      - help is available (ninjas)...but START EARLY
      - my teaching style (learn by doing)
      - why python?
http://xkcd.com/353
http://sebsauvage.net/python/snyppets/#beginner
    
    unix login and first python program (print "hello")
        - cs account
        - let me know if name not correct
        - prox tags
        - passwd 
        - dock and terminal program and unix prompt
        - logging out, ssh access (putty, mac)

    LAB0: vimtutor, using unix, update21, handin21 (due this Saturday)