Skip to content

toddhopkinson/pythonLabs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Labs - Discovering Programming

Status

Discover programming and learn to code in Python through interactive Jupyter notebook discovery labs.

Teaching Philosophy

Provide an experience before the explanation. Each lesson should invite learners to interact with code through familiar, compelling contexts — games, films, story, and more — before introducing underlying programming concepts. By the time a concept is named, the learner has already used it successfully, transforming abstract definitions into recognition of something they've done or experienced.

Prerequisites

  • Python 3.8+
  • Jupyter Lab or Jupyter Notebook
pip install -r requirements.txt

Getting Started

  1. Clone this repository
  2. Open a terminal in the project folder
  3. Run jupyter lab
  4. Start with 01_variables.ipynb and work through in order

Who This Is For

Learners who want hands-on practice with runnable code examples. Each notebook covers a core topic with explanations, examples you can modify, and space for your own notes.

  • Fundamentals (01-12): For beginners new to Python
  • Intermediate (13-24): For those ready to go deeper after mastering the basics

Content Philosophy

Learning sticks when it connects to things you find interesting. These notebooks use examples drawn from compelling corners of culture—not just generic foo/bar variables, but references that spark curiosity and make concepts memorable.

Notebooks

Fundamentals (01-12)

# Topic Description
01 Variables Types, assignment, naming conventions
02 Strings String operations, formatting, methods
03 Lists List operations, slicing, methods
04 Conditionals if/elif/else, comparisons, boolean logic
05 Control Flow match/case, break/continue, pass
06 Loops for, while, enumerate, zip, comprehensions
07 Functions def, args, kwargs, return, lambda
08 OOP Classes, inheritance, methods, properties
09 File I/O Reading/writing files, context managers
10 Error Handling try/except, raising exceptions
11 Modules Import, packages, __name__
12 Testing unittest, pytest basics, assertions

Intermediate (13-24)

# Topic Description Final-Boss
13 Functional Programming map, filter, reduce, pure functions, immutability No
14 Decorators Function wrappers, @syntax, practical patterns No
15 Generators & Iterators yield, lazy evaluation, memory efficiency No
16 CSS Glow Effects box-shadow, neon effects, UI visual design No
17 Regular Expressions Pattern matching, text parsing, validation No
18 Data Structures Stacks, queues, trees, graphs, when to use each Yes
19 Algorithms Sorting, searching, complexity, problem-solving Yes
20 Databases SQLite, CRUD operations, SQL basics Yes
21 Web Scraping BeautifulSoup, requests, ethical scraping Yes
22 APIs & HTTP REST, JSON, authentication, building clients Yes
23 Concurrency Threading, asyncio, parallel processing
24 Type Hints Static typing, mypy, better code documentation
25 Capstone Bring it all together Yes

Experimental

Extra notebooks exploring specific topics:

  • experimental/ImageToAsciiConversion.ipynb — Convert images to colored ASCII art

Final-Boss Projects

Some modules will include a "final-boss" challenge—a project that demonstrates mastery. These live in the projects/ directory and can take two forms:

Improve the learning materials:

  • Add themed examples to existing notebooks
  • Create better explanations or visualizations
  • Fix or enhance content

Build something new:

  • An application using the module's concepts
  • A game, tool, or visualization
  • Something personally compelling that demonstrates understanding

The capstone (24) requires a final-boss project. Others are optional but encouraged.

Roadmap

Content

  • Apply themed examples across all notebooks (currently only 01, 08 have themes)
  • Expand theme variety beyond 80s sci-fi, to include compelling topics of interest and pop culture
  • Create intermediate notebooks (13-24)
  • Add final-boss project prompts to applicable modules
  • Add choice design elements, images, colors, typefaces, and formatting

New Projects & Experimental Notebooks

  • Game theory fundamentals (prisoner's dilemma, Nash equilibrium)
  • Music: BPM analysis, tone generation
  • Data visualization with matplotlib
  • Text analysis of language and literature structures
  • Simple game simulations (Conway's Game of Life, etc.)

Infrastructure

  • Add requirements.txt
  • Consider themed learning "tracks" (e.g., complete topics using film noir examples, Tron, sports teams, historic battles / armies, Time travel movies/stories/concepts, choose your own adventures, etc)

License

Lava Monster Labs Open Learning License v1.0 — free to use, modify, and share with attribution. See LICENSE for full terms including branding and commercial use guidelines.

Acknowledgments

  • Blue Marble image: NASA (public domain)

About

Discover Programming with Python through a series of Jupyter notebook labs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors