# awesome-python-in-education

A curated list of resources about Python in Education

There are many ways to contribute to this project. Get started here.

Sparkline (GitHub stars velocity):

## Contents

- Roadmaps
- Courses and lessons
  - Interactive environments
  - MOOCs
  - Introductions and Tutorials
  - Data Science
- Exercises and Games
- Reference and forums
  - Python suitability for education
  - Academic Papers
  - Reference
  - Mailing lists
  - Forums
- Tools and Libraries
  - Games, graphics and simulation
  - Visualization
  - Jupyter
  - IDEs
  - Debuggers
- Conferences and videos
- Books
  - Coding Club books
  - Green Tea Press
  - Invent with Python series
  - Manning Publications
  - No Starch Press
  - O’Reilly
  - Packt Pub
- Hardware - programming environment for tiny Python 3 projects, that can be embedded in web pages (using Brython)

### Interactive environments

- From Blocks to Code with Trinket! (more resources included in Hour of Python)
- Python for Everybody - Trinket.io interactive book.
- How to Think Like a Computer Scientist (more resources included in Runestone Interactive)
- pythonroom
- repl.it classrooms
- CS Principles: Big Ideas in Programming
- CodeSkulptor
- BlockPy - web-based Python environment that lets you work with blocks, text, or both.
- Edublocks - Making the transition from Scratch to Python easier.
- Python Lectures - IPython Notebooks to learn Python.
- Jupyter notebooks for teaching/learning Python 3
- Learn Python
- Code Club Python modules
- Computer Science Circles
- Python from scratch
- Interactive Python 3 tutorial with 100+ exercises
- Codesters
- Pyfiddle
- Code the blocks - interactive playground for learning how to code.
- Pythonpad.js - programming environment for tiny Python 3 projects, that can be embedded in web pages (using Brython)

### MOOCs

- Programming for Everybody
- An Introduction to Interactive Programming in Python (Part 1)
- An Introduction to Interactive Programming in Python (Part 2)
- Python Programming: A Concise Introduction
- Introduction to Computer Science and Programming Using Python
- Learn to Program Using Python
- CS For All: Introduction to Computer Science and Python Programming
- Programming Foundations with Python
- Python Codecademy
- CS 61A: The Structure and Interpretation of Computer Programs
- Python School
- Python curriculum outline - Curriculum outline at FreeCodeCamp.com GitHub issue.

### Introductions and Tutorials

- The Hello World Program: Learn Python
- Practical Python Programming (course by @dabeaz)
- Introduction to Python
- NewCoder
- Python tutorial
- Programming with Python - from Software Carpentry
- Introduction to Programming with Python
- Python Land
- Python Course
- The Programming Historian
- Program Arcade Games With Python And Pygame
- Python Tutorials for Kids 13+
- KidsCanCode
- Python Asynchronous I/O Walkthrough
- Python Tutorials and Courses Directory
- Python as a Second Language
- A simple tutorial about effectively using pdb
- Beginning Python - Getting More out of Python - The Python Environment - Advanced Python - 4 courses from the archived O’Reilly School of Technology
- Testing and Continuous Integration with Python - a tutorial from the Software Carpentry.
- Playground and cheatsheet for learning Python
- Try Python - a free course from Code School.
- Python Synopsis - Python study guide.
- Python Fundamentals I & II - two 20h free courses from Rithm School.
- A Byte of Python
- A Brief, Animated Introduction to Programming with Python
- Build applications in Python (the anti-textbook)
- Asyncio in Python - collection of tutorials about Asyncio in Python.
- A SQLite Tutorial with Python
- Learning Python for Social Scientists
- Learn how to use Python for your Lab
- Python Basics
- Dead Simple Python - from beginners to python (not programming).
- Learn Python - Introduction and Intermediate Python, recorded for Frontend Masters by Nina Zakharenko.
- The Cracking Python Bootcamp - Learn How to Code in Python in 12 Weeks By Building Fun Real World Projects.
- w3schools Python tutorial
- Geeks for geeks Python tutorial
- Ultimate Python - study guide for newcomers and professionals alike.
- LearnPython.org interactive tutorial

### Data Science

