Advanced Programming course for Scientists

Target Audience

Prerequisites

Objectives

Course Format

Language

Syllabus

  1. Overview of Python syntax
    • Scalars, Lists, Dictionaries, Tuples, Sets
    • I/O
    • Control flow: for-in and while loops, if, else elif
    • Files (Plain text, CSV, Excel, JSON, YAML)
    • Functions
    • Modules
  2. Git and GitHub
    • Working with Git locally
    • Cloning remote repository
    • Forking/Sending Pull-request
  3. Introduction to Testing
    • doctest
    • pytest
  4. Data, Algorithms, and complexity
    • What's behind the data structures of Python.
    • What is a hashing algorithm when and how to use it.
    • How picking a data structure impacts algorithmic complexity.
    • Stack (LIFO), Queue (FIFO)
    • Trees, Graphs, Binary graphs
    • Why and how are the numpy arrays much faster than regular Python lists?
  5. Using Jupyter notebook
    • Navigation
    • Files
    • Markdown
  6. Introduction to Numpy
    • Arrays, matrices
    • Indexing of matrices in Numpy
    • Transformations on arrays
    • Data type and conversion to
    • Selecting data
    • Read/write data
    • Numpy and Matlab
  7. Introduction to Pandas
    • DataFrame and Series in Pandas
    • Indexing methods in Pandas
    • Groupby in Pandas
    • Mathematical Operations in Pandas
    • Indexing a data Series
    • Modifying data
    • Merging DataFrames
    • Dates in Pandas
    • Create graphs in Pandas
  8. Data Visualization
    • Matplotlib
    • Seaborn
    • Bokeh
    • Holoviz
    • Histograms
    • Heatmaps
    • Various plots (line, scatter)
  9. The Scientific libraries
    • NumPy
    • Pandas
    • SciPy
    • Matplotlib
    • Seaborn
    • Comparing with Matlab and R
  10. Image manipulation
    • OpenCV
  11. Natural Language Processing
    • Spacy
  12. Machine learning
    • scikit-learn
    • Linear regression
    • Correlation vs. Regression
    • Factor analysis
    • Logistic regression
    • Classification
    • Decision Tree
    • Random forest
    • Supervised learning
    • Unsupervised learning
  13. Parallel programming
    • multiprocessing
    • forking
    • threading
    • async programming
  14. Accessing web APIs
    • Getting a token
    • Sending GET request
    • Sending POST request
    • Retrieving JSON document
    • Submitting data
  15. Web scraping
    • Using the Python requests module
    • Using Scrapy
    • Using Selenium
  16. GUI Using Python Tk
    • File selector
    • Buttons
    • Entry box
    • Event handling
    • Showing progress
    • Timer event
  17. Relational Database access (SQL)
    • Quick overview
    • Creating a simple schema
    • Creating the database (SQLite)
    • Accessing SQL database
    • Inserting data into the database
    • Fetching data from the database
    • Updating data
    • Deleting data
  18. XML processing
    • DOM
    • SAX
  19. Web based GUI - Flask
    • Introduction to Web development
    • Introduction to HTML
    • Introduction to CSS
    • Simple examples using Flask

Contact

Contact: Gabor Szabo gabor@hostlocal.com
Phone: +972-54-4624648