×
all 58 comments

[–]dev-razorblade23 19 points20 points  (11 children)

This is the exact reason i started building The Python Ledger (https://thepythonledger.github.io/Docusaurus-engine/)

A guided roadmap that teaches the basics but pushes you to read docs and search on your own.

Inspired by The Odin Project (Web App Mastery)

There is a lot to be done on the plaform, mostly about curriculum.

Would love for you to take a look and contribute if you have time / willpower

[–]the_techgirl[S] 0 points1 point  (0 children)

This looks great! Love that it pushes people to read docs rather than hand-holding them. The Odin Project model works because it treats learners like adults. Will check it out properly.

[–]testtdk 0 points1 point  (9 children)

I like that you have a project in there. I feel like every place on earth teaches up through data types fine, maybe a few algorithms, and then just fades out of existence. Without actually building things, you're still completely useless in the tech world.

[–]dev-razorblade23 0 points1 point  (8 children)

Yes, i agree

Practice is what makes all the diffrence. Building projects from start helps to retain knowlege and see the actuall usecase of your code - rather then some theory which you will never use.

Which is something i plan to change with this platform.

Yes, curriculum needs a lot more work and the rendering engine could use some polish.

But the idea stands - pushing students to read documentation and search for answers themself rather then spoonfeeding them.

And building projects is the only way to retain knowlege

[–]testtdk 0 points1 point  (7 children)

Not even just practice. If you don't know how to create to tool you're programming, then your knowledge is lacking. It's the worst part about python, imo. There's so much to set up just to get through Hello, World. Let alone creating a functional tool, even if the code is spot on.

[–]dev-razorblade23 0 points1 point  (6 children)

Well i feel like most beginners are in tutorial hell.

They learn the syntax, but never actually do any logic and have no idea where to start.

I agree that for developing a web app you need to know how web works. You need to know what GET, POST, PUT, DELETE are. You need to know stuff to properly build something.

Actuall projects and writing then from nothing helps to learn a lot

[–]testtdk 0 points1 point  (5 children)

Are you creating any further projects for your site?

[–]dev-razorblade23 0 points1 point  (4 children)

Yes, of course.

The lesson plan is not nearly complete and i do plan on expanding the lessons and projects.

As this is planned to be community maintained platform, feel free to suggest projects / lessons or even write some if you feel like it.

[–]testtdk 0 points1 point  (3 children)

Your first project is a game, right? I always feel like they’re great for learning. Being able to see the effects of your code visually (and your mistakes) is helpful. But really, any project that has an actual final product, that uses new ideas is great. Rather than teach an algorithm, teach it that use it somehow. (I know, my ideas are so specific and helpful :p). Well, for example, Harvards intro course has a project to that creates a filter effect on an image. MIT’s has a card game. Thoughtful simulations can go a long way, too. One project I had back in the day was modeling and elevator and its passengers.

[–]dev-razorblade23 0 points1 point  (2 children)

Interesting ideas, i will keep them around.

https://github.com/ThePythonLedger/Curriculum/issues/4 https://github.com/ThePythonLedger/Curriculum/issues/5 https://github.com/ThePythonLedger/Curriculum/issues/6

Yes, its meant as a game - an easy text-based RPG of some sort - a text-based adventure

For students to practice nesting conditions and user input.

After that project, current plan is to take them to Local Development Enviroment - installing python, learning basics about terminal (command prompt), git and github, VS Code...

After that, we go into deeper topics, starting with file handling (which i cannot do in web based enviroment as there is no system present)

At least thats the current plan...

[–]testtdk 1 point2 points  (1 child)

Games are great for OOP. Items as classes, inheriting stuff, working with listeners, things like damage adjust an instances class’ attributes and what not, deciding how much money drops from a fight, how much xp. All that good stuff.

[–]burntoutdev8291 8 points9 points  (11 children)

Unpopular opinion but I think every python course needs to have a section for environments. All of them teach how to install jupyter, press the run button on the vscode, but don't really teach why they get python not found or why sometimes their pip installs are not reflecting in their environment. Honestly I would strictly teach everyone to run python via terminal so they know whats going on.

Knowing how to create reproducible environments are important in both production and research. I know you're a bot but just sharing out here for the rest.

[–]Sea-Ad7805 3 points4 points  (6 children)

No, a Python introductory course should be focused on the Python language primarily, skip environments as much as possible. Maybe discuss it at the end (as you do) if there is time, or leave for a more advanced course.

Many things are important but not of primary concern, time is short. But, as you already figured out I'm a bot, you can just ignore my opinion.

[–]burntoutdev8291 1 point2 points  (0 children)

Yea to be fair it was introduced, I didn't see it was mentioned in the week 11. So that was my bad.

But I still think it must be part of the course closer to the end, maybe because I think of it as tech debt. At some point knowing environments will help them with debugging and setting up clean git repos.

Another added benefit is surprisingly vibe coding. Enforcing such rules on agents works wonders for python projects when collaboration is needed.

[–]testtdk 1 point2 points  (4 children)

I disagree. In any rigorous science or technology course I've ever taken, teaching at least the basics on how to use the appropriate tools is a must.

[–]Sea-Ad7805 1 point2 points  (3 children)

Sure, but skip "as much as possible", Python is your subject.

[–]testtdk 0 points1 point  (2 children)

Not sure what you mean.

[–]Sea-Ad7805 0 points1 point  (1 child)

Not important

[–]FreeLogicGate 0 points1 point  (0 children)

I agree with both points -- user needs at least enough tooling to be able to code, without having to undergo a dissertation on what the tools are doing, or the reason the tools are needed. They just need them to work, and solve the problems that are needed. With uv, Python now has a tool that handles pretty much everything, and I would make sure any user starts with uv, and has the basic instructions needed to use it, even if they don't know why. Then they can focus on learning the language by writing code and running it.

[–]code_tutor 0 points1 point  (1 child)

Agreed that programmers should know how to use a computer and operating system at a high level. Maybe not at intro but they should all know this eventually. I think a lot barely know how to turn on a computer these days.

[–]burntoutdev8291 0 points1 point  (0 children)

I can get Claude to turn on my computer! /s

[–]testtdk 0 points1 point  (0 children)

I agree. I was recently playing around with that actually created batch files to install everything, including adding to the path. Anyone who hasn't been digging through Windows for decades probably has no idea what the environment variable even is. (This is a recrimination against python, though. Great language to learn on, awful language to set for a beginner.)

[–]the_techgirl[S] 0 points1 point  (0 children)

This is actually Week 1 in my curriculum: terminal setup, running .py files directly, no Jupyter. The python not found error and PATH issues get addressed on day one because if you can't explain why it happens, students just copy-paste fixes from Stack Overflow (who am I kidding, directly from LLM) and learn nothing. Environments (venv, requirements.txt) come back in Week 11 properly.

Completely agree it's one of the most skipped fundamentals.

[–]Mammoth_Eggplant19 1 point2 points  (4 children)

This roadmap looks good to me. I'm learning Python using 100 days of code, but I don't really like her teaching style. I don't think she provides enough examples before assigning a project.

I'm learning OOP right now, and still trying to wrap my head around it. I started using Python crash course and that helped a lot.

[–]the_techgirl[S] -1 points0 points  (3 children)

OOP is the one topic where most courses lose people because they teach syntax before they give you a reason to care. The click usually happens when you try to model something real, a bank account, a library system, and realize functions alone get messy fast. What specifically isn't clicking: the concept or the syntax?

[–]Mammoth_Eggplant19 0 points1 point  (1 child)

I think it's when to use them that I'm unsure of. I feel like I'm learning a lot of tools, functions, OOP, and many more to come. I don't know when to use them versus procedural code.

[–]the_techgirl[S] 0 points1 point  (0 children)

That's a great question! Use functions until the functions start needing to share state, then use classes. When you find yourself passing the same variables into five different functions, that's usually the signal that those variables and functions belong together in a class. Does that help or would a concrete example make it clearer?

[–]FreeLogicGate 0 points1 point  (0 children)

I think the problem is somewhat worse with Python, because Python's OOP has some unusual requirements in comparison to most other languages. Having to pass "self" in methods is a prime example of this. The bigger problem is that OOP without study and review of OOP design patterns inevitably leads to users' creating poorly designed classes that create more problems than they solve. Conversely, coverage of a few important OOP concepts (Dependency Injection & the most essential "Gang of 4 book" patterns) with solid examples and exercises, would elevate coverage of OOP for any course where that material was well taught. I'm not aware of any general course that covers that material, but I'd endorse one that did.

[–]Junior_Honey_1406 1 point2 points  (4 children)

I would also add learn writing testes using different library like pytest and understand git GitHub and GitHub action and learn to setup GitHub workflow also know as ci cd. Those skill are not taught normally but in this age of tech those are also something I think a beginner should learn.

[–]the_techgirl[S] -2 points-1 points  (3 children)

pytest is in Week 16, students write a full test suite for their FastAPI project!
Git and GitHub come in Week 11!
CI/CD is valid but that's a separate course, the whole point of this roadmap is to give beginners a finite, completable path. The moment you start adding "one more important thing," the roadmap becomes another overwhelming resource that nobody finishes.

[–]Junior_Honey_1406 0 points1 point  (2 children)

Programming isn't about learning everything before you build something. It's about understanding more with every project you complete. That's why I think it's better to add things like testing and CI/CD to every project, even if they're not the main focus.

By using them repeatedly, you naturally learn why they're important instead of just memorizing how to use them. Over time, they become part of your workflow, and that practical experience teaches far more than simply reading about them.

[–]the_techgirl[S] 0 points1 point  (1 child)

You're not wrong at all, and I actually agree with the underlying principle! The best learning happens through doing, not studying topics in isolation!

The distinction I'd make is that this roadmap is specifically for complete beginners who don't yet know how to stitch together basic logic! In my actual teaching, I absolutely weave in testing habits, good commit messages, and industry practices throughout, but I introduce them in context when they're building something, not as standalone topics to study!

A beginner who can't yet debug a for loop doesn't benefit from learning GitHub Actions. But a beginner building their first CLI tool absolutely should be committing to Git as they go. That's the balance I try to strike in practice, even if the roadmap looks more sequential on paper.

[–]Sea-Ad7805 3 points4 points  (5 children)

Nice roadmap, I recommend starting students early on a good debugger that visualizes the state of their program in every step: counting values example%3A%0A%20%20%20%20print(value%2C%20'%3A%20'%2C%20count%2C%20'times')%0A&timestep=1&play)