- A Whirlwind Tour of Python and the Jupyter Notebooks behind.
- A Crash Course in Python for Scientists
- Intro to Python for Data Science
- Learning Python for Data Science
- Introduction to Python for Data Science
- Programming with Python for Data Science
- Python Data Science Handbook complete book in Jupyter Notebook format.
- NumPy Illustrated - The Visual Guide to NumPy
- Exploratory Computing with Python
- Data Carpentry: Python for Ecologists
- Plotting and Programming in Python
- Applied Plotting, Charting & Data Representation in Python
- Using Python for Research
- The Hitchhiker’s Guide to Machine Learning in Python
- SIOC 209: Python for Data Analysis and its associated videos
- Reproducible analysis in Python
- Python Level 1 - free course at Kaggle.
- Pandas Cheat Sheet
- Python for Data Science Cheat Sheets

## Exercises and Games

- CheckiO
- CodeAbbey
- Empire of Code
- Project Euler
- Exercism
- HackerRank Challenges
- PyBites - PyBites Code Challenges Platform
- Practice Python
- Python Challenge
- Python for Fun
- CodingBat
- Reeborg’s world
- Python Koans
- Boston Python Puzzles
- Norvig’s pytudes - Python programs for perfecting programming skills
- Python Challenges
- Code & Conquer
- CodeCombat
- TeachCraft: Minecraft + Python - Run your own TeachCraft Server
- Slice like a Ninja
- Python Datasets: The Collection of Really Great, Interesting, Situated Datasets - (visit CORGIS for raw formats)
- Interactive Coding Challenges
- Pyweek Programming Challenge
- CodingGame
- CodeFights
- Edabit Python Challenges
- futurecoder - interactive beginner exercises - gh repo
- DevProjects - Python Projects - Learn programming with curated Python projects

## Reference and forums

### Python suitability for education

- CP4E by Guido van Rossum
- Python in Education: Teach, Learn, Program - free e-book on why Python is well suited for education by Nicholas Tollervey
- ‘Think Python like a Computer Scientist’ book Foreword by David Beazley
- Why I push for Python by Lorena Barba
- Why Python is a Great First Language by Elliott Hauser (Trinket CEO)
- Why Python is a great language for teaching beginners in introductory programming classes by Philip Guo
- Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities by Philip Guo (Communications of the ACM)
- Why Learn Python? Here Are 8 Data-Driven Reasons by Elena Ruchko
- [Level 1] Programming: Python - Archived version
- Python as a way of thinking

### Reference

- Official Python documentation
- Python in Education - git repo
- Google’s Python Class
- The Hitchhiker’s Guide to Python
- Tiny Python 3.6 Notebook
- Real Python Tutorials - First Steps
- PEP8 - Python Style Guide
- The Elements of Python Style
- PyMOTW3 - Python Module Of The Week
- Full Stack Python - (best python resources) - (learning programming)
- Learn X in Y minutes where X=python3
- Tutorial - Learn Python in 10 minutes but don’t forget to Teach Yourself Programming in Ten Years
- PyCrumbs - Bits and bytes of Python from the Internet
- CheckiO Python blog - curated Python articles
- A Sheet of Python: direct access to the PDF
- A gallery of interesting Jupyter Notebooks
- CS1 Python Programming Projects Archive
- Python 3 Cheat Sheet(PDF)
- Python cheatsheet
- Python Crash Course - Cheat Sheets
- Comprehensive Python Cheatsheet
- Algorithms implemented in python (for education)
- Algorithms
- Minimal examples of data structures and algorithms in Python
- awesome-python
- Python GitHub Projects
- Python Reference - useful functions, tutorials, and other Python-related things
- Pythonidae - curated decibans of scientific programming resources in Python
- Python Patterns - by Brandon Rhodes (repo)
- python-patterns - a collection of design patterns/idioms in Python
- PyPattyrn
- Python 3 Patterns, Recipes and Idioms
- How to make mistakes in Python
- The Little Book of Python Anti-Patterns - small book of Python anti-patterns and worst practices
- Python IAQ: Infrequently Answered Questions by Peter Norvig
- Anti-Patterns in Python Programming
- Python Code Disasters - more anti-patterns.
- What the f*ck Python? - A collection of interesting and tricky Python examples
- DjangoGirls Introduction to Python
- Experiments in Python Pedagogy - rendered version
- 29 common beginner Python errors on one page from Python for Biologists
- Learn Python - Udacity
- Popular Python Recipes
- Transforming Code into Beautiful, Idiomatic Python
- Improve your Python skills (Dan Bader’s blog)
- Practical Business Python
- Python Lessons - 6 lessons from teachwithict
- Machine Learning and Python (and Math) Cheat Sheets
- AIAMA Python implementation - Python implementation of algorithms from Russell And Norvig’s “Artificial Intelligence - A Modern Approach”
- PyFormat - Using % and .format() for great good!
- Replacing Bash Scripting with Python
- ugo_py_doc - a Python documentation website
- The 35 Words You Need to Python - The core vocabulary of Python you actually need to know to start to do meaningful work.

