Show HN: A 100% free and interactive Python course for coding beginners

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • futurecoder

    100% free and interactive Python course for beginners

  • Some highlights:

    - 100% free and open source (https://github.com/alexmojaki/futurecoder), no ads or paid content.

    - No account required at any point. You can start instantly. (You can create an account if you want to save your progress online and across devices. Your email is only used for password resets)

    - 3 integrated debuggers can be started with one click to show what your code is doing in different ways.

    - Enhanced tracebacks make errors easy to understand.

    - Useful for anyone: You can have the above without having to look at the course. IDE mode (https://futurecoder.io/course/#ide) gives you an instant scratchpad to write and debug code similar to repl.it.

    - Completely interactive course: run code at every step which is checked automatically, keeping you engaged and learning by doing.

    - Every exercise has many small optional hints to give you just the information you need to figure it out and no more.

    - When the hints run out and you're still stuck, there are 2 ways to gradually reveal a solution so you can still apply your mind and make progress.

    - Advice for common mistakes: customised linting for beginners and exercise-specific checks to keep you on track.

    - Construct a question that will be well-received on sites like StackOverflow: https://futurecoder.io/course/#question

    - Also available in French (https://fr.futurecoder.io/), Tamil (https://ta.futurecoder.io/), and Spanish (https://es-latam.futurecoder.io/). Note that these translations are slightly behind the English version, so the sites themselves are too as a result. If you're interested, help with translation would be greatly appreciated! Translation to Chinese and Portuguese is also half complete, and any other languages are welcome.

    - Runs in the browser using Pyodide (https://pyodide.org/). No servers. Stores user data in firebase.

    - Progressive Web App (PWA) that can be installed from the browser and used offline.

    -----------

    A frequent question is how does futurecoder compare to Codecademy? Codeacademy has some drawbacks:

    - No interactive shell/REPL/console

    - No debuggers

    - Basic error tracebacks not suitable for beginners

    - No stdin, i.e. no input() so you can't write interactive programs, and no pdb.

    - No gradual guidance when you're stuck. You can get one big hint, then the full solution in one go. This is not effective for learners having difficulty.

    - Still on Python 3.6 (futurecoder is on 3.10)

    I am obviously biased, but I truly believe futurecoder is the best resource for adult beginners. The focus on debugging tools, improved error messages, and hints empowers learners to tackle carefully balanced challenges. The experience of learning feels totally different from other courses, which is why I claim that if someone wants to start learning how to code, futurecoder is the best recommendation you can make.

  • community

    Repository for public issue-tracking and discussions (by scrimba)

  • > One interactive component that we use heavily that might interest you for futurecoder is what we call an interactive walkthrough: https://www.learncs.online/best#interactive-walkthroughs. It's like a video but preserving the interactive nature of a playground. Students really like them, and enjoy the opportunity to hear multiple explanations for the same concept when they're stuck. (We're working on popping this out for external use, and have a library in the works that you may be able to integrate with a bit of work.)

    Awesome! I've only seen one other place doing something similar: https://scrimba.com/

    This is definitely better than ordinary videos, and I like the point about multiple explanations. Although I do personally prefer that futurecoder rarely shows/tells without actually forcing users to run code and see for themselves, so they always have to be engaged. Even when they're told the exact code to run, they occasionally get asked to predict what the output will be, to make sure they're paying attention.

    > I have no idea what your educational background is, but if you ever want a stable position that supports your educational innovation, consider applying for a teaching faculty job: https://go.cs.illinois.edu/teaching-faculty-hiring. (Currently our openings require a Masters degree.) We need more creators in computer science education.

    It'd be great if I could be paid to work on futurecoder or something similar full time, and I've tried finding a way to make that happen before. But now I've just started a dream job at https://ought.org/ (working with AI, not education) and it'd be very hard to compete with that.

    I don't have a Masters and I prefer to create things that are infinitely reusable rather than teaching directly. But thanks for the suggestion!

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • birdseye

    Graphical Python debugger which lets you easily view the values of all evaluated expressions

  • > Is there any way for users to construct their own multiple stage tutorials?

    I really hope some kind of GUI to do that can exist one day, but it's definitely a complicated feature that I'd need help from contributors to build. Same for graphical output.

    > (It looks like we can do single questions)

    I think you're talking about the question wizard. That's for helping people to write good quality questions about their own struggles to post on StackOverflow and similar sites. It's not for making 'challenges' for others to solve.

    > Incredibly generous of you to make it open source!

    Thank you! I'm really trying to improve the state of education and make the world a better place. I hope that in addition to directly helping users, I can inspire other educators, raise the bar, and help them build similar products. To this end, futurecoder is powered by many open source libraries that I've created which are designed to also be useful in their own right:

    Debuggers: these are integrated in the site but also usable in any environment:

    - https://github.com/alexmojaki/birdseye

  • snoop

    A powerful set of Python debugging tools, based on PySnooper (by alexmojaki)

  • cheap_repr

    Better version of repr/reprlib for short, cheap string representations in Python

  • - https://github.com/alexmojaki/cheap_repr (not a debugger, but used by the above two as well as directly by futurecoder)

    Tracebacks:

    - https://github.com/alexmojaki/stack_data (this is also what powers the new IPython tracebacks)

  • stack_data

  • - https://github.com/alexmojaki/cheap_repr (not a debugger, but used by the above two as well as directly by futurecoder)

    Tracebacks:

    - https://github.com/alexmojaki/stack_data (this is also what powers the new IPython tracebacks)

  • executing

    Get information about what a Python frame is currently doing, particularly the AST node being executed

  • - https://github.com/alexmojaki/executing (allows highlighting the exact spot where the error occurred, but also enables loads of other magical applications)

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • pure_eval

    Safely evaluate AST nodes without side effects

  • - https://github.com/alexmojaki/pure_eval

    You can see a nicer presentation (with pictures) of the above as well as other projects of mine on my profile https://github.com/alexmojaki

    Libraries which I specifically extracted from futurecoder to help build another similar educational site https://papyros.dodona.be/?locale=en (which does have a canvas output, at least for matplotlib):

    - https://github.com/alexmojaki/sync-message (allows synchronous communication with web workers to make input() work properly)

  • sync-message

  • - https://github.com/alexmojaki/pure_eval

    You can see a nicer presentation (with pictures) of the above as well as other projects of mine on my profile https://github.com/alexmojaki

    Libraries which I specifically extracted from futurecoder to help build another similar educational site https://papyros.dodona.be/?locale=en (which does have a canvas output, at least for matplotlib):

    - https://github.com/alexmojaki/sync-message (allows synchronous communication with web workers to make input() work properly)

  • comsync

  • pyodide-worker-runner

  • python_runner

    Helper for running python code indirectly

  • iodide

    Literate scientific computing and communication for the web

  • Thanks! FWICS, futurecoder (and JupyterLite) may be the best way to run `print("hello world!")` in Python on Chromebooks for Education and Chromebooks with Family Link which don't have VMs or Containers (!).

    Looks like `Ctrl-Enter` works, just like jupyter/vscode.

    iodide-project/iodide > "Compatibility with 'percent' notebook format" which works with VScode, Spyder, pycharm, https://github.com/iodide-project/iodide/issues/2942:

      # %%

  • jupyterlite

    Wasm powered Jupyter running in the browser 💡

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts