-
I have graduated at Faculty of Economics, University of Belgrade (2010-2015)
-
After graduation I started to code
-
2016-2018 mainly focused on Mathematica and Wolfram language
-
In 2018 I started to code in python
-
-
eFrond - Financial analyst
- Main tool was Excel
-
GroundLink - Data Scientist
-
Automation of web data collection
-
Collection and analysis of competitors prices
-
Main tools were Python and Selenium
-
-
NCR - Big Data Developer
-
Selenium web-scraping introductory course held in late 2019 in GroundLink ( 5 colleagues attended training )
-
Individual teaching - helping friends get start with python
-
How everything started?
-
How we ended up participating in this course?
-
This is course for absolute beginners
-
No prior knowledge is assumed
-
Pace is going to be easy and slow
-
Introduction to course
-
IDE vs Command line
-
Different levels of abstractions
-
What is abstraction?
-
Programming VS coding
-
American VS Japanese philosophy
-
Built-in functions
-
User defined functions
-
Collections (list, dictionary, tuple, set)
-
Iteration over collection
-
For VS while loop
-
Exceptions
-
Pandas DataFrame()
-
Map, Apply, vectorised operations
-
Nested collections, nested loops
-
Variable scope: global VS local variables
-
Mutability
-
Classes and Objects
-
Abstraction VS implementation
-
Procedures
-
Types of variables: basic(simple) VS compound(complex)
-
Different ways to execute python program
-
Programming VS programming language
-
Variables, expressions, statements
-
Functions (builtin and user defined)
-
Control structures - Part I
-
Collections (lists, tuples, dictionaries, sets)
-
Control structures - Part II
-
Functional programming
-
Exceptions
-
Mutability of objects
-
Classes and objects
-
List comprehension
-
What are we going to learn? What is the topic? What question do we try to answer?
-
Why is it important? How can it help me? Why do I care? How can I benefit from it? What are its alternatives?
-
How to use it? How to implement it? What are different ways to apply it?
-
If someone ask you what is programming, but give you only 10 seconds to answer…
-
Everything is about data
-
Getting data
-
Transforming data
-
Storing data
-
-
Data - just any number, string or sequence of it
-
Information - we know what data means
-
Knowledge - we know how to use that information, how to take advantage and why it is important for us
-
Computers can do ONLY 3 things:
-
Perform calculation
-
Remember result
-
Decide weather to continue or stop execution
-
-
Pick and study a topic
-
Explain the topic to someone, like a child, who is unfamiliar to the topic
-
Identify any gaps in your understanding
-
Review and simplify
-
Things you want to achieve
-
Sequence of steps you need to perform and
-
You can, in simple words, explain your goal and way to achieve it
-
Things you want to achieve are not understood (you do not know to explain it in simple words)
-
Assumptions
-
Miscommunication
-
What are important elements?
-
What is relationship/hierarchy between elements?
- 3-5 cause-effect relationships
-
Start high level
-
Go down into implementation details
-
Start from (boring) implementation details
-
Then, eventually, go to ‘why’ question
-
View from top of the hill VS view from valley.
-
Start from top of the hill and slowly go down to valley.
-
Valley looks different when observed from top of the hill.
-
Top of the hill picture give us broader perspective.
-
Top of the hill = Generalisation.
-
In computer science, at the beginning, we don’t know from where to start!
-
There is no unique or best way from where to start journey.
-
It is about journey, not final destination!
-
Sometimes there are several ways to do same thing. Easy and hard way.
-
Which one to show you first?
-
It is always good to have final goal in mind!
-
How python is going to help me?
-
When it is going to help me?
-
What are potential use cases where I can apply it?
-
Figure out concept X in 3 minutes
-
Needs 3 hours to figure out concept Y
-
Figure out concept X in 3 hours
-
Needs only 3 minutes to understand concept Y
-
What are goals of python training?
- To become good entry level programmer
-
What are NOT goals of python training?
- To make expert from you
- It is always better to know one thing very good, than to know many things partially.
-
Pandas is most productive python library.
-
This is not training for pandas and numpy.
-
Hopefully, after we learn basics, there will be space for new course focused primarily on pandas.
-
Pandas and NumPy are special languages built on top of python language.
-
They have special syntax.
-
Knowledge of python building blocks give us chance to figure out:
- What can be source of error
- What is not source of error
-
Pandas is very useful and easy to use library.
- In order to be easy to use, basic building blocks of python should be mastered first.
-
Same story for NumPy.
-
What questions are welcomed?
- Why does it work this way?
- For me, it is more logical other way around?
- Why it doesn’t wort that way, but this way?
- Why someone invented this?
- How is it going to help me?
-
This topic is difficult to master, it will took me lot of time and effort until I become comfortable with it.
-
How is it going to help me?
-
After I master it, how is it going to improve me as developer?
-
What kind of business question I will be able to solve?
-
It is all about generalisation
-
Rule 80 / 20
-
Important VS Not-important
-
Common VS Not-so-common
-
Sth that you can apply on daily basis
-
Sth that can make your life more meaningfull, productive and enjoyable.
-
Be encouraged to make mistakes!
-
At the beginning, there is no excuse not to make mistakes!
-
The more mistakes you make, the faster and better you learn.
-
Description, understanding and explanation differ based on level of general knowledge.
-
It depends from which point of view we are looking at things.
-
Sometimes, at the beginning we will define things in one way. While, later on, we will define same thing in another way.
-
We will just be looking on same things from different point of view.
-
There is explanation that is good for someone who is just starting to learn new materials/ideas.
-
There is explanation for someone who is expert in field, for someone who already know materials/ideas/concepts.
-
Usually those two types of explanations differ radically!!!
-
I know what I know
-
I know what I don’t know
-
I don’t know what I don’t know
-
Design: What we want to code? Sequence of simple steps.
-
Implementation: coding, writing solution in particular programming language.
-
When you hear some topic/concept/element, you know what is relevant to that, you know what is important regarding that.
-
Eg. we introduced new concept, what other concepts/elements are important with regard to that one.
-
What are similar things, what are not related topics.
- Someone who knows all syntax by heart
-
Strong knowledge of building blocks
-
Know how to implement new functions/classes that come from new libraries. Know how to read documentations.
- It is more difficult to ask good question than to answer it!
- What is more important?
-
Repeat what you see in class, do homework. It will give you good knowledge of elementary concepts. (easier part)
-
After you get knowledge of basic building blocks, pick a topic. Do pet projects. Experiment and apply what you learn in new areas and practical cases.
-
I enjoy in taking things apart ...
-
... and putting them back again.
-
Part I
- Listening about new concepts.
-
Part II
- Exercise. Practice what you learned.
-
People are afraid of making mistakes.
-
How can I encourage you to make mistakes?
-
What should I do to motivate you to make mistakes?
-
Familiarise yourself with Google
-
Google is going to become your best friend
-
You are never first person who asked that question.
-
Someone has already asked question that you are interested in.
-
You can always find how.
-
I will not teach you anything new
-
I will just show you that you already know everything
-
Ask questions
-
Think what actions are on our disposal
-
From what bundle of actions we can choose particular one?
-
Think what is possible
-
What can be solution?
-
What kind of things could happen during the implementation?
-
What kind of solution is going to satisfy you?
-
What level of accuracy is going to make you happy?
-
What is best case scenario? What is worst case scenario?
- You can use python for many different things.
- Web development
- Data Science
- Automated software testing etc.
- Often, people who use same tool (python in our case), and work in different areas of development, have different mindset and barely can understand each other.
- They are different animals :-)
-
Syntax is very important. You will learn it along the way.
-
Do not focus on syntax at the beginning.
-
Purpose of the course is to make self-learnable machines from you :)
-
Goal is to be able to continue learning journey alone.
- Why I need it?
- How often I will encounter it?
- Is it necessary?
- What programming elements exist?
- This is what we are going to learn.
- How to combine them?
- Requires logic and lot of creativity. We will just scratch it.
-
How to approach learning process
-
How to behave on this journey
-
What to expect
-
Installing python and IDEs.
-
Getting familiar with tools we are going to use.
- Project where you can use python to automate process
- Have you ever heard that someone used python for sth that you are interested in?
- How you can improve your daily tasks with python?
- Thanks for your most valuable resource. Your time.