Community Data Science Workshops (Fall 2014)/Day 1 lecture: Difference between revisions

no edit summary
imported>Mako
imported>Mako
No edit summary
 
(34 intermediate revisions by the same user not shown)
Line 1:
{{CDSW Moved}}
 
Welcome to the Saturday lecture section of the Community Data Science Workshop! For about 2 hours, we'll work through an introduction to the Python programming language via both a lecture and hand-on exercises.
 
At the beginning of the lecture, we'll give a [[Day 1 pre-lecture|short pre-lecture talk to motivate the sessions]].
 
== Resources ==
Line 9 ⟶ 13:
== Lecture outline ==
 
#=== reviewReview Friday material ===
 
#* math: using python as a calculator
* math: using python as a calculator
#**addition, subtraction, multiplication, division
**addition, subtraction, multiplication, division
#**division shows something different: 8/2 versus 1/2
**division shows something different: 8/2 versus 1/2
#* <tt>type()</tt>
* <tt>type()</tt>
#** there are different types of things in python (called objects)
** there are different types of things in python (called objects)
#** variables that "know about the decimal place" (int) and variables that don't (floats)
** variables that "know about the decimal place" (int) and variables that don't (floats)
#* variables
* variables
#** assignment of variaibles
** assignment of variaibles
#** e.g., math with variables: scale up a recipe, into an assignment
** e.g., math with variables: scale up a recipe, into an assignment
#** you can assign to a variable and it will replace the old value
** you can assign to a variable and it will replace the old value
#* strings
* strings
#** things within quotation marks
** things within quotation marks
#** adding strings with "concatination" (smushing things together)
** adding strings with "concatination" (smushing things together)
#** e.g., <code>print("Hello" + name)</code>
#** concatenating strings and integers don't work (e.g., <code>print(1"Hello" + "mako"name)</code>)
** concatenating strings and integers don't work (e.g., <code>print(1 + "mako")</code>)
#** 1 is different than "1"; name is different than "name"
** 1 is different than "1"; name is different than "name"
#** single quotes versus double quotes (python doesn't care)
** single quotes versus double quotes (python doesn't care)
#** you can also multiply strings! (although it's not clear why you want to weird)
** you can also multiply strings! (although it's not clear why you want to weird)
#* booleans
* booleans
#* <tt>if</tt>/<tt>elif</tt>/<tt>else</tt>
** comparisons (e.g., <code>1 == 1</code> or <code>1 == 0</code>)
#* functions
*** you can compare strings (case sensative!)
#** has a parentheses
*** also >, <, and !=
#** we've already learnd examples of this: exit(), help(), type()
** type() shows that the output of True or False is <code>bool</code>
# lists
** e.g., <code>"i" in "team"</code>
#* purpose
** e.g., "i" not in "team"</code>
#* initialization
* <tt>if</tt>/<tt>elif</tt>/<tt>else</tt> ('''move to external file''')
#* <tt>len()</tt> review
** if, something that evaluates to a boolean, and then colon
#* accessing elements
** e.g., <code>if "mako" in "makoshark"</code>
#* adding elements
** e.g., adding else example: <code>if brother_age > sister_age</code>
#* changing elements
** e.g., tempreature range
#* slicing lists
** e.g., adding elif: fix the bug in the previous program if they were the same age
#* strings are like lists
** indent with spaces (we use 4 spaces!)
#** len()
* functions
# loops and more flow control
** has a parentheses
#* <tt>for</tt> loops
** we've already learnd examples of this: exit(), help(), type()
#* <tt>if</tt> statements inside <tt>for</tt> loops
 
#* nested <tt>for</tt> loops
=== Lists ===
#* <tt>range()</tt>
 
#* <tt>while</tt> loops
* purpose
#* infinite loops
** Stores things ''in order''
#* <tt>if</tt> statements inside <tt>while</tt> loops
* initialization
#* <tt>break</tt>
** making a list called my list: <code>my_list = ["a", "b", "c"]</code>
#* <tt>raw_input()</tt>
** comma separated elements. in python they can be a mix of any kind of types
# dictionaries
** <code>type(my_list)</code>
#* purpose
* <tt>len()</tt> review
#* initialization
#* accessing elements
** indexing like my_list[0]
#* adding elements
** indexing starts from the front and we ''start counting at 0'' (now you understand all the zeros we've been using
#* changing elements
** we go from the end with negative numbers
#* <tt>keys()</tt> and <tt>values()</tt>
** what happens if we try to move outside of the range? ('''error!'')
# modules
* adding elements
#* purpose
** using the the <code>my_list.append()</code> function
#* builtins
** the <code>.append()</code> function is a special kind of function that lists know about
#* imports
* changing elements
#* <tt>import random</tt>
** replacing elements like <code>my_list[0] = "foo"</code>
#* <tt>random.randint</tt>
* finding elements in list
#* <tt>random.choice</tt>
** e.g., <code>"z" in my_list</code>
#* walk through state_capitals.py
* slicing lists
** the colon inside the [] is the ''slicing syntax''
** e.g., <code>my_list[0:2]</code> is 0th up to, but not including, the 2nd
** e.g., <code>my_list[2:]</code>
** e.g., <code>my_list[:2]</code>
** e.g., <code>my_list[:]</code>
* strings are like lists
** we can slice lists
** len()
*** <code>len("")</code> length of the empty string
* many other interesting functions for lists
** e.g., <code>min()</code> and <code>max()</code>
** e.g., create a list of names and sort it <code>names.sort()</code>
 
=== loops and more flow control ===
 
* <tt>for</tt> loops
** e.g., <code>for name in names: print name</code>
** e.g., <code>for name in names: print 'hello ' + name</code>
** Super powerful because it can do something many many times. Data science is about doing tedious things very quickly. For is the workhorse that makes this possible.
** Look and see name is after we're done looping.
** ''Move to editor.''
* <tt>if</tt> statements inside <tt>for</tt> loops
** e.g., <code>if name[0] in "AEIOU"</code> then print "starts with a vowel"
** show we can test things outside the loop to show how the comparisons are working
** add an else statement to capture words that start with a consonant
** append to a list within a for loop
** create a counter within a for loop (keep track)
** build up a sentence
* nested <tt>for</tt> loops
* <tt>range()</tt>
* <tt>while</tt> loops
* infinite loops
* <tt>if</tt> statements inside <tt>while</tt> loops
* <tt>break</tt>
* <tt>raw_input()</tt>
 
=== dictionaries ===
* purpose
* initialization
* accessing elements
* adding elements
* changing elements
* <tt>keys()</tt> and <tt>values()</tt>
 
=== modules ===
* purpose
* builtins
* imports
* <tt>import random</tt>
* <tt>random.randint</tt>
* <tt>random.choice</tt>
 
=== walk through state_capitals.py ===
 
Where state_capitals.py from http://mako.cc/teaching/2014/cdsw/state_capitals.py is the grand finale and synthesis of lecture material.
Anonymous user