This is a platform/course for people to teach themselves programming in Python, especially complete beginners at programming.
You can try a demo here: https://futurecoder.herokuapp.com/
Currently this is a work in progress. While most of the groundwork is in place, there is a lot to do to make this a complete course ready for users. All kinds of help are needed and greatly appreciated - please consider contributing!
The course is a fully interactive 'book' which requires the user to run code in the provided editor or shell to advance:
The code at each step is checked automatically. Common mistakes can be caught and pointed out to the student. If needed, the student can get small hints to gradually guide them to the solution:
If they're still really stuck, they can reveal the solution bit by bit:
Tracebacks are more helpful than usual, highlighting the exact operation which failed and ensuring that the right amount of context is visible for multiline statements:
Several debuggers are provided, including snoop:
and Python Tutor:
.envin the repo root.
pythoncommand points to Python 3.8.
./setup.sh. This will:
npm installto download dependencies.
npm startto start the frontend development server.
The course consists of pages and each page consists of steps. Each step requires that the user runs some code that satisfies the requirements of that step. Once they succeed, they are shown the next step. Once they complete all the steps in a page, they are shown the "Next page" button to move forward. They can click "Previous" if they want to review completed pages, but it doesn't affect their progress - any code they submit is still evaluated against the current step, and refreshing the page returns to the last page. Hopefully these basics (without the formal details) should become intuitively clear to the user as they try to use the site.
To explore the course more freely:
At the beginning of the course only the shell is available to encourage quick exploration. After a few pages an editor is introduced to allow running full programs.
The course provides three debuggers to specially run code: snoop, PythonTutor, and birdseye. Each should only become available starting from a specific page which introduces that tool. No such page has been written yet for birdseye, so for now it's immediately available when the editor is introduced.