### Mailing lists

- Python EDU-SIG - Python.org subsite
- Python EDU-SIG - Special Interest Group mailing list
- Python EDU-WG - Working Group mailing list
- Tutor - (mailing list) Discussion for learning programming with Python
- Python-list - General discussion list for the Python programming language (mailing list)
- jupyter-education - Teaching with Jupyter Notebooks mailing list

### Forums

- StackOverflow: ‘python’ tag - sopython.com community website
- reddit: r/Python - r/learnpython - r/pythontips - r/pygame

## Tools and Libraries

- Your Python Trinket - Put Interactive Python Anywhere on the Web
- Python Tutor - Visualize the execution of Python programs
- Livepython - Visually trace Python code in real-time (alpha stage)
- Skulpt - Skulpt is an entirely in-browser implementation of Python 2.X (!)
- SoloLearn Python 3 Tutorial - mobile version
- Python Anywhere
- repl.it
- Python AST Explorer
- kite - programming copilot
- EarSketch - learn to code by making music
- FoxDot - Live Coding Music with Python & SuperCollider
- Ren’Py - a visual novel engine
- ColorZero - Another color manipulation library for Python
- LogZero - Robust and effective logging
- NetworkZero - Make it easy for learning groups to use simple networking in Python

### Games, graphics and simulation

- Jupylet - Create 2D and 3D games, graphics, live music and sound synthesizers, interactively in a Jupyter notebook.
- PyGame
- Pygame Zero for creating games without boilerplate
- Python Arcade Library
- Pyglet - a pure python cross-platform application framework intended for game development
- Python Mode for Processing
- PythonTurtle - A learning environment for Python programming suitable for beginners and children, inspired by Logo. Easy installer for Windows so it could be installed by children on computers without internet access.
- A Simple Tutorial for Python’s turtle.py Module
- VPython - 3D programming
- Pymunk - 2D physics library
- PyPhysicsSandbox - a simple wrapper around Pymunk
- Kivy - innovative user interfaces, such as multi-touch apps
- PyQT 15 minute apps - 15 minute (small) desktop apps built with PyQt
- PyQt5 tutorial - Create GUI applications with Python
- Panda3D - game engine and framework for 3D rendering
- Ursina Engine - game engine based on Panda3D but really easy-to-use. Great for beginners in 3D game coding.
- gui zero - to allow children to quickly and easily create GUIs for their programs
- Free Python Games - collection of free Python games intended for education and fun
- Angry Birds in Python - using pygame and pymunk
- Jappy - the app powering the http://educa.juegos/ collaborative coding platform
- Predigame - instructional platform that teaches the basics of coding through the creation of arcade games
- ThorPy - A GUI library for pygame
- sc8pr - A simple framework for new and experienced Python programmers to create animations, games, and other graphics-based programs
- pyxel - A retro game development environment in Python.
- PySimpleGUI - Super-simple GUI to use… Powerfully customizable.
- evennia - library and toolkit for building multi-player online text games
- adventurelib - easy text adventures
- PythonStdioGames - A compilation of text-based games written in Python that only use “standard i/o”.
- PyperCard - HyperCard inspired GUI framework for beginner developers in Python (doc site)
- PyComic - A static website for generating Pythonic comics

### Visualization

- Bokeh - an interactive visualization library that targets modern web browsers for presentation.
- VisPy - library for interactive scientific visualization that is designed to be fast, scalable, and easy to use.
- Python Graph Gallery - showcase hundreds of charts, always providing the reproducible python code.

