From 0fb66a9009170bac733fa475be2da1966b186311 Mon Sep 17 00:00:00 2001 From: waldek Date: Thu, 5 May 2022 23:09:49 +0200 Subject: [PATCH] adds some final notes --- generate_toc.py | 1 + learning_git.md | 2 + outline.md | 144 ------------------------------------------------ readme.md | 13 +++++ what_is_next.md | 75 +++++++++++++++++++++++++ 5 files changed, 91 insertions(+), 144 deletions(-) create mode 100644 what_is_next.md diff --git a/generate_toc.py b/generate_toc.py index 21937ea..03d5699 100644 --- a/generate_toc.py +++ b/generate_toc.py @@ -8,6 +8,7 @@ INPUT = [ "learning_python3.md", "learning_python3_gui.md", "learning_git.md", + "what_is_next.md", ] CMD = "gh-md-toc" FILTER = "(#" diff --git a/learning_git.md b/learning_git.md index 6c19802..6ced7d7 100644 --- a/learning_git.md +++ b/learning_git.md @@ -215,6 +215,8 @@ You can see which branch and which commit that you push. ## Cloning the remote project into a new project +To arrive at the *startup screen* shown below you need to close all open projects. + ![screenhot](assets/git_pycharm_clone_00.png) ![screenhot](assets/git_pycharm_clone_01.png) diff --git a/outline.md b/outline.md index f0963f8..2df1eab 100644 --- a/outline.md +++ b/outline.md @@ -18,147 +18,3 @@ | 14 | | | 15 | | - -Table of Contents -================= - -* [What we'll learn](./learning_python3.md#what-well-learn) - * [Concepts](./learning_python3.md#concepts) - * [Syntax](./learning_python3.md#syntax) - * [Tools](./learning_python3.md#tools) - * [Writing code](./learning_python3.md#writing-code) - * [Running code](./learning_python3.md#running-code) -* [The python3 shell](./learning_python3.md#the-python3-shell) -* [Installing pycharm](./learning_python3.md#installing-pycharm) - * [Virtual environments](./learning_python3.md#virtual-environments) -* [Your first project](./learning_python3.md#your-first-project) - * [How to execute](./learning_python3.md#how-to-execute) - * [Simple printing](./learning_python3.md#simple-printing) - * [Try it](./learning_python3.md#-try-it) - * [Try it](./learning_python3.md#-try-it-1) - * [String replacement](./learning_python3.md#string-replacement) - * [String formatting](./learning_python3.md#string-formatting) - * [Some links to read up](./learning_python3.md#some-links-to-read-up) -* [Taking input](./learning_python3.md#taking-input) - * [Some functions are blocking](./learning_python3.md#some-functions-are-blocking) - * [Functions can return something](./learning_python3.md#functions-can-return-something) - * [Try it](./learning_python3.md#-try-it-2) - * [Functions can take arguments](./learning_python3.md#functions-can-take-arguments) - * [Try it](./learning_python3.md#-try-it-3) -* [Taking input and evaluation](./learning_python3.md#taking-input-and-evaluation) - * [Conditional logic](./learning_python3.md#conditional-logic) - * [Class string methods](./learning_python3.md#class-string-methods) - * [Try it](./learning_python3.md#-try-it-4) - * [Some links to read up on](./learning_python3.md#some-links-to-read-up-on) -* [Coding challenge - Currency converter](./learning_python3.md#coding-challenge---currency-converter) -* [Coding challenge - Celsius to Fahrenheit converter](./learning_python3.md#coding-challenge---celsius-to-fahrenheit-converter) - * [Some links to read up on](./learning_python3.md#some-links-to-read-up-on-1) -* [A text based adventure game](./learning_python3.md#a-text-based-adventure-game) -* [Creating your own functions](./learning_python3.md#creating-your-own-functions) - * [Functions that do something](./learning_python3.md#functions-that-do-something) - * [Variable scope](./learning_python3.md#variable-scope) - * [Functions that return something](./learning_python3.md#functions-that-return-something) - * [Try it](./learning_python3.md#-try-it-5) - * [Some links to read up on](./learning_python3.md#some-links-to-read-up-on-2) -* [Coding challenge - Pretty Print](./learning_python3.md#coding-challenge---pretty-print) -* [Using the standard library](./learning_python3.md#using-the-standard-library) -* [Coding challenge - Memento Mori calculator](./learning_python3.md#coding-challenge---memento-mori-calculator) -* [Writing your first library](./learning_python3.md#writing-your-first-library) - * [Try it](./learning_python3.md#-try-it-6) - * [How do we write libraries?](./learning_python3.md#how-do-we-write-libraries) - * [What is __name__ == "__main__"?](./learning_python3.md#what-is-__name__--__main__) - * [Anatomy of a program](./learning_python3.md#anatomy-of-a-program) - * [Try it](./learning_python3.md#-try-it-7) -* [While loop](./learning_python3.md#while-loop) - * [Try it](./learning_python3.md#-try-it-8) -* [Coding challenge - Guess the number](./learning_python3.md#coding-challenge---guess-the-number) - * [Try it](./learning_python3.md#-try-it-9) -* [Logical Operators](./learning_python3.md#logical-operators) -* [Lists](./learning_python3.md#lists) - * [Creating lists](./learning_python3.md#creating-lists) - * [List methods](./learning_python3.md#list-methods) - * [Try it](./learning_python3.md#-try-it-10) - * [Picking elements and slicing lists](./learning_python3.md#picking-elements-and-slicing-lists) - * [Try it](./learning_python3.md#-try-it-11) -* [For loop](./learning_python3.md#for-loop) -* [Coding challenge - Cheerleader chant](./learning_python3.md#coding-challenge---cheerleader-chant) -* [Coding challenge - ROT13](./learning_python3.md#coding-challenge---rot13) - * [Try it](./learning_python3.md#-try-it-12) -* [Coding challenge - Christmas Tree](./learning_python3.md#coding-challenge---christmas-tree) -* [List comprehension](./learning_python3.md#list-comprehension) -* [Handling files](./learning_python3.md#handling-files) - * [Reading from a file](./learning_python3.md#reading-from-a-file) - * [In-line way](./learning_python3.md#in-line-way) - * [Pythonic way](./learning_python3.md#pythonic-way) - * [Writing to a file](./learning_python3.md#writing-to-a-file) -* [Coding challenge - Login generator](./learning_python3.md#coding-challenge---login-generator) -* [Dictionaries as data containers](./learning_python3.md#dictionaries-as-data-containers) - * [Two dimensional lists](./learning_python3.md#two-dimensional-lists) - * [Dictionaries](./learning_python3.md#dictionaries) - * [Try it](./learning_python3.md#-try-it-13) -* [Coding challenge - Task manager](./learning_python3.md#coding-challenge---task-manager) - * [CSV based task manager](./learning_python3.md#csv-based-task-manager) -* [Text based databases](./learning_python3.md#text-based-databases) - * [Try it](./learning_python3.md#-try-it-14) -* [Now for some useful scripting](./learning_python3.md#now-for-some-useful-scripting) -* [Creating our own objects](./learning_python3.md#creating-our-own-objects) - * [First some abstract examples](./learning_python3.md#first-some-abstract-examples) - * [Try it](./learning_python3.md#-try-it-15) - * [Magic methods](./learning_python3.md#magic-methods) - * [Class inheritance](./learning_python3.md#class-inheritance) - * [Try it](./learning_python3.md#-try-it-16) -* [Coding challenge - Chalet floor](./learning_python3.md#coding-challenge---chalet-floor) - * [Now some practical improvements](./learning_python3.md#now-some-practical-improvements) - * [Improve the login generator](./learning_python3.md#improve-the-login-generator) - * [Improve the task manager](./learning_python3.md#improve-the-task-manager) -* [Infinite programs](./learning_python3.md#infinite-programs) - * [Logic breakdown of a simple game](./learning_python3.md#logic-breakdown-of-a-simple-game) - * [A non object orientated solution](./learning_python3.md#a-non-object-orientated-solution) - * [An object orientated solution](./learning_python3.md#an-object-orientated-solution) - * [Trivial pursuit multiple choice game](./learning_python3.md#trivial-pursuit-multiple-choice-game) - * [Introduction to the requests library](./learning_python3.md#introduction-to-the-requests-library) - * [Threading](./learning_python3.md#threading) - -Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc) - - -Table of Contents -================= - -* [tkinter](./learning_python3_gui.md#tkinter) - * [Tkinter helloworld](./learning_python3_gui.md#tkinter-helloworld) - * [Adding widgets](./learning_python3_gui.md#adding-widgets) - * [Try it](./learning_python3_gui.md#-try-it) -* [Coding challenge - Guess the number](./learning_python3_gui.md#coding-challenge---guess-the-number) - * [MVC design pattern](./learning_python3_gui.md#mvc-design-pattern) - * [Coding challenge - Login generator with GUI](./learning_python3_gui.md#coding-challenge---login-generator-with-gui) - * [Coding challenge - Trivial pursuit with GUI](./learning_python3_gui.md#coding-challenge---trivial-pursuit-with-gui) -* [WXpython](./learning_python3_gui.md#wxpython) - * [wxpython helloworld](./learning_python3_gui.md#wxpython-helloworld) - * [wxpython guess the number](./learning_python3_gui.md#wxpython-guess-the-number) - * [MVC design pattern](./learning_python3_gui.md#mvc-design-pattern-1) - * [Coding challenge - Login generator with GUI](./learning_python3_gui.md#coding-challenge---login-generator-with-gui-1) - * [Coding challenge - Trivial pursuit with GUI](./learning_python3_gui.md#coding-challenge---trivial-pursuit-with-gui-1) - -Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc) - - -Table of Contents -================= - -* [About](./learning_git.md#about) -* [Git via bash](./learning_git.md#git-via-bash) - * [Initialing a git repo](./learning_git.md#initialing-a-git-repo) - * [What's in this repo](./learning_git.md#whats-in-this-repo) - * [Adding and tracking content](./learning_git.md#adding-and-tracking-content) - * [The main workflow](./learning_git.md#the-main-workflow) -* [Git via Atom](./learning_git.md#git-via-atom) -* [Git via Pycharm](./learning_git.md#git-via-pycharm) - * [Starting a version controlled project](./learning_git.md#starting-a-version-controlled-project) - * [Creating an online repository](./learning_git.md#creating-an-online-repository) - * [Adding some changes to our local code](./learning_git.md#adding-some-changes-to-our-local-code) - * [Cloning the remote project into a new project](./learning_git.md#cloning-the-remote-project-into-a-new-project) - * [Updating the original project](./learning_git.md#updating-the-original-project) - -Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc) - diff --git a/readme.md b/readme.md index cf78c2a..40f86c1 100644 --- a/readme.md +++ b/readme.md @@ -162,3 +162,16 @@ Learning git Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc) + +What is next +================= + +* [Some random recommendations](./what_is_next.md#some-random-recommendations) + * [IDE](./what_is_next.md#ide) + * [Syntax](./what_is_next.md#syntax) + * [Concepts](./what_is_next.md#concepts) + * [Books](./what_is_next.md#books) +* [Linux](./what_is_next.md#linux) + +Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc) + diff --git a/what_is_next.md b/what_is_next.md new file mode 100644 index 0000000..822516c --- /dev/null +++ b/what_is_next.md @@ -0,0 +1,75 @@ +# Some random recommendations + +After our twenty days of python together you should have a solid understanding of the world of programming. +The foundation of all essential concepts should be clear enough to understand code when it is in front of you. +A blank slate could still pose a challenge but for that, here are some links and recommendations. + +## IDE + +Maybe try out some other IDE to see if you like the workflow or layout better. +I'm a big fan of [vim](https://en.wikipedia.org/wiki/Vim_(text_editor)), especially with some good [plugins](https://gitea.86thumbs.net/waldek/linux_course_doc/src/branch/master/modules/qualifying/learning_vim_configuration.md). +It's not an *easy* editor to learn but the payoff is pretty great. +For the more *normal* people I would recommend having a look at the following editors, in no particular order. + +* [atom](https://atom.io/) +* [vscode](https://code.visualstudio.com/) +* [brackets](https://brackets.io/) +* [spyder](https://www.spyder-ide.org/) for a more scientific approach + +Don't hop around too much though. +If you're a bit bored with pycharm it could be refreshing to *see* your code through a different window. + +## Syntax + +Start paying attention to the style guides that pop up in your IDE and follow up on them by reading the actual rules. +It can be good way to discover some do's and don't and help you to make your code more readable. +I would also recommend you start browsing online for some coding project in a field of your interests. +The bigger the project, the higher the chance it follows a specific style. +By reading and trying to understand their code, you'll start to build a better feel how to annotate, structure and make your code more readable. +As this is a *very* subjective topic I can only point you to projects I like. + +* [python-language-server](https://github.com/palantir/python-language-server) +* [python-osc](https://github.com/attwad/python-osc) +* [urwid](https://urwid.org/index.html) +* [natural language toolkit](https://www.nltk.org/) + +## Concepts + +We touched on *most* of the elementary concepts but we did go over them quite quickly. +Take your time to review all base concepts with small exercises and try to chain them together into bigger projects. +Some python specific *new* concepts I would highly advise you to look into are the following. + +* [decorators](https://realpython.com/primer-on-python-decorators/) +* [getters and setters](https://stackoverflow.com/questions/2627002/whats-the-pythonic-way-to-use-getters-and-setters) +* [concurrency](https://realpython.com/python-concurrency/) +* [threading vs async vs multiprocessing](https://leimao.github.io/blog/Python-Concurrency-High-Level/) +* [design patterns](https://python-patterns.guide/) +* [memory management in python](https://realpython.com/python-memory-management/) +* [virtual environments](https://docs.python.org/3/tutorial/venv.html) + +If you're interested in creating web applications I would start out with [bottle](https://bottlepy.org/docs/dev/), work your way up to [flask](https://www.fullstackpython.com/flask.html) and maybe move over to [django](https://www.djangoproject.com/). +You'll definitely need to learn [SQL](https://en.wikipedia.org/wiki/SQL) at some point but you can make your life easier by using [sqlalchemy](https://www.sqlalchemy.org/). + +If you want to dive deep into data science you'll need get comfortable with [numpy](https://numpy.org/), [pandas](https://pandas.pydata.org/) and [matplotlib](https://matplotlib.org/). +The easiest way to get comfortable with all of those is probably [jupyter notebook](https://jupyter-notebook.readthedocs.io/en/stable/index.html) which is an IDE that you use in your browser. +It's quite different from the pycharm you're used to but it's a very good tool to do data analysis. + +If robotics is your thing you might want to give [micropython](https://micropython.org/) a go. +I've never used it myself but I've heard good things about it. + +## Books + +These are some books I've actually read and enjoyed. + +* [mastering python design patterns](https://www.amazon.de/-/en/Kamon-Ayeva/dp/1788837487/ref=sr_1_2?keywords=python+design+muster&qid=1651784267&sprefix=python+des%2Caps%2C82&sr=8-2) +* [fluent python](https://www.amazon.de/-/en/Luciano-Ramalho-dp-1492056359/dp/1492056359/ref=dp_ob_title_bk) +* [design patterns](https://www.amazon.de/-/en/Erich-Gamma/dp/9332555400/ref=sr_1_9?keywords=gang+of+four+design+muster&qid=1651784413&sprefix=gang+of+%2Caps%2C68&sr=8-9) +* [learn python the hard way](https://learnpythonthehardway.org/python3/) +* [automate the boring stuff](https://automatetheboringstuff.com/) + +# Linux + +If you enjoyed the experience of the computers at the school you should give [linux](https://en.wikipedia.org/wiki/Linux) a go at home! +You used a [debian](https://www.debian.org/) machine with [GNOME](https://www.gnome.org/) as a graphical interface. +If you're really motivated you could read through my [introduction to linux](https://gitea.86thumbs.net/waldek/linux_short) course. +It's a work in progress and all feedback is welcome.