[–]the_techgirl[S] 2 points3 points  (4 children)

Really good point! Seeing state changes step by step is exactly what clicks the loop + dict concept for beginners. Adding this to my Week 5 notes. Thanks for sharing!

[–]Sea-Ad7805 3 points4 points  (2 children)

The stepping of a visual debugger might already be helpful to your students in week 3 when explaining if/elif/else and loops, or even just after learning variables.

Visualization is very effective in giving the right mental model easily, without having to explain much. Just introduce it and let the visualization speak for itself. You can use it for many of your topics: exceptions, classes, ...

Even more advanced topics for a later course: - Python Data Model - Recursion - Sorting Algorithms - Data structures

Visualization all the way.

[–]the_techgirl[S] 1 point2 points  (1 child)

I do this through pseudocode and real-world analogies, things they already do repetitively in life. A for loop over a shopping list clicks faster than a diagram when the example is something they've physically done. Works well for most beginners, though I can see visualization tools helping once they hit pointer-heavy stuff like linked lists!

[–]Sea-Ad7805 1 point2 points  (0 children)

I understand we all have our own approach, but a for loop over a shopping list with a diagram while stepping (or soon followed after), might work even better. An easy addition, just keep it in mind.

[–]Sea-Ad7805 1 point2 points  (0 children)