### Jupyter

- Awesome Jupyter - A curated list of awesome Jupyter projects, libraries and resources
- Project Jupyter
  - github.com/jupyter4edu - best practices and content for teaching with Jupyter notebooks
    - jupyter4edu/jupyter-edu-book - open source of the “Teaching and Learning with Jupyter” book
      - https://jupyter4edu.github.io/jupyter-edu-book/ - “Teaching and Learning with Jupyter” book
  - github.com/IPython
  - github.com/Jupyter
  - github.com/JupyterHub
  - github.com/JupyterLab
- jupyter-education: Teaching with Jupyter Notebooks mailing list - mailing list
- jupyterhub/JupyterHub - multi-user server for Jupyter notebooks
  - Zero to JupyterHub - documentation for setting up a multi-user JupyterHub server
  - TLJH: The Littlest JupyterHub - documentation for “a simple JupyterHub distribution for a small (0-100) number of users on a single server”
  - jupyterhub-deploy-teaching - reference deployment of JupyterHub and nbgrader on a single server
- jupyterlab/JupyterLab - rewrite of Jupyter Notebook with tabs, extensions, command list
  - JupyterLab Documentation
- mybinder.org - “Binder”: generate a container from a git repository (or a DOI) with repo2docker and run it in the cloud
  - jupyterhub/binderhub - BinderHub is the application that powers https://mybinder.org (on k8s)
  - jupyter/repo2docker - generate Jupyter-enabled Docker Images from repositories
  - github.com/binder-examples - examples of Binder-ready (REES-compatible) Jupyter notebooks
  - REES: Reproducible Execution Environment Specification - specification that repo2docker uses to build a container image for a given project and its dependencies
  - REES Config files - requirements.txt, environment.yml, Pipfile.lock, postBuild, Dockerfile
- ipython/ipywidgets - IPython widgets
- jupyter/nbgrader - nbgrader is a tool that facilitates creating and grading assignments in the Jupyter notebook
  - nbgrader docs - docs for the nbgrader tool
  - jupyterhub/jupyterhub-deploy-teaching - reference deployment of JupyterHub and nbgrader on a single server
- jupyterlab/jupyterlab-google-drive - Google Drive for JupyterLab (see also: Google Colab)
- jupyterlab/debugger - a JupyterLab debugger extension for debugging code in notebook cells

### Hosted Jupyter notebooks

- awesome-jupyter > Hosted Notebook Solutions
- CoCalc’s comparison of Online Jupyter Notebook services
- CoCalc - Jupyter notebook environment with Course Management, Handouts, Assignments, nbgrader, Time Travel history, chat
- Google Colab - Jupyter notebook environment for machine learning education and research (requires no setup to use)
- IllumiDesk - Jupyter notebook environment with LMS integration via LTI 1.1/1.3.
- JupyterHub, BinderHub

### Jupyter Tools

- RISE - “Live” Reveal.js Jupyter/IPython Slideshow Extension
- fastpages - static/JAMstack blogging platform with support for Jupyter notebooks
- hugo-academic - static/JAMstack website builder with support for Jupyter notebooks
- ipytest - run py.test tests within the notebook environment
- jupyter-contrib-nbextensions - Unofficial Jupyter Notebook Extensions
- jupyter-edx-colab-cloud-xblock - launch Google Colab notebooks from within an Open edX XBlock
- jupyter-edx-grader-xblock - auto-grade assignments with nbgrader and post the scores to an Open edX gradebook
- jupyter-themes - Custom Jupyter Notebook Themes
- jupyter-viewer-xblock - view Jupyter notebooks in an Open edX XBlock
- jupytext - Jupyter Notebooks as Markdown, Julia, Python, or R scripts (that [auto-]save to and from the configured paired formats)
- lolviz - data-structure visualization tool for lists of lists, lists, dictionaries
- nbTranslate - translate cells of a notebook from one language to another - Adds multi language support
- nbautoeval - creating auto-evaluated exercises
- nbconvert - convert Notebooks to other formats
- nbdev - export, sync, and document notebook cells to and from regular python modules
- nbdime - diffing and merging of Jupyter Notebooks
- nbgallery - platform for sharing and collaborating on Jupyter notebooks
- nbinteract - creates interactive webpages from Jupyter notebooks
- nbscan - search for and print contents of cells in Jupyter notebooks
- nbsphinx - Sphinx extension for publishing Jupyter Notebooks as static/JAMstack websites
- nbtranslate - translate content of Jupyter notebook using gettext tools
- nbtutor - visualize Python code execution (line-by-line)
- nbval - Py.test plugin for validating Jupyter notebooks
- notedown - Convert IPython Notebooks to markdown (and back)
- pixiedebugger - The Visual Python Debugger for Jupyter Notebooks You’ve Always Wanted
- pynb - Jupyter Notebooks as plain Python code with embedded Markdown text
- rst2ipynb - convert standalone reStructuredText files to Jupyter notebook file
- sphinxcontrib-jupyter - A Sphinx Extension for Generating Jupyter Notebooks

