Skip to content

Latest commit

 

History

History
556 lines (280 loc) · 11.6 KB

0. Introduction and general info about course.md

File metadata and controls

556 lines (280 loc) · 11.6 KB

Introduction and general info about course

About myself

  • 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

Work experience

  • 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

My teaching experience

  • Selenium web-scraping introductory course held in late 2019 in GroundLink ( 5 colleagues attended training )

  • Individual teaching - helping friends get start with python

Course background

  • How everything started?

  • How we ended up participating in this course?

About course

  • This is course for absolute beginners

  • No prior knowledge is assumed

  • Pace is going to be easy and slow

Elements of programming

  • 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

Course structure

  1. Variables, expressions, statements

  2. Functions (builtin and user defined)

  3. Control structures - Part I

  4. Collections (lists, tuples, dictionaries, sets)

  5. Control structures - Part II

  6. Functional programming

  7. Exceptions

  8. Mutability of objects

  9. Classes and objects

  10. List comprehension

Course materials

Introduction

3 family of questions:

  1. What are we going to learn? What is the topic? What question do we try to answer?

  2. Why is it important? How can it help me? Why do I care? How can I benefit from it? What are its alternatives?

  3. 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

    1. Getting data

    2. Transforming data

    3. Storing data

Where does name ‘Information technology’ comes from?

There is relationship: Data -> Information -> Knowledge

  • 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

How computers work

  • Computers can do ONLY 3 things:

    • Perform calculation

    • Remember result

    • Decide weather to continue or stop execution

How humans work

Feynman technique:

  1. Pick and study a topic

  2. Explain the topic to someone, like a child, who is unfamiliar to the topic

  3. Identify any gaps in your understanding

  4. Review and simplify

Structured approach

What is structured approach?

You have clear understanding of:

  • 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

Why structured approach?

Main source of mistake in computer science:

  • Things you want to achieve are not understood (you do not know to explain it in simple words)

  • Assumptions

  • Miscommunication

Learning strategy

Looking at things as elements of a whole

  • What are important elements?

  • What is relationship/hierarchy between elements?

Take difficult topic and split it apart into sequence of simple steps

Acceptable number of steps in a sequence

What does acceptable in this case mean?

  • 3-5 cause-effect relationships

Top to bottom approach

  • Start high level

  • Go down into implementation details

Bottom up approach

  • Start from (boring) implementation details

  • Then, eventually, go to ‘why’ question

Top down approach

  • 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.

Introduction to CS

  • 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!

Dilemma

  • Sometimes there are several ways to do same thing. Easy and hard way.

  • Which one to show you first?

Learning strategy

  • 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?

Everyone is different

Person A

  • Figure out concept X in 3 minutes

  • Needs 3 hours to figure out concept Y

Person B

  • Figure out concept X in 3 hours

  • Needs only 3 minutes to understand concept Y

Goals

  • What are goals of python training?

    • To become good entry level programmer
  • What are NOT goals of python training?

    • To make expert from you

Learning hack

  • It is always better to know one thing very good, than to know many things partially.

Pandas and NumPy

  • 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.

Ask question !!!

  • 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?

Useful Knowledge

  • 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.

Learning = experimentation

  • 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.

Learning strategy

  • 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.

How to explain new things

  • 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!!!

Knowledge base

  • I know what I know

  • I know what I don’t know

  • I don’t know what I don’t know

Two stage process

  • Design: What we want to code? Sequence of simple steps.

  • Implementation: coding, writing solution in particular programming language.

Abstraction

  • 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.

Not good developer

  • Someone who knows all syntax by heart

Excellent Developer

What does it mean to be good developer?

  1. Strong knowledge of building blocks

  2. Know how to implement new functions/classes that come from new libraries. Know how to read documentations.

Be curious!

  • It is more difficult to ask good question than to answer it!

Syntax VS Semantic

  • What is more important?

Learning workflow

  • 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.

How I learn

  • I enjoy in taking things apart ...

  • ... and putting them back again.

Class Structure

  • Part I

    • Listening about new concepts.
  • Part II

    • Exercise. Practice what you learned.

Practice = making mistakes

  • People are afraid of making mistakes.

  • How can I encourage you to make mistakes?

  • What should I do to motivate you to make mistakes?

Be ready !!!

  • Familiarise yourself with Google

  • Google is going to become your best friend

Good thing about programming

  • You are never first person who asked that question.

  • Someone has already asked question that you are interested in.

  • You can always find how.

Be creative

  • 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?

Python for everyone

  • 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 :-)

About language syntax

  • Syntax is very important. You will learn it along the way.

  • Do not focus on syntax at the beginning.

Final goal of training

  • Purpose of the course is to make self-learnable machines from you :)

  • Goal is to be able to continue learning journey alone.

Sanity check type of questions

  • Why I need it?
  • How often I will encounter it?
  • Is it necessary?

Learning strategy

  • 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.

What we learned today?

  • How to approach learning process

  • How to behave on this journey

  • What to expect

Plan for next session

  • Installing python and IDEs.

  • Getting familiar with tools we are going to use.

Think about!

  • 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?

The end

  • Thanks for your most valuable resource. Your time.