Questions ?
I've posted a tentative schedule on the syllabus page.
Getting started with jupyter.marlboro.college :
How do you find documentation for all this stuff ?
google search
-------------
jupyter tutorial
jupyter docs
github data science from scratch
linux terminal tutorial
In a terminal :
$ mkdir data_science
$ cd data_science
$ git clone https://github.com/joelgrus/data-science-from-scratch.git
$ ln -s data-science-from-scratch/scratch scratch
In the jupyter hub , look at what you have click on "scratch" click on "introduction.py"
In a new notebook name it "chap1" from scratch.introduction import users, friends_of_friends
Let's try to do some of what he does in chapter 1 on our own.
... depending on time ...
I've put what we did in class into the ../code/jan24/ folder.
First: review some python 3 basics ... check out the resources page for docs & cheatsheet.
Second: chap 2 summary. Much of this you've seen before ... but some you haven't.
The author has his own coding style. Your mileage may vary.
* zen of python (beautiful; explicit; simple)
* getting python / virtual environments (we'll use jupyter.marlboro.college)
* whitespace / modules / functions (all seen in 'intro programming')
* strings (new: f-strings)
* exceptions / lists / tuples / (all seen in 'intro programming')
* dictionaries (new: defaultdict)
* Counter object (convient way to create {thing:count} dictionaries)
* sets : {1,2,3} or set()
* control flow: for, while, if
* truthiness: bool(), and, or, all(), any()
* sorting: list.sort() in place; sorted()
* comprehensions:
see https://python-3-patterns-idioms-test.readthedocs.io/en/latest/Comprehensions.html
* tests: assert (I used doctests in 'intro programming'.)
* objects: (seen in 'intro programming')
* iterables and generators:
efficient (i.e. 'lazy') but may be awkward to invoke or appear unexpectedly
* randomness (seen in 'intro programming')
* regular expressions: powerful but complicated
* functional programming: Often this is a style choice; "map", "filter",
and other "data flow" operations. What the author calls 'pythonic"
is typically not 'functional' per se in the way that
some languages (e.g. Haskell) are.
* types: a new and awkwardly handled recent python feature,
but an important concept to understand, much more central
(for good reasons) in many other languages. The python language
sacrifices type safety for coding ease and convenience. As the
size of coding projects, this trade off becomes more problematic.
We walk through some code examples.