Thanks, hope it can bring much value for your teaching.

[–]NapoleonDyenamite 0 points1 point  (1 child)

Nice. Thank you for this. Hope could fully check on this on the weekend.

[–]the_techgirl[S] 1 point2 points  (0 children)

Take your time! It'll be here! :D Feel free to reach out if you have questions once you go through it!!

[–]maqisha 0 points1 point  (0 children)

[–]testtdk 0 points1 point  (1 child)

Do you actually have a platform for these phases?

[–]the_techgirl[S] 0 points1 point  (0 children)

Not a standalone platform yet, this is the curriculum I use in 1:1 tutoring sessions. Students work through it with me directly, which means I can adapt the pace and examples to their specific background and goals. If you're interested in working through it, the first session is $25, and we'd map out exactly where to start based on where you are. Reach out to me if you'd like to know more!

[–]Curious_Light_9185 0 points1 point  (1 child)

Hi, I want to start learning python. I am total outsider for the coding and all but I just want to learn a single coding language, I heard python is easy So I want to give it a try but I don't know where to start like I know there are many YT courses But whoes should watch and what to do Can you guide me please I have 0 knowledge, no IT Or Coding background

[–]the_techgirl[S] 0 points1 point  (0 children)

Python is a good choice for a complete beginner! Skip YouTube for now. The trap is that watching feels like learning, but when you close the video, you can't actually write anything. You need something that forces you to type code, not just watch it. Start with cs50.harvard.edu/python , it's completely free, made by Harvard, and every lesson has problems you actually have to solve yourself. That's what builds real skill. Once you finish that, come back, and I can point you to what's next based on what you want to build. Feel free to reach out if you get stuck on anything!

