Python is a high-level programming language that is easy for everyone to learn due to its simple syntax.
Beginners will take a shorter period of time to be up and running!
It is widely used in web and APIs development, cryptography, games development, scripting (automation) tasks, artificial intelligence, data science, web scrapping (crawling) and many other areas.
In this blog post, I will explore the areas you need to cover all the way from beginner, intermediate and into advanced level. Thereafter, I will also highlight various specialization areas that you may need to look at depending on your area of interest.
I will also highlight some of the popular free Python learning resources.
The best practice on how to master Python programming just like any other programming language is to ensure you execute one or more project after each level before proceeding onto next levels. Think of any idea that you can implement using the concepts you have covered after during the completed level and make it you project.
1. Beginner Level
At this level ensure you cover and understand the following:
- Application areas of Python
- Downloading and Installing Python
- User interfaces or IDEs like the ones listed below. Pick and use one of your desired IDEs while working with Python:
- Program structure
- Interactive shell
- Executables or script files
- Variables
- Data types
- Conditions
- Chained conditions
- Control flow
- Loops and Iteration
- Data structures ( Lists, Tuples, Sets and Dictionaries)
- Functions
- Common Methods
- File input/output
This gives you a good base but before you proceed onto the next level, you have a milestone checkpoint (a project!).
Beginner Level Project : Think of a project or task you can accomplish using the concepts you have covered so far.
2. Intermediate Level
Here you need to explore the following key aspects of Python programming language:
- Object Oriented Programming (classes and object, Encapsulation, Inheritance and Polymorphism)
- Lambda functions
- *args AND **kwargs in function definitions
- pip (package installer for Python)
- Virtual programming environments
- Modules
Intermediate Level Project : Think of a project or task you can accomplish using the concepts you have covered so far including the beginner level concepts.
3. Advanced Level
Concepts you need to cover and understand:
- Decorators
- Generators
- Testing (unittest, nose(or nose2) and pytest)
- PEP 8 - Styling Guide for Python code
- Packaging your python application
- Cython
Advanced Level Project : Think of a project or task you can accomplish using the concepts you have covered so far all the way from beginner to the advanced.
4. Specialization Areas
After going through basic, intermediate and into advanced levels, you may decide to choose one or more of the areas to go deeper into the key application areas of Python programming language.
4.1 Web and APIs development
In web development explore the following Python web frameworks:
- Flask (with Jinja2)
- Django
- FastAPI
- Pyramid
- TurboGears
- CherryPy
- web2py
- Bottle
- AIOHTTP
- CubicWeb
- Dash
- Falcon
- Giotto
- Growler
- Hug
- Morepath
- Pycnic
- Sanic
4.2 Cryptography
We have several libraries in Python that provides cryptographic recipes and primitives to python developers:
4.3 Games development
For games development enthusiasts, Python provides the following libraries / frameworks:
4.4 Scripting (automation) tasks
In case in systems administration, you will need to create Python code in files, make the files executable.
This helps to automate routine tasks.
4.5 Artificial Intelligence(AI)
Let's look at the libraries / frameworks that Python offers for AI areas: Machine Learning (ML), Compute Vision, Natural Language Processing (NLP), Neural Networks, Robotics, Fuzzy logic and Expert systems.
4.5.1 Machine Learning
4.5.2 Computer Vision
- fastai
- OpenCV
- SimpleCV
- Dockerface
- imutils
- IPSDK
- Keras
- matplotlib
- scikit-image
- PyTorchCV
- Python-tesseract
- OpenFace
- Vigranumpy
- face-recognition
- albumentations
4.5.3 Natural Language Processing
4.5.4 Neural Networks
4.5.5 Robotics
- Robot Framework
- Pyro (Python Remote Objects)
- DART (Dynamic Animation and Robotics Tookkit)
- PyRobot
- PyDy (Python Dynamics)
- SOFA (Simulation Open Framework Architecture )
- Klamp't (Kris's Locomotion and Manipulation Toolkit)
- Pybotics
- Sinocos
- iDynTree
4.5.6 Fuzzy Logic
4.5.6 Expert Systems
4.6 Data science
4.7 Web scrapping (crawling)
As web is text-based platform, Python has libraries for working with JSON, HTML, XML and other formats.
4.8 GUI Based desktop applications
In order to develop desktop GUI applications, Python provides the following capabilities:
5 Learning Resources
While learning, choose a particular resource and stick to it. Avoid hopping from one learning resource to the the other. Below I am sharing some of the common Python learning resources.
5.1 Websites
- Automate the boring stuff
- Freecodecamp
- geeksforgeeks
- Tutorialspoint
- studytonight
- javatpoint
- sololearn
- w3schools
- guru99
- Pythonspot
- Learnpython
- Python Tutor
- Full Stack Python
- Programiz
5.2 Youtube Channels
5.3 Books
Beginners
Intermediate
5.4 Coding Practice
For code challenges and practices you can check out the following websites:
6. Python Project Ideas
You can check out below list of project ideas that you can try to using Python programming language.
- Quiz app
- Calculator
- Web automation
- Classic snake game
- Web crawler
- Music Player
- Instagram Bot
- Twitter Bot
- Reddit Bot
- Alarm Clock
- Image downloader
- Face recognition
- URL shortener
- File explorer
- Notification system
- File rename tool
- Password generator
7. Free platforms to host your test applications
Incase you need to host your trial applications, check the below free platforms:
Conclusion
Key takeaways:
- Practice, practice and practice! code everyday.
- Choose a study resource that suits you and stick to it.
- Do projects before moving to the next level.
- Document your learning journey in a blog since you learn more when you share.
- Use code version control like Git/Github, bitbucket etc for all your code that you write.
- Never stop learning.
Feel free to leave comments. Thank you!
Oh, I almost forgot, please checkout an instagram-video-and-photos-downloader I created. It is one of my projects.
Top comments (1)
Great post.
For the intermediate level projects: I would recommend the learner focus on real business problems as compared to hobbies. For example, a project such as 'getting the nouns in input, using python' could be replaced by, ' a python project to keep track of mispelled words when learning a foreign language'