Skip to content

archclassroom/python-beginners

Repository files navigation

Python Basic

This course is for: Complete beginners in programming and people who know some basics but want to learn some tricks and more about standard libraries.

This course is not for: Experienced python programmers or anyone who knows about everything learnpython.org offers.

Before the actual course, I strongly recommend to try to get familiar with the language using those tutorials in links below or watching videos and trying out some things on your own.

Course is currently running on weekly basis usually 07:00 UTC Wednesdays but due to the summer time this may vary

#archlinux-classroom on Freenode provides always latest news in the topic

there will be at least 10 sessions, covering stuff (I will later elaborate in points) which should be enough to build something to lean to in your path to learn whatever else requiring some Python knowhow. If we raise enough demand, there could be for example a session about using packager X Y, session about cryptography, etc. But since we have internet and we record the lectures there are many avaliable tutorials online free or paid as you can see bellow.

One of the sessions I can offer might be:

Videos

Whole playlist

Simple programs plan (feel free to do it advance)

  • list files in /var/cache/pacman/pkg (downloaded packages) and
    • have dictionary with keys: name, versions (information just from filename)
      • in #6 we used re module (regular expressions) and found out its not so simple to make pattern applicable to all pkg names
    • some pkginfo using some archive modules (maybe pacman python module?)
    • that was partially done in session #5
  • remaining class timer was done session #6
  • visualize the result.json created by file_stater.py, either by some plot or web app clicker
  • no other simple project in plan, except pulec's which haven't been fully published

Optional homeworks

  • Easy: Make scripts/remaining_class_time.py print in one line, overwriting the old (no need for sys module)
  • Hard: Make multiple patterns or string operation logic in scripts/file_stater_arch.py to match name and ver of all possible Arch packages
    • think of some cool key to 'analyze' the packages with, try to think of something that might be usefull for others or just for you

More difficult projects

  • using twitter, google, etc. as a source for searching about topic X and generating some results and rendering them nicely

About the lecturer

Pulec is:

  • Using Python for 6 years, last year professional with attending few lectures, rest is self tought and experience.
  • Education: High School of Electronics (bad grades) && Unfinished Organic Agriculture
  • Using Arch Linux for 6 years and working in Red Hat
  • Likes: Open Source anything (Software, Games, Blueprints), Gardens inspired by Nature & wine

Contents|Plan of education

  1. Intro presentation; Crash Course through all basics of http:https://learnpython.org/ with few examples in ipython notebook
  2. First useful program, having a problem, solving it, using the solution
  3. Practice, Practice, Practice..tbd!
  4. Time for a project of yours.
  5. More theory, useful tips, delving deeper into topic X (Where X is whatever problem students will have)
  6. Where to go next, final questions, summary
  7. tbd..packaging
  8. tbd..sumary

Install Python

Prepare IPython Notebook

Ideal way to share code is via Jupyter Notebooks, the ipynb files in this repo are what we went/will go through in YouTube streams.

It can run code snippets or whole programs in organized form and allows to make nice documents with Markdown notes inside.

Making graphs and other things which requires some 'web magic' is easy in these notebooks compared to regular shell.

Jupyter@archwiki:

Jupyter is a project which produces browser-based interactive environments for programming, mathematics, and data science. It supports a number of languages via plugins ("kernels"), such as Python, Ruby, Haskell, R, Scala and Julia. Jupyter Notebook is the traditional and most stable application. JupyterLab has a new interface and is more suitable for working with larger projects consisting of multiple files. JupyterLab is in beta as of February 2018.

Sane way

On Arch just install jupyter and you can run jupyter notebook to start the server and browse ipynbs in this repo.

Virtualenv way

Other way is virtualenv (Arch: extra/python-virtualenv) which will probably work on most systems and might be interesting to learn if you haven't done this before

Create one in any directory by running:

virtualenv edu

where edu is the folder which will be created. Activate it by running source edu/bin/activate and then do

pip install jupyter

which will install close to 40 packages, or you can do the same by running

pip install -r requirements.txt

Then run:

jupyter notebook

And open one of the files with ipynb extensions.

Start using Python:

Just dive in, you can read about it later

Read something:

Now when you have some idea how its used try reading something

Books:

Watch Videos:

Additional Interactive tutorials:

Practices

For practice try:

  1. Try to write a script(program) where you declare 2 numbers to variables and it compares what is larger, what is smaller or if its equal. Print out some message for each situation and try all different test cases (first number larger, first number lower, equal numbers)
  2. More to come...

Links

Communities:

Corey's beginners tutorial was recently posted on reddit.com/r/learnprogramming/comments/6bxdut

Also visit:

  • pyvideo.org or search for pycon on youtube for interesting lectures

Cheatsheets

IPython and Jupyter Notebook

Deeper reading

Libraries overview

Machine Learning video Tutorials

Web

Electronics