### Jupyter resources

- GitHub Trending Jupyter Notebooks
- Jupyter Notebook cheatsheet
- Jupyter tips, tricks and shortcuts
- IPythonBlocks
- Using the IPython Notebook as a Teaching Tool
- LTI Launch JupyterHub Authenticator - Implements LTI v1 authenticator for use with JupyterHub
- Lectures on scientific computing with Python
- “The world of Jupyter” —a tutorial
- List of Jupyter Notebooks by Peter Norvig
- 28 Jupyter Notebook tips, tricks and shortcuts
- VPython running in a Jupyter notebook

### IDEs

- bpython
- ptpython
- Thonny - Python IDE for beginners
- VIM with Python plugins
- Emacs with Python plugins
- Sublime Text 3 with Python plugins
- PyCharm Edu - With some courses
- Spyder - The Scientific PYthon Development EnviRonment.
- Wingware Python IDE
- Ninja-IDE
- PyDev - a Python IDE for Eclipse, which may be used in Python, Jython and IronPython development.
- Visual Studio Code with Python plugins
- Mu - a simple Python editor for beginner programmers.
- Rodeo - A Native Python IDE for Data Science.
- Turing - Free and cross-platform IDE for pseudocode and Python.
- PyScripter - a feature-rich but lightweight Python IDE.
- Pyzo - computing environment that plays well with conda.

### Debuggers

- pdb
- ipdb
- PuDB
- pdb++ - a drop-in replacement for pdb
- Python Linter Online - Live Syntax Checking Using Pylint while Running Python
- PyTA - static code analysis to help students find and fix common coding errors
- coala - linting and fixing code
- wdb - An improbable web debugger through WebSockets
- QuantifiedCode - a code analyis & automation platform
- birdseye - graphical Python debugger using the AST
- Hunter - a flexible code tracing toolkit

## Conferences and videos

- Taking Your Python Skills to the Next Level With Pythonic Code - 5 powerful Pythonic concepts and over 45 minutes of video examples.
- Weekly Python Chat - Weekly live video chats about Python, teaching, open source, and more
- Python in Australian Education seminar (2016)
- PyCon Australia 2015 Education Miniconf (youtube playlist)
- Python Education Summit Schedule (PyCon 2016)
- A one-day mini-conference about Python in Education (PyConUK 2016)
- PyVideo tag ‘education’
- Khan Academy Computer Science (Python video playlist)
- Python Programming in one video - Learn to Program with Python Derek Banas playlist
- CPython internals: A ten-hour codewalk through the Python interpreter source code
- Teaching Python: The Hard Parts - PyCon 2016
- Episode 14 – Allen Downey on Teaching Computer Science with Python from podcast.__init__(‘Python’)
- Python For Informatics
- Python for Everybody - Exploring Information
- sentdex youtube playlists or via Python Programming
- Dan Bader’s youtube channel
- Corey Schafer’s youtube channel
- Python 3.4 Programming Tutorials
- Programming Foundations with Python from Udacity
- PySide Video Tutorials
- Python Basics - Coding is for girls
- Python For Beginners - Learn To Code Tutorials
- TheNewBoston Python 3 videotutorials - also Flask and others on their channel
- Build applications in Python the antitextbook
- Socratica Python Programming Tutorials
- Python for Data Analysis - Pandas Cookbook

## Books

