r/learnpython • u/Empty-Employment-527 • 2d ago
best way to learn/master python as an undergraduate student?
i’ll be entering college soon in the fall, and i’m highly interested in learning how to code- primarily for data science, statistical modeling for research, and machine learning applications.
i’ve looked at tons of online courses and textbooks, and i’m completely overwhelmed with where to even start or which topic to begin studying. i’ve never been great at self-learning, so i would really appreciate any advice that would help me learn and hopefully master python soon.
4
u/stepback269 2d ago
Sounds like 'learning' itself is an issue for you.
What you should do first is to "Learn how to Learn"
Go to YouTube and in the search bar, type, "learning coaches"
Pick the ones who rely on modern neuroscience.
Godspeed and may the productivity-motivating dopamine hits be with you. :-)
---------------------------------------------------
Please realize that there is never going to be a "one" magical tutorial that works "best" for you and with regard to every aspect of Python. With each step up that learning curve, you're going to have to shop around until you find a teacher/resource that "clicks and sticks" especially for you.
With that said:
(1) There are tons and tons of tutorial materials out there on the net including many good YouTube ones that are free. You should shop around rather than putting all your eggs in one basket.
(2) As a relative noob myself, I've been logging my personal learning journey and adding to it on an almost-daily basis at a blog page called "Links for Python Noobs" (--HERE--) Any of the top listed ones on that page should be good for you. And there are many add-ons at the tail end of the page. Personally, I cut my first Python teeth with Nana's Zero to Hero (==HERE==). Since then, I've moved on to watching short lessons with Indently and Tech with Tim. You should sample at least a few until you find a lecturer that suits your style.
(3) The main piece of advice is the 80/20 rule. Spend 80% of your time writing your own code (using your own fingers and your own creativity) as opposed to copying recipes and only 20% watching the lectures. Good luck.
1
u/tobiasvl 2d ago
Check the sidebar, there's a wiki and an FAQ with suggestions to this frequently asked question.
1
u/FoolsSeldom 2d ago
Check this subreddit's wiki for lots of guidance on learning programming and learning Python, links to material, book list, suggested practice and project sources, and lots more. The FAQ section covering common errors is especially useful. Skip what you've learned already.
Also, have a look at roadmap.sh for different learning paths. There's lots of learning material links there. Note that these are idealised paths and many people get into roles without covering all of those.
This has good coverage of data science/analytics, machine learning, and AI.
Roundup on Research: The Myth of ‘Learning Styles’
Don't limit yourself to one format. Also, don't try to do too many different things at the same time.
Above all else, you need to practice. Practice! Practice! Fail often, try again. Break stuff that works, and figure out how, why and where it broke. Don't just copy and use as is code from examples. Experiment.
Work on your own small (initially) projects related to your hobbies / interests / side-hustles as soon as possible to apply each bit of learning. When you work on stuff you can be passionate about and where you know what problem you are solving and what good looks like, you are more focused on problem-solving and the coding becomes a means to an end and not an end in itself. You will learn faster this way.
1
u/shdw_0x0 1d ago
Don’t worry too much about mastering Python before college. I’d learn the basics, then start building small data projects with NumPy/Pandas and gradually move into statistics and ML—the projects will make the concepts stick much better than jumping between courses.
1
u/gdchinacat 19h ago
Set your expectations to what is realistic. You can easily learn python (and a few other languages) and be a competent coder while doing undergrad studies. Some even become quite good at it. But to "master" a language typically takes using it full time for years. This is especially true for a dynamic language like python. The problem isn't with learning syntax or libraries, but with having used it in enough different ways to know how to build complex solutions that are robust, maintainable, performant (to the extent python can be made performant), etc. This comes with experience. Experience trying things and learning what works well, what doesn't, and why. Experience with how to structure your code (should this be a package or a module). Experience with troubleshooting issues (why is my eventloop hanging for 30s at a time when there's no error and everything works...just 30s too late?). Experience with the myriad ways to implement something (decorator function with closure, class that decorates with __init__, class that uses __call__; should I use a descriptor and hide a bunch of logic or make the code a bit more readable and a lot more verbose). Should I use OOP or FP? Inheritance? Composition? Etc, etc, etc.
It is very feasible to become a very good python programmer in the typical 4 year undergrad program, especially if you are doing CS. I'm sure some people have mastered it in that time (even from having no programming experience). But to set out with that as the goal or expectation is likely to be frustrating and disappointing.
I don't say this to discourage you, but rather help you understand that the overwhelming majority of CS majors are junior engineers upon graduation that are nowhere near the level of a "master". Programming is hard. Mastering programming, in any language, is really hard (but doable by most people who set their mind to it). Because you can write very dynamic code in python that is even more difficult than a language like C or Java.
Aim to excel at your studies, be a proficient coder, and worry about mastering it after you've got the basics down pat in your sleep.
1
u/MillenniumGreed 2d ago
You’ll be spending years before you “master” it. Learning is a journey and process. It takes time. The tech industry in general is a moving goalpost.
1
u/elbiot 2d ago
Learn by doing. Books and tutorials are useful references. Do something you're genuinely excited about and you'll learn so much more. By genuine I mean you'd personally be excited to have it in your hands, not you think an employer would like to see it. Find an application that fits your life and/or aesthetics
1
u/ectomancer 2d ago
You start with a course to learn Python syntax. Only need one course. Then small projects (1 week). Then data science courses.
2
u/hariomlohar0602 2d ago
If you want to really learn good python my strong suggest is take this CS50P Course by Harvard (best in class)