Show HN: Pyflo – a free, interactive guide to learning Python (pyflo.net)
Hi Everyone, I am a CS educator who has taught a variety of university courses, including many on introductory Python programming. Over the past few years, I've written down a number of Python programming lessons and has culminated into Pyflo.net. This tool is a completely free, introductory guide to learning Python. It is more-or-less an intro programming textbook, but with a few twists, including:
* It is totally free. You don't even have to give me your email to use it
* The lessons are short and modularized
* It's interactive, containing embedded questions that provide instant feedback throughout.
My hope is that this can be a useful resource for those looking to learn Python. Feel free to use yourself, or share with those you think would be interested.
Feedback is very much welcome and appreciated.
35 comments
[ 1.8 ms ] story [ 86.1 ms ] threadEdit: clearly I'm illiterate, a closer inspection shows iteration brought up several times.
I have ADD and have a hard time looking at large blocks of text unless I have something on the line. But the content is super solid.
- I really like the flowchart arrangement. Great idea for a top-level organization scheme! I like the way things branch out but then come back together for regularly spaced "Check points".
- Everything seems to work really well on mobile. Nice!
- There doesn't seem to be a general way to progress on to the next lesson at the bottom of each topic page. Am I missing something? Or is it your intention to have students return to the flowchart between every lesson? If so, it would be nice to have a button that just goes there (and, I would imagine, scrolls down the flowchart page to their last accessed lesson). "Back" does go to the Flow page IF that's where you immediately navigated from, but in the first two pages you actually progress on to the next lesson by clicking a link—so "Back" goes back to that page, not up to the flowchart page.
- I'm not sure about the UI/UX decision of your "Incomplete"/"Complete" indicator at the bottom of each lesson. It's odd to have a greyed out button that says "Incomplete" that changes to filled in and the word "Complete" when clicked/tapped. Also, the "Back" button looks exactly the same, but is a navigation button, not an updating status indicator. So there's some conflation of different functions with the same form there—could be confusing. The "Bookmark" button is fairly clear, but the word "Incomplete" all by itself with no other explanations does not convey very clearly to me that I'm supposed to click on it in order to mark the lesson complete (I figured that out by trial and error). Maybe try "Complete" and "Completed" to match your "Bookmark" and "Bookmarked" in the other button?
The idea is that there isn't always just one "next" option, thus the idea would be to go back to the flowchatt to choose your next lesson. However, there's probably many (like you!) who just want to be taken to the next lesson and not hassle with the navigation - great input.
> I'm not sure about the UI/UX decision of your "Incomplete"/"Complete" indicator at the bottom of each lesson.
Thank you! I'm sure this is something that could be improved.
Your "Bookmark" button conveys very clearly what it is for and what it will do when I click on it. "Bookmark" is a verb and "Bookmarked" is a status.
So what about "Complete" for the greyed-out label and "Completed" for the green state? That would similarly make the deactivated button show an "Action" word—the exact action that will happen when I click it—and the activated state a "Status" word (that I can intuitively return to its original status by clicking again).
I thought the whole point of the flowchart was to have a clear progression:
- If there is only one next lesson show it.
- If there's more than one choice for the next lesson show both.
- If the end of a branch is reached, show the other next lesson(s) at the last branch minus the current branch.
This could definitely be improved by:
* explaining what is in graphics.py, and that it builds on the standard library
* moving the download link in the introduction chapter for graphics
* having a license
I found a typo, should be 'than' rather than 'that' (maybe a link to a GitHub repo would make fixing such things easier).
In the section titled: What is Programming.
> However if we were to attempt to communicate to a computer how to make one, we would have to be much more specific that we were to Ryan.
Second sentence after the second list.
It's already really good but you're getting some great feedback below too.
IMO you should start with a very simple piece of Python code that does something actually useful. That's instant motivation.
It also gives you a concrete example to explain things with. It's 10x easier to understand things with concrete examples.
* "Binary Numbers" include a matching drag-and-drop question: pyflo.net/binary-numbers/ * List Indexing and iteration contains multiple choice questions, and a parsons-problem at the end: pyflo.net/list-index-iteration/
There are also several guided projects, which included embedded code editors powered by Pyodide (https://pyodide.org/). By the way, if there are any Pyodide devs lurking here, thank you!
Initial feedback: The writing, formatting, and overall presentation are very clear and the mini-quizzes are great for checking understanding.
I second the suggestions on the 'complete' button text. Also agree with cfiggers in that I was initially confused when I got to the end of an early lesson and then couldn't figure out how to go to the 'next lesson.' The 'back' button going back to the flowchart is what I wanted, but the combination of the color and text made it feel like that was the wrong direction.
Overall, this looks a lot like something I've been looking for, thanks!
Sounds like improving the "completion" feature and a "next" button need to be addressed soon. That will be taken care of this week.