- The Computer Science Field Guide - (repo)
- Awesome Python Books
- PythonBooks
- Build applications in Python the antitextbook
- Algorithmic Problem Solving with Python
- Openlibra: Python
- Intermediate Python - github repo
- Python Practice Book
- Scipy Lecture Notes
- Problem Solving with Algorithms and Data Structures using Python - accompanying videos
- Python for Everybody - Exploring Data In Python 3
- Composing Programs based on SICP textbook.
- Dive into Python 3
- Introduction to Programming with Python
- Learn Python, Break Python - A Beginner’s Guide to Programming
- Non-Programmer’s Tutorial for Python 3
- The Art and Craft of Programming (Python edition)
- CS61A: Structure and Interpretation of Computer Programs
- Learn Python the hard way
- Program Arcade Games With Python And Pygame
- Python for you and me
- Object-Oriented Programming in Python
- Violent Python. A Cookbook for Hackers, Forensic Analysts, Penetration Testers and Security Engineers
- Natural Language Processing with Python – Analyzing Text with the Natural Language Toolkit
- Python for Scientists and Engineers
- PythonBooks - categorized Python books

### Coding Club books

- Python Basics
- Python Next Steps
- Python: Building Big Apps
- Python: Programming Art
- Python: Interactive Adventures
- Black Flag: A Coding Club Mission
- Coding Cards [PDF]

### Green Tea Press

- Think Python: How To Think Like a Computer Scientist, 2nd ed.
- Think Complexity: Exploring Complexity Science with Python, 2nd ed.
- Think DSP: Digital Signal Processing in Python
- Think Stats: Exploratory Data Analysis in Python, 2nd ed.
- Think Bayes: Bayesian Statistics in Python

### Invent with Python series

- Invent your own computer games with Python
- Making Games with Python & Pygame
- Hacking Secret Ciphers with Python -> 2nd ed: Cracking Codes with Python
- Automate the Boring Stuff with Python

### Manning Publications

- Classic Computer Science Problems in Python
- Hello! Python
- Hello World! 2nd ed. Computer Programming for Kids and Other Beginners
- Hello Raspberry Pi! - Python programming for kids and other beginners.
- The Quick Python Book, Third Edition
- Learn Programming with Python
- Grokking Algorithms - An illustrated guide for programmers and other curious people.
- Practices of the Python Pro - Professional software development principles and best practices for beginning developers.
- The Well-Grounded Python Developer - Helping programmers who know Python become and think like developers.
- Tiny Python Projects - An introduction to Python fundamentals through puzzles and games.
- Publishing Python Packages - Book that reveals best practices and standards for packaging your Python code in an easy, automated, and scalable way..

### No Starch Press

- Python for Kids
- Teach Your Kids to Code
- Doing Math with Python: Use Programming to Explore Algebra, Statistics, Calculus, and More!
- Python Crash Course. A Hands-On, Project-Based Introduction to Programming
- Python Playground. Geeky Projects for the Curious Programmer
- Learn to Program with Minecraft. Transform Your World with the Power of Python
- Black Hat Python. Python Programming for Hackers and Pentesters

### O’Reilly

- Raspberry Pi Cookbook. Software and Hardware Problems and Solutions
- Head First Python, 2nd Edition
- Python for Unix and Linux System Administration (2008)

### Packt Pub

- Python Projects for Kids
- Raspberry Pi Projects for Kids
- Python Programming for Arduino
- Pro Python System Administration (2010)

## Hardware

- Cozmo

### Raspberry Pi

- Raspberry Pi

  - Getting Started with Minecraft Pi
  - Create a “Whac-a-block” game in Minecraft
  - MagPi issues

- The Raspberry Pi Platform and Python Programming for the Raspberry Pi

- gpiozero - A simple interface to GPIO devices with Raspberry Pi.

### Arduino

- Arduino and Python
- Using Python with Arduino

### BBC microbit

- The micro:bit Foundation
- BBC micro:bit MicroPython
- Microbit Playground

### PyBoard

- MicroPython

### ESP32

- MicroPython

### Adafruit CircuitPython

- CircuitPython - a MicroPython fork for teaching coding with microcontrollers
- Awesome CircuitPython - A curated list of awesome CircuitPython guides, videos, libraries, frameworks, software and resources.

## License