# FDP for Python

Reason 0

> The basis for education in the last millennium was reading, writing, and arithmetic; now it is reading, writing, and computing. - Sedgwick

Reason 1

> You can code. They cannot. That is pretty damn cool. - [*LTHW Python*](https://learnpythonthehardway.org/book/advice.html)

Reason 2

> Python is a multipurpose programming language and widely used for Data Science, which is termed as the sexiest job of this century. - [Vinay Babu, DSC](http://www.datasciencecentral.com/profiles/blogs/learn-python-for-data-science-from-scratch)

|       | Day           | AM Session 1                                                                  | AM Session 2                                               | AM Session 3                           | PM Session 1                                    | PM Session 2                             |
| ----- | ------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------- | -------------------------------------- | ----------------------------------------------- | ---------------------------------------- |
|       |               | (9.00 - 9.30)                                                                 | (9.45 - 11.45)                                             | (11.45 - 12.15)                        | (1.15.00 to 3.15)                               | (3.30 to 4.30)                           |
|       | Day 1         | Why Python?                                                                   | How to get started: your first program - Extracting a Link | Solving Problem Set                    | How to repeat - Finding all the links on a page | Solving Problem set                      |
| Day 2 | Q\&A of DAY 1 | Data Learning to Crawl                                                        | Solving Problem Set                                        | Building an Index                      | Solving Problem Set                             |                                          |
| Day 3 | Q\&A of DAY 2 | How Programs Run- Making Things Fast (Performance improvement & Optimization) | Solving Problem Set                                        | How to Have Infinite Power (Recursion) | Solving Problem Set                             |                                          |
| Day 4 | Q\&A of DAY 3 | How Programs Run- Making Things Fast (Performance improvement & Optimization) | Solving Problem Set                                        | How to Have Infinite Power (Recursion) | Solving Problem Set                             |                                          |
|       | Day 5         | Q\&A of DAY 4                                                                 | Challenging practice problems                              | Cumulative Practice Problems           | Search Engine Validation                        | Continuation on Search Engine Validation |

### Things to Decide

* choice of IDE? <https://www.jetbrains.com/pycharm/> - is it available online?
* CloudCoder problems to go over?
* CyberDojo sessions?
* Who wants to focus on RPA?
  * We now can enroll some faculty to become RPA experts / consultants...both in KGCAS and KITE and they can progress on their own to some level of expertise...and take students along.

### Draft Agenda

1. <http://bit.ly/fizzBuzzVideoCD> for review before workshop
2. Blockly 10-part challenge and Python equivalent code review
3. CD-1 review of <http://j.mp/fizzBuzzPythonFDP>
4. Part 2 - OOP version Custom Start - <http://j.mp/oopFizzBuzzCD>
5. Part 3 - expand CD-2 to output sequence
6. Part 4 - expand CD-3 to output for FizzBuzzPlus⁠⁠⁠⁠

### Learning Pathway

1. Fundamentals of Python language
   * [learn Python in 10 minutes](https://github.com/kgisl/pythonFDP/blob/master/files/learn-python.pdf) and [tutorial](https://www.stavros.io/tutorials/python/)
   * [learn Python in 90 minutes](https://github.com/kgisl/pythonFDP/blob/master/files/pythonin90minutes.pdf)
   * Beginner Python video course on Reddit - <http://bit.ly/beginnerPython>
2. Problem statements in CyberDojo
   * subset of solutions in Step 3
3. Automating Boring stuff in Python
   * <https://automatetheboringstuff.com/>
   * <https://www.udemy.com/automate/?couponCode=FOR_LIKE_TEN_BUCKS>
4. Learn PySpark
   * <https://www.dezyre.com/apache-spark-tutorial/pyspark-tutorial>
   * Refactor earlier solutions into Pyspark platform
5. RPA experience on UI-Path
   * Use Python API to automate some simple tasks on the web
     * <https://www.uipath.com/kb-articles/uipath-robot-api>
   * CloudGate exception report generation - is this possible?
   * Compare two documents using Python - <https://github.com/kgisl/project-ideas/blob/master/compareSimilarDocsUsingPython.md> and <http://www.datasciencecentral.com/profiles/blogs/state-of-the-art-machine-learning-automation-with-hdt> and <http://www.datasciencecentral.com/profiles/blogs/advanced-machine-learning-with-basic-excel>
6. What next? <https://learnpythonthehardway.org/book/next.html>

### Python for Data Science

Read up the write up at <http://j.mp/pythonForDataScience>.

1. <https://developers.google.com/edu/python/> - At Google, all this material makes up an intensive 2-day class, so the videos are organized as the day-1 and day-2 sections.
2. <https://learnpythonthehardway.org/book/>
3. Automate the boring stuff using Python

#### Variant 2

Also read <http://www.datasciencecentral.com/profiles/blogs/the-guide-to-learning-python-for-data-science-2>

<https://campus.datacamp.com/courses/intro-to-python-for-data-science/chapter-1-python-basics?ex=1>

<https://www.datacamp.com/courses/intermediate-python-for-data-science>\
<https://campus.datacamp.com/courses/pandas-foundations/data-ingestion-inspection?ex=1>
