A collection of free resources for self-studying coding in Python—the most widely used programming language in the world. See also PythonAI course by CoTAI to learn coding from scratch via interacting with AI.
Free courses
- Mathisis ebook.
- Code.org for absolute beginners & kids.
- PY4E: Python for everybody. With free video lectures, slides, and code.
- Kaggle Python course.
- Video lecture series with sample code by 2 Microsoft AI experts.
- Google’s Python class for people with a little bit of programming experience.
- MOOC from top universities including MIT, Harvard CS50, Harvard CS50 AI with Python.
- You can enroll and complete these courses to earn a paid/shareable certificate, or you can audit them to view the course materials for free: Cousera, DataCamp, etc.
- Other great sites: www.learnpython.org, geeks4geeks, etc.
Some useful hints for learning to code
- Super important skill: learn to debug.
- Read error message to know what’s wrong, where and why. Google search (e.g., within site StackOverflow) for solution.
- Only ask others for help after self-help. Include sample code and error message in your question. Practicing this skill will help you learn quickly!
- Visualize your code execution with this super useful tool: http://pythontutor.com.
- Super important ability: computational thinking (tư duy tính toán).
- Learn from the very efficient problem-solving strategies of computers:
- Decompose the problem into smaller & easier ones to solve.
- Find repeated patterns in the problem and exploit for more efficient solutions.
- Model complex problems in a unified, abstract way (for example using math equations) so that one solution is applicable for many problems.
- Define steps and procedures, like an algorithm, to realize the solution.
- Useful resources: take BBC mini-course, CS50 by Harvard, play game LightBot, học trên STEAM for Vietnam.
- Learn from the very efficient problem-solving strategies of computers:
- Super important knowledge: master the key concepts & principles of the field.
- Key concepts and principles are highly applicable in different situations and settings: they have great generalizability. Furthermore, core concepts and theorems are just a few to learn compared to a sea of methods and heuristics.
Heuristics come and go. Theorems stay forever!
- Apply useful mental models. For example, first-principles thinking or “reasoning from first principles”: the idea is to break down complicated problems into basic elements and then reassemble them from the ground up. It is one of the best ways to reverse-engineer complicated problems and unleash creative possibility.
- Key concepts and principles are highly applicable in different situations and settings: they have great generalizability. Furthermore, core concepts and theorems are just a few to learn compared to a sea of methods and heuristics.
- Super important mindset: exponential growth.
- Everyone can learn to code! Just practice, practice, and practice everyday.
- Build a solid foundation first; this is often very slow. But be patient, your time will come: some day you will accelerate rapidly due to exponential learning progress.
- Read growth mindset. Also learn how to learn.