Python Lessons and Tutorials

While the majority of our classes are held in-person - there's no substitute for the classroom teacher-student interaction - we have created a number of online tutorials to help get started or to help students review what they've learned in class.

All lessons are available on our YouTube channel, and we're also adding text-based versions of every lesson for those that prefer reading over watching. Read on to see what's available.

Please consider supporting these lessons:

Game Development with Pygame

If you're interested in game development, this is the place to start. We'll introduce you to Pygame, the Python-based game library, and show you how to get started.


Shmup game in action!

Pygame Tutorial #1: Shmup (Space Shooter)

Your first Pygame project! Follow along step-by-step as we build a space shoot-em-up (aka "Shmup"). Each lesson, we'll add one feature to the code until we have a fully working game! Some of the things you'll learn how to do:

  • Player Controls (keyboard)
  • Handling Collisions
  • Sprite Animations
  • Sound and Music
  • Ending the game (and restarting)

Keep on jumping!

Pygame Tutorial #2: Jumpy Platformer (Doodle Jump style)

Ready to jump to the next level? (see what we did there?) In this project, we'll step up our game, using some more advanced methods and Pygame features to build a "Doodle Jump" style platformer. Some of the new techniques we'll learn:

  • Saving the high score
  • Simulating gravity and friction
  • Using spritesheet graphics
  • Pixel perfect collisions
Tutorial (click for text version) Video Link
Pygame Platformer Part 1: Setting Up Coming Soon https://youtu.be/uWvb3QzA48c
Pygame Platformer Part 2: Player Movement https://youtu.be/8LRI0RLKyt0
Pygame Platformer Part 3: Gravity and Platforms https://youtu.be/pN9pBx5ln40
Pygame Platformer Part 4: Jumping https://youtu.be/G8pYfkIajE8
Pygame Platformer Part 5: Scrolling the Window https://youtu.be/OmlQ0XCvIn0
Pygame Platformer Part 6: Game Over https://youtu.be/BKtiVKNsOYk
Pygame Platformer Part 7: Splash & End Screens https://youtu.be/rLrMPg-GCqo
Pygame Platformer Part 8: Saving High Score https://youtu.be/MFv1Ew_nGG0
Pygame Platformer Part 9: Using Spritesheets https://youtu.be/mBC5VqxnFLA
Pygame Platformer Part 10: Character Animation (part 1) https://youtu.be/kuVsKUuVOwc
Pygame Platformer Part 11: Character Animation (part 2) https://youtu.be/n4TQfKt4wpQ
Pygame Platformer Part 12: Platform Graphics https://youtu.be/qnUVjACD3WM
Pygame Platformer Part 13: Improved Jumping https://youtu.be/9S7fWevICtY
Pygame Platformer Part 14: Sound and Music https://youtu.be/bgy_cHYnhjY
Pygame Platformer Part 15: Powerups https://youtu.be/kCnAhasA1bs
Pygame Platformer Part 16: Enemies https://youtu.be/IxtNSCYOWck
Pygame Platformer Part 17: Using Collision Masks https://youtu.be/Dspz3kaTKUg
Pygame Platformer Part 18: Scrolling Background https://youtu.be/i0PaigPo6KM
Pygame Platformer Part 19: Wrapping Up https://youtu.be/-9bjlpaVQAA

Zombies!

Pygame Tutorial #3: Tile-based Game

The latest Pygame tutorial series tackles the concept of tile-based games, where the game world is based on a grid of tiles, including ideas like scrolling maps, pathfinding, enemy AI, and more.

Tutorial (click for text version) Video Link
Tile-based game Part 1: Setting up Coming Soon https://youtu.be/3UxnelT9aCo
Tile-based game Part 2: Collisions and Tilemap https://youtu.be/ajR4BZBKTr4
Tile-based game Part 3: Smooth Movement https://youtu.be/pA7OABYHNDY
Tile-based game Part 4: Scrolling Map / Camera https://youtu.be/3zV2ewk-IGU
Tile-based game Part 5: Player Graphics https://youtu.be/FVLRUmkV27Q
Tile-based game Part 6: Rotating Player Sprite https://youtu.be/5M_-cJP5rk8
Tile-based game Part 7: Mobs https://youtu.be/gbRAqFl21SA
Tile-based game Part 8: Mob Movement https://youtu.be/SAbxZDBJX4E
Tile-based game Part 9: Basic Shooting https://youtu.be/YfWh0WtwuWE
Tile-based game Part 10: Player and Mob Health https://youtu.be/-9bXcSjuN28
Tile-based game Part 11: Tiled Map Editor https://youtu.be/Mr5l4U9S4kI
Tile-based game Part 12: Loading Tiled Maps https://youtu.be/QIXyj3WeyZM
Tile-based game Part 13: Map Obstacles https://youtu.be/vIT7P-RPJNo
Tile-based game Part 14: Better Zombie Movement https://youtu.be/4KJjLqowym0
Tile-based game Part 15: Simple Visual Effects https://youtu.be/ZapYMuV8f1g
Tile-based game Part 16: Items https://youtu.be/ZapYMuV8f1g
Tile-based game Part 17: Tweening https://youtu.be/ZapYMuV8f1g
Tile-based game Part 18: Sound Effects https://youtu.be/vzJ0WG2LSYw
Tile-based game Part 19: Pause Screen https://youtu.be/MJ2GLVA7kaU
Tile-based game Part 20: More Weapons https://youtu.be/xIcDqw35rz8
Tile-based game Part 21: Damage Effect https://youtu.be/0ctJV0EPbuc
Tile-based game Part 22: Game Over https://youtu.be/DZYY9hCOxLQ

Game Development In-Depth

"In-depth Topics" will explore and explain a little more deeply certain subjects that may be tricky for new programmers to understand, or that may not quite fit into the usual tutorial structure. Most will likely be math related, but they may also cover other topics that come up or are requested by viewers.

Tutorial (click for text version) Video Link
Gamedev In-depth Topics: 4-way vs. 8-way Movement https://youtu.be/9fYgkFuU-iI
Gamedev In-depth Topics: Time-based vs. Frame-based Movement https://youtu.be/TIiYJaY8ZR0
Gamedev In-depth Topics: Non-integer Movement https://youtu.be/5cu5-IUdDIo
Gamedev In-depth Topics: Steering Behaviors (Seeking) https://youtu.be/g1jo_qsO5c4
Gamedev In-depth Topics: Steering Behaviors (Wander) https://youtu.be/jz-YNNVlVrQ
Gamedev In-depth Topics: Steering Behaviors (Flee) https://youtu.be/eantey2BaL4
Gamedev In-depth Topics: Pathfinding Part 1 https://youtu.be/e3gbNOl4DiM
Gamedev In-depth Topics: Pathfinding Part 2: Breadth First Search https://youtu.be/JZsJq47hqVg
Gamedev In-depth Topics: Pathfinding Part 3: Finding Shortest Path https://youtu.be/tTHZwsV3B64
Gamedev In-depth Topics: Pathfinding Part 4: Dijkstra's Algorithm https://youtu.be/fa1NSUBqiJc
Gamedev In-depth Topics: Pathfinding Part 5: A* Search https://youtu.be/PDPx-z9CwrA