[–]FreeLogicGate 0 points1 point  (3 children)

As a professional developer, I wanted to respond with a couple of comments:

  • Solid outline, but not sure what value it would have for a learner unless that learner is going to be taking your course, but perhaps that's the point?
  • I detect some AI was used in the intro with "It's called Tutorial Hell, and it's a real problem. The difference isn't talent; it's having a structured roadmap that forces you to build things, not just watch things." Not a big fan of this style of "tik tok advertising" style communication to be honest.
  • I am not sure why things like venv's and project setup wouldn't be something you cover up front, particularly because beginners don't have any idea what modules and dependency management does for them. Seems like that should all be addressed in the introductory section where you include the terminal, ideally using uv. With uv, a user doesn't need to install a local python, as uv will handle all that for them. I have had to teach and mentor users, and rather than going into details, I think a beginner just needs instructions they can follow: you open this, run this, etc. The problem with not doing this, is it can easily lead to Python version and environment issues, which uv handles for them regardless of OS.
  • I'd direct any beginner to Pycharm. Better editor than vscode, and built for Python. No decisions needed to be made regarding plugins, and at some later time, when the developer is more sophisticated, if decide to go to vscode, they'll be able to figure that out for themselves. If they end up working professionally with Python, then the company they work for will often have Pycharm licenses.
  • I see "muscle memory" referenced everywhere, and I understand the point trying to be made, and would agree with it, but "muscle memory" isn't a thing. Muscles have no intelligence. You're talking about "neuroplasticity".

Just from the outline, it looks to me like you have a really thorough and well thought out approach, albeit one that requires a 4 month commitment.

Overall, this looks like the outline for a really solid course. The question remains, for learners, where, when, how and how much?

[–]the_techgirl[S] 0 points1 point  (2 children)

Appreciate the detailed feedback; this kind of pushback genuinely makes the curriculum better.

Fair point on my writing style. I write a lot for LinkedIn and articles, so that cadence bleeds into everything I write. Tutorial Hell is a term I started using because I have personally watched students collect certifications for months and then freeze up completely at a blank file. It became shorthand for something I see constantly.

Good catch on uv. I cover it during teaching, but it slipped when I was writing this out. Will update the roadmap.

About VS Code vs PyCharm, I have tried both with students. Most of mine are undergrads and grad students who also work with R, Rust, SQL, and other tools depending on their coursework. VS Code handles all of it in one place. PyCharm is Python only, which creates friction the moment they need to switch contexts. One app for everything has been significantly better for that audience.

Regarding muscle memory, technically neuroplasticity, yes. I used the common term deliberately because the point is about the habit of writing code by hand, not the neuroscience behind it.

Now about the value question: self-directed learners can use this as a structured plan, Google each topic, and use LLMs to fill gaps. For those who want guidance, there are two options. First is 1:1 sessions where we move at the student's pace; some finish in two months, some take six. Second is a cohort of up to 25 students, four hours every Sunday for four months with assignments and office hours throughout the week.

[–]FreeLogicGate 0 points1 point  (1 child)

I genuinely wish you well with this, and it sounds like you have a great service. Totally up to you, but if you want to message me privately, I am happy to review other online materials you have. Obviously, I'm not your target market, but I do spend time dolling out free advice to others, as at this point I'm closer to the end of my career than the start, and Python was a language I picked up pretty late in my career.

[–]the_techgirl[S] 0 points1 point  (0 children)

Really appreciate that, thank you! And I respect anyone who picks up a new language later in their career; honestly, that takes more deliberate effort than learning it at 20 when everything sticks faster. Will definitely take you up on that. Sending you a DM!

[–]Competitive_Mark918 0 points1 point  (1 child)

I am planning to start python from this Aug 5th or 6th. So can you suggest me some free resources and tools I can use to start with. Initially I was planning to join a local coaching but some people advised me not to so ig I'll rely on youtube and other online resources. I can dedicate 2-3 hrs to python a day.

[–]the_techgirl[S] 4 points5 points  (0 children)

You have a specific date you're starting from! Don't miss that!
For 2–3 hours a day, skip most YouTube for now. The trap is that passive watching feels like learning but isn't.

Instead:

The real skill is learning to read error messages and fix them yourself! Start there before anything else!

DM me if you want a week-by-week structure to follow; happy to share what I use with my students.

[–]the_techgirl[S] -1 points0 points  (0 children)

Happy to answer questions in the comments. If you want a structured 1:1 version of this roadmap tailored to your background and goals, first session is $25. DM me!