Skip to content

A platform for beginners to learn programming in Python

License

Notifications You must be signed in to change notification settings

daviddavid/futurecoder

 
 

Repository files navigation

logo

futurecoder

This is a free platform/course for people to teach themselves programming in Python, especially complete beginners at programming. It is carefully designed to reduce frustration and guide the user while still ensuring that they learn how to solve problems. The goal is for as many people as possible to learn programming.

You can try it out here: https://futurecoder.io/

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 or donating!

Alternatively, come have a chat on slack.

Features

For a fuller demonstration and explanation, watch this video.

The course is a fully interactive 'book' which requires the user to run code in the provided editor or shell to advance:

full

This requires a mixture of solving problems or simply typing and running provided code. In the latter case, the user is often kept engaged by being asked to predict the output in a simple multiple choice question: The code at each step is checked automatically. If needed, the student can get small hints to gradually guide them to the solution:

predict_output

hints

If they're still really stuck, they can reveal the solution bit by bit:

Or in some cases solve a Parsons problem instead, where they have to put a shuffled solution in the correct order:

solution

parsons

Tracebacks are more helpful than usual, with several enhancements:
  • Highlighting the exact operation that failed, not just the line, using executing
  • Tables of local variables and simple expressions evaluated by pure_eval
  • Suggestions for fixes provided by DidYouMean
  • Beginner friendly explanations provided by friendly-traceback (shown when hovering over the little i icon)
  • Showing multiline statements in full thanks to stack_data without showing unnecessary extra lines
Common mistakes can be caught and pointed out to the student. This includes specific checks in some steps as well as linting tailored for beginners.

traceback

executing

Several debuggers are provided, including snoop...

...birdseye...

snoop

birdseye

...and Python Tutor

pythontutor

Running locally

  1. Install Python 3.9 and poetry.
  2. Run poetry install to install Python dependencies.
  3. Run poetry run python -m core.generate_static_files.
  4. In the frontend folder:
    1. Ensure you have version 14.15.4 (lts/fermium) of node and version 7.5.2 of npm.

    2. Run npm ci to download dependencies.

    3. Run npm start to start the frontend development server.

  5. Go to http://localhost:3000/course/

To learn more about the system, see the contributing guide.

Controls

To explore the course more freely:

  1. Click the hamburger menu icon in the top left.
  2. Click Settings.
  3. Turn Developer mode on.
  4. This should give you two red buttons floating at the bottom of the screen. They change the currently active step, so you can move forward without having to complete exercises or backwards to test a step again.

About

A platform for beginners to learn programming in Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 66.1%
  • JavaScript 13.5%
  • SCSS 10.0%
  • CSS 5.4%
  • HTML 4.9%
  • Shell 0.1%