Beginner, project-based, portfolio-first Python
An 8-week, project-based, beginner program that teaches core Python from scratch by building a real command-line tool. No prior programming experience required — ship a working CLI you can put on your resume. Add to your calendar and start building
Table of Contents
- How this program works
- Prerequisites
- Week 1: Dev Environment, Git/GitHub Setup + Python Basics
- Week 2: Data Structures — Lists & Dictionaries
- Week 3: Functions
- Week 4: Classes & Objects
- Week 5: Modules, Files & Virtual Environments
- Week 6: Testing with Pytest
- Week 7: Building the Command-Line Interface
- Week 8: Ship & Finalize
- The Project
- Community
- PROJECT.md — full project guidance
The Project · Self-Assessment Checklist
There's no grading, no enrollment gate, and no required login. Everything you need to complete the program is in this repository.
There are two ways to run through it:
- Rolling (self-paced): Start whenever you want. No meetings, no cohort — you work through the 8 weeks on your own schedule and self-assess your project against the checklist.
- Cohort: Runs alongside a shared start date with a dedicated Discord channel and an end-of-run call where participants demo their projects to each other (peer feedback, not grading).
Each week lists a plain-language objective, supporting resources, and a demo video prompt. The video prompt is worth doing even outside a cohort — it's the habit that turns a week of work into a LinkedIn post and a portfolio entry.
Important
You are not required to watch or read every resource listed. Nothing here is graded. Use the content as support for your project, not as a checklist to complete for its own sake.
Note
Diversity Statement: We share a commitment to diversity and equity, removing barriers to learning so that everyone can participate fully. This program is meant to be useful to people with a wide range of backgrounds, identities, and learning styles, whether you found it through a cohort or on your own on GitHub.
No prior programming experience required. You'll need a computer you can install software on and basic comfort using a terminal — everything else, including all Python syntax, is taught starting Week 1.
Command Line Basics
If you've never used a terminal before, start here: Linux and Bash for Data Engineering · Coursera
- Python Essentials for MLOps · Coursera
- Python and Rust with Linux Command Line Tools · Coursera
- Pytest Master Class · Coursera
- GitHub Fundamentals · Coursera
- Introduction to Codespaces · Coursera
- Scripting with Python and SQL for Data Engineering · Coursera
- Choose the problem your CLI tool will solve, and who it's for (see PROJECT.md)
- Install Python and a code editor, and run your first script
- Learn Git basics and create your project's GitHub repository with a first commit
- Set up Docker/dev-container basics and a Python virtual environment
- Learn variables, core data types, conditionals, and basic error handling
- Meet your course instructor Alfredo DEZA · Coursera
- Lesson introduction variables and types · Coursera
- Variables and assignments · Coursera
- Working with different data types · Coursera
- Conditionals and evaluations · Coursera
- Catching and handling exceptions · Coursera
- Why consider version control · Coursera
- Repository concepts · Coursera
- The GIT command line tool · Coursera
- Committing and pushing changes · Coursera
- Using Docker and containers · Coursera
- Setup a python Virtualenv · Coursera
Weekly demo video prompt: Introduce the problem your CLI tool will solve and who it's for, show your dev environment running a first "hello world" script, and show your project's GitHub repository with its first commit. Use the Public Speaking guidelines to deliver a clear demo.
- Learn lists, dictionaries, tuples, and sets, and when to use each
- Practice adding to and extracting data from lists and dictionaries
- Sketch the data your CLI tool will need to track (its "model")
- Lesson introduction python data structures · Coursera
- Introduction to lists · Coursera
- Creating and Iterating over lists · Coursera
- Introduction to dictionaries · Coursera
- Creating and Iterating over dictionaries · Coursera
- Other data structures Tuples and sets · Coursera
- Adding data to lists · Coursera
- Extracting data from lists · Coursera
- Extracting data from dictionaries · Coursera
Weekly demo video prompt: Show the data structures (lists/dicts) you chose to represent your CLI tool's data, and why.
- Write functions with positional, keyword, and variable arguments
- Break your first script's logic into small, testable functions
- Refactor Week 1-2's code into a functions-based script
- Lesson introduction working with functions · Coursera
- Function structure and values · Coursera
- Function arguments · Coursera
- Variable and keyword arguments · Coursera
Weekly demo video prompt: Walk through one function you wrote this week and explain what it does and why you split it out.
- Learn classes, constructors, methods, and basic inheritance
- Decide whether your CLI tool's data belongs in a class, and model it
- Rewrite your tool's core data as a class with methods
- Lesson introduction building classes and methods · Coursera
- Introduction to classes · Coursera
- Using a Constructor · Coursera
- Adding methods · Coursera
- Class Inheritance · Coursera
Weekly demo video prompt: Show the class you built for your project's data and explain one method on it.
- Split your script across modules and understand imports
- Set up a virtual environment and declare your project's dependencies
- Read and write real files (including JSON) as your project's data layer
- Reorganize your project into a proper multi-file Python package layout
- Lesson introduction modules and advanced Usages · Coursera
- Introduction to python modules · Coursera
- Working with imports · Coursera
- Working with python scripts · Coursera
- Virtual environments and Dependencies · Coursera
- Loading data from files and file paths in python · Coursera
- Working with JSON in python · Coursera
- Saving data from python to disk · Coursera
- Creating a script as a module in python · Coursera
- Traversing the file system with a script in python · Coursera
Weekly demo video prompt: Show your project's new module layout and virtual environment, and demo it reading/writing a real file (e.g. JSON) as its data layer.
- Learn why and how to test Python code with pytest
- Write your first tests, including parameterized tests and fixtures
- Add a test suite covering your project's core functions/methods
- Motivations for testing in python · Coursera
- Testing conventions · Coursera
- Testing with Pytest · Coursera
- Using plan Asserts in Pytest · Coursera
- Writing test classes · Coursera
- Parameterizing tests · Coursera
- Pytest fixtures · Coursera
Weekly demo video prompt: Run your test suite live and explain what one test verifies and why it matters.
- Learn argparse and click for building CLI interfaces
- Wire a real command-line interface onto your project's logic, with subcommands and environment variables
- Add basic logging and error handling to your CLI
- Package your project so it can be installed and run as a command
- Creating a single file script · Coursera
- Using the Argparse framework · Coursera
- Declaring Dependencies · Coursera
- Using the click framework · Coursera
- Packaging your project · Coursera
- Solving a machine learning problem with a CLI tool · Coursera
- Creating a command line tool with sub commands in python · Coursera
- Parsing complex command line arguments in python · Coursera
- Adding environment variables to your command line tool in python · Coursera
- Implementing basic logging in python · Coursera
- Handling errors in python · Coursera
- Release to the python package index PYPI · Coursera
Weekly demo video prompt: Demo your CLI tool running end to end from the command line, including its subcommands, arguments/options, and logging output.
- Run your project against the self-assessment checklist
- Polish the README with real setup/usage instructions and examples
- Publish the repository publicly and write a short portfolio/LinkedIn post linking to it
Weekly demo video prompt: Give a full demo of the finished CLI tool, what it does, and one thing you'd add next if you kept working on it.
Finish the project: publish the repository, run it against the self-assessment checklist, and write a short portfolio/LinkedIn post pointing at the repo. Rolling learners get a closing email when they hit this week; cohort learners present on the end-of-run call instead of (or in addition to) posting.
The whole program is built around a single project you start in Week 1 and ship in Week 8: a command-line tool of your own choosing that solves a real, small problem. See PROJECT.md for what that means and how to scope it, and the self-assessment checklist for what "done" looks like.
Important
Pick a problem you actually have, not a toy exercise you'll abandon. A tool you'd genuinely use again is easier to stay motivated on for 8 weeks — details in PROJECT.md.
The primary two resources for building an LLM solution on a local API:
- Python Fire · Coursera
- Refactoring a Python script into a library called by Python Click CLI · Coursera
- Python Command-line Tools · Coursera
Optional supplementary readings & media
Join the shared PAIML Discord to ask questions, share progress, and post your weekly demos. If you're in a cohort, you'll also get invited to a dedicated channel for your run, alongside the shared server.
