PyClass: Difference between revisions

From Noisebridge
Jump to navigation Jump to search
m Reverted edits by 216.218.222.14 (talk) to last revision by 64.129.229.118
Audiodude (talk | contribs)
Welcome to the Noisebridge PyClass!: Remove defunct JupyterHub
 
(125 intermediate revisions by 57 users not shown)
Line 1: Line 1:
=== PSAs and Events ===
{{python}}
<big style="color: red">As of July 2025, the Python class has ended and there are no meetings. There are currently no plans to start it back up, [[Do-ocracy|but you can]]!</big>{{headerbox}}<font size=5>'''PyClass''' is an introductory Python course run by the Noisebridge community. It helps students solve common programming problems while learning about the language.</font>
*'''WHEN:''' Mondays from 7PM -9PM. Check [https://www.meetup.com/noisebridge/ Meetup]. If you have not been to Noisebridge before, please try to arrive 15 minutes early so that you can be introduced to the space.
*'''ORGANIZERS:''' [[User:Audiodude|Travis Briggs]] (tmoney on Discord)
{{boxend}}


'''PSA 10-6-15:''' Class is currently only on MONDAY. THURSDAY meetings are not happening until a second instructor starts again.
== Welcome to the Noisebridge PyClass! ==
The class is completely free and open to complete beginners and those with some Python experience alike! We will have lectures as well as some class/group exercises we will work on together, so please bring a laptop if you can.


'''PSA 4-6-15:''' As of today, attend PyClass on MONDAY and THURSDAY. Monday in the Turing classroom will replace the Tuesday session.
=== GitHub ===
The course materials are on [[gh:noisebridge/PythonClass|GitHub]] as well, but if you're using sfpythonlab.com you shouldn't have to look there.


'''PSA 1-26-15:''' Thursday in the Church Classroom will replace the Wednesday session.
=== YouTube ===
Some of the course lessons from series 5 have been [https://www.youtube.com/playlist?list=PLFfm7ymJs-GxWVuqKVt8Ge2TjHNFJHcGt recorded and posted on YouTube]. Be sure to check them out!


'''PSA 10-1-14:''' PyClass starts at 7:00 PM, try to come a few minutes earlier. We want to finish up by nine so people can hack or catch their preferred train home. You can come at any time, but YMMV (your mileage may vary).
== Course schedule and links ==
The overall class structure is 12 weeks of in person lectures. The first half of lectures, on programming and Python basics, will feature half lecture time and half discussion and practice time. The later lectures will be done with some discussion time but little in person practice. The rough estimate of what week is what is listed below, but note that some lessons aren't assigned to calendar dates yet, because we may take weeks off for holidays or when the instructor is not available.


'''PSA 8-19-14:''' The [https://noisebridge.net/wiki/PyClass noisebridge wiki] and [https://github.com/PyClass/PyClass-lesson-plans github readme] files have the same information and updates.
<div class="mw-collapsible mw-collapsed">
==== Series 1 ====


'''PSA 8-16-14:''' The new curriculum for the Noisebridge PyClass is a crash course in the Python standard library, also touching on modules that are popular but not quite part of the standard modules. Scroll down to see the course list.
Series 1 took place between May 8, 2023 and August 14, 2023.


=== Scheduled Weekly Meeting Times ===
Series 2 took place between September 11, 2023 and November 27, 2023.


We set up the space at 6:45 PM - try to arrive early to help if you are able to.
Series 3 took place between March 11, 2024 and July 8, 2024.


* Monday 7:00 - 9:00 PM PST - 'Turing' Classroom
Series 4 took place between October 28, 2024 and Feb 10, 2025.
* Thursday - CANCELLED TEMPORARILY - 7:00 - 9:00 PM PST - 'Church' Classroom


=== Mailing List ===
* May 8, 2023 - Basics featuring Mastodon - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Flessons%2Fseries_1%2F01-Basics-using-Mastodon%2Fmastodon.ipynb Week 1]
* May 15, 2023 - Control structures and booleans - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Flessons%2Fseries_1%2F02-control-structures%2Fcontrol_structures.ipynb Week 2]
* May 22, 2023 - No class!
* May 29, 2023 - Review session
* June 5, 2023 - Algorithms - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Flessons%2Fseries_1%2Fseries_1%2F03-algorithms%2Falgorithms.ipynb Week 3]
* [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Fassignments%2Fseries_1%2F01-assignment%2F01-first-assignment.ipynb Assignment #1]
* June 12, 2023 - No class!
* June 19, 2023 - Review session
* June 26, 2023 - Functions and arguments - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_1%2F04-functions-and-arguments%2Ffunctions_and_arguments.ipynb Week 4]
* July 3, 2023 - Basic SQL in Python - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_1%2F05-sql%2Fsql_in_python.ipynb Week 5]
* July 10, 2023 - Review session
* July 17, 2023 - Data Analysis using Pandas - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_1%2F06-data-analysis%2Fdata_analysis_with_pandas.ipynb Week 6]
* July 24, 2023 - Web Scraping - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_1%2F07-web-scraping%2Fweb_scraping.ipynb Week 7]
* July 31, 2023 - Review session
* August 7, 2023 - Web Apps using Flask part 1 - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_1%2F08-web-apps-with-flask-pt-1%2Fweb_apps_with_flask.ipynb Week 8]
* August 14, 2023 - Web Apps using Flask part 2 - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_1%2F08-web-apps-with-flask-pt-1%2Fweb_apps_with_flask.ipynb&urlpath=tree%2FPythonClass%2Flessons%2Fseries_1%2F09-web-apps-with-flask-pt-2%2Fweb_apps_with_flask_pt_2.ipynb Week 9]


Sign up for this to hear updates and conversations regarding the course!
==== Series 2 ====


[https://www.noisebridge.net/mailman/listinfo/python Python &amp; PyClass Mailing List]
Series 2 took place between September 11, 2023 and November 27, 2023.


The mailing list uses GNU Mailman and pipermail. To search archives you may find it helpful to download the archive .tar.gz (compressed) file and use regular expressions (grep) to search.
* September 11, 2023 - Basics Featuring Mastodon - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Flessons%2Fseries_2%2F01-basics-using-mastodon%2Fmastodon.ipynb Week 1]
* September 18, 2023 - Control structures, booleans, exceptions - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Flessons%2Fseries_2%2F02-control-structures-exceptions%2Fcontrol_structures_exceptions.ipynb Week 2]
* September 25, 2023 - Function definitions and Algorithms - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Flessons%2Fseries_2%2F03-function-definitions-and-algorithms%2Falgorithms.ipynb Week 3]
* [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Fassignments%2Fseries_2%2F01-assignment%2F01-first-assignment.ipynb&branch=main Assignment 1]
* October 2, 2023 - Basic SQL in Python - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Flessons%2Fseries_2%2F04-sql%2Fsql_in_python.ipynb&branch=main Week 4]
* October 9, 2023 - Review Session
* October 16, 2023 - No class!
* October 23, 2023 - OOP in Python (classes and objects) and decorators - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Flessons%2Fseries_2%2F05-classes-objects-decorators%2Fclasses_objects_decorators.py.ipynb&branch=main Week 5]
* October 30, 2023 - Data Analysis with Pandas - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Flessons%2Fseries_2%2F06-data-analysis-with-pandas%2Fdata_analysis_with_pandas.ipynb&branch=main  Week 6]
* November 6, 2023 - Web Scraping - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Flessons%2Fseries_2%2F07-web-scraping%2Fweb-scraping.ipynb&branch=main Week 7]
* November 13, 2023 - Quiz Session (come with your laptop, we will work on coding solutions together)
* November 20, 2023 - No Class!
* November 27, 2023 - Web Apps with Flask, part 1 - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&urlpath=tree%2FPythonClass%2Flessons%2Fseries_2%2F08-web-apps-with-flask-pt-1%2Fweb_apps_with_flask.ipynb&branch=main Week 8]
* December 4, 2023 - Web Apps with Flask, part 2 - Link TBD


The Python Class Google Group Closed on Tuesday, November 3rd, 2015.
==== Series 3 ====


=== Class Description, Goals, and Ideal Student ===
Series 3 took place between March 11, 2024 and July 8, 2024. The first 7 lessons cover language and programming basics, while the last 5 cover interesting things you can do with Python.


The pace of the courses will be fast, and the materials will be available online 24/7. We plan to frequently repeat modules with new twists as we iterate over course materials.
* Lesson 1 (Mar 11, 2024) - Introduction and basics, featuring Mastodon - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_3%2F01-basics-using-mastodon%2Fmastodon.ipynb sfpythonlab.com Notebook]
* Lesson 2 (Mar 18, 2024) - Control structures and booleans - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_3%2F02-control-structures-booleans%2Fcontrol_structures_booleans.ipynb sfpythonlab.com Notebook]
* Lesson 3 (Mar 25, 2024) - Exceptions - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_3%2F03-exceptions%2Fexceptions.ipynb sfpythonlab.com Notebook]
* April 1, 2024 - CANCELLED (Noisebridge #reboot)
* April 8, 2024 - CANCELLED (no instructors available)
* Lesson 4 (April 15, 2024) - Defining and calling functions - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_3%2F04-function-definitions%2Ffunction_definitions.ipynb sfpythonlab.com Notebook]
* Lesson 5 (April 22, 2024) - Algorithms, part 1 - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_3%2F05-algorithms-pt-1%2Falgorithms_pt_1.ipynb sfpythonlab.com Notebook]
* April 29, 2024 - CANCELLED (no instructors available)
* May 6, 2024 - Review session (no new material)
* Lesson 6 (May 13, 2024) - Object oriented programming in Python (classes and objects) - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_3%2F06-classes-objects-decorators%2Fclasses_objects_decorators.py.ipynb sfpythonlab.com Notebook]
* Lesson 7 (May 20, 2024) - Install Fest! Regex; Dates; Recursion - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_3%2F07-regex-dates-recursion%2F07_regex_dates_recursion.ipynb sfpythonlab.com Notebook]
* May 27, 2024 - Review session
* Lesson 8 (June 3, 2024) - Basic SQL/Data analysis with sqlite and Pandas - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_3%2F08-data-analysis-sql-pandas%2Fdata_analysis_sql_pandas.ipynb sfpythonlab.com Notebook]
* Lesson 9 (June 10, 2024) - Consuming APIs, AI - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_3%2F09-api-and-ai%2Fapi_and_ai.ipynb sfpythonlab.com Notebook]
* Lesson 10 (June 17, 2024) - Web scraping - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_3%2F10-web-scraping%2Fweb-scraping.ipynb sfpythonlab.com Notebook]
* June 24, 2024 - Review session (low attendance)
* Lesson 11 (July 1 2024) - Web apps with Flask, part 1 - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2Fseries_3%2F11-web-apps-with-flask%2Fweb_apps_with_flask.ipynb sfpythonlab.com Notebook] - [https://replit.com/join/pwqoebpjfh-travisbriggs1 shared replit]
* July 8, 2024 - Review session
Assignments:


A major PyClass goal is to break down the courses into independent units. In other words, you won't fall behind if you miss a week. Sounds good, right?
* Basic Python assignment (after lesson 5) - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fassignments%2Fseries_2%2F01-assignment%2F01-first-assignment.ipynb sfpythonlab.com Notebook]
* Web scraping/SQL/Pandas assignment (after lesson 10) - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fassignments%2Fseries_2%2F02-web-scraping%2F02-assignment.ipynb sfpythonlab.com Notebook]


To best experience the course, spend a short time reviewing the course materials before you come in. If you wish to know this week's courses, please join the mailing list and send an email out to PyClass@googlegroups.com
Quizzes:


Lessons are [https://github.com/PyClass/PyClassLessons available on Github].
* Quiz 1 - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fquizzes%2F01-quiz.ipynb sfpythonlab.com Notebook]
Random Notebooks:


===== The 'ideal student' for this course can grasp the following code: =====
* Context managers - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Frandom%2Fcontext_managers.ipynb sfpythonlab.com Notebook]


(Feel free to use web resources to look up anything you don't understand)
==== Series 4 ====


<source lang="python">letter_frequency_dict = {}
Series 4 took place between October 28, 2024 and Feb 10, 2025. The first 7 lessons cover language and programming basics, while the last 5 cover interesting things you can do with Python.
word = "noisebridge"
for letter in word:
    times = letter_frequency_dict.get(letter, 0)
    times += 1
    letter_frequency_dict[letter] = times</source>
===== We use the [http://www.criticalthinking.org/pages/socratic-teaching/606 Socratic Method] =====


====== A Socratic questioner should ======
* Lesson 1 (Oct 28, 2024) - Introduction and basics, featuring Mastodon - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F01-basics-using-mastodon%2Fmastodon.ipynb sfpythonlab.com Notebook]
* Lesson 2 (Nov 4, 2024) - Control structures and booleans - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F02-control-structures-booleans%2Fcontrol_structures_booleans.ipynb sfpythonlab.com Notebook]
* ''Nov 11, 2024 -- Cancelled, low attendance''
* ''Nov 18, 2024 -- Cancelled, instructor ill''
* Lesson 3 (Nov 25, 2024) - More building blocks - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F03-more-building-blocks%2Fmore_building_blocks.ipynb sfpythonlab.com Notebook]
* ''Dec 2, 2024 -- Review session, low attendance''
* Lesson 4 (Dec 9, 2024) - Defining and calling functions - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F04-function-definitions%2Ffunction_definitions.ipynb sfpythonlab.com Notebook]
* Lesson 5 (Dec 16, 2024) - Algorithms, part 1 - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F05-algorithms-pt-1%2Falgorithms_pt_1.ipynb sfpythonlab.com Notebook]
* Jan 13, 2025 -- New Year review session
* ''Jan 20, 2025 - No class, MLK Jr day''
* Lesson 6 (Jan 27, 2025) - Object oriented programming in Python (classes and objects) - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F06-classes-objects-decorators%2Fclasses_objects_decorators.py.ipynb sfpythonlab.com Notebook]
* Lesson 7 (February 3, 2025) - Review (and/or Protobufs/Bazel/gRPC)
* Lesson 8 (CANCELLED) - Basic SQL/Data analysis with sqlite and Pandas - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F08-data-analysis-sql-pandas%2Fdata_analysis_sql_pandas.ipynb sfpythonlab.com Notebook]
* Lesson 9 (CANCELLED) - Consuming APIs, AI - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F09-api-and-ai%2Fapi_and_ai.ipynb sfpythonlab.com Notebook]
* Lesson 10 (CANCELLED) - Web scraping - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F10-web-scraping%2Fweb-scraping.ipynb sfpythonlab.com Notebook]
* Lesson 11 (CANCELLED) - Web apps with Flask, part 1 - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F11-web-apps-with-flask-pt-1%2Fweb_apps_with_flask.ipynb sfpythonlab.com Notebook]


# keep the discussion focused
====Series 5====
# keep the discussion fact based*
# stimulate the discussion with probing questions
# periodically summarize what has and what has not been dealt with and/or resolved
# draw as many students as possible into the discussion.


* [https://en.wikipedia.org/wiki/Intellectual_responsibility intellectually responsible] can be effectively replaced with 'fact based' for our needs.
Series 5 took place between February and June 2025.


=== New Student Reading ===
Series 5 starts fresh on Mon Feb 24. We'll be experimenting with a new format for this series, so please bear with us. The idea is to intentionally repeat lectures, when possible, or otherwise save those repeat sessions for use as review. We also would like to integrate the "enrichment" lessons, which were previously backloaded to the end of the course, into the normal schedule.


If you are new to python or programming in general here are some excellent resources:<br />
A month or two of Series 5 lectures might look like:
-[http://learnpythonthehardway.org/ Learn Python the Hardway] - great guide for total beginner<br />
-[http://www.swaroopch.com/notes/python/ Byte of Python] - nice guide for total beginner and new to python<br />
-[https://docs.python.org/2/tutorial/ Excellent Official Python Tutorial - 2.7.8] - great for new to python<br />
-[http://shop.oreilly.com/product/0636920028154.do Learning Python 5th edition (also at sf lib)] - A comprehensive guide to the language and its uses<br />
-[http://pymotw.com/2/ Python Module of the Week] - Learning the standard library by example<br />
-[https://www.python.org/doc/ The docs themselves! 2.x for this class] - Learn what is and how to use the standard library


There are many, many good resources for learning the language of Python and how to do awesome things with it. Those listed above are just a few based on personal experience and strong recommendations.
Week 1 - Lesson 1


=== OS / Environment / Versions ===
Week 2 - Lesson 2


This section is under development.
Week 3 - Lesson 3


[https://www.digitalocean.com/?refcode=1a1061eaf303 Digital Ocean $10 Credit]
Week 4 - Enrichment A


[http://aws.amazon.com/free/ Amazon's AWS has a free tier that allows you 750 compute hours every month of their t2.micro instances for 12 months]
''followed by some repeats:''


-Use EC2 to create an instance from the Ubuntu 12.04 AMI for the most well known and supported platform that will come with Python 2 installed
Week 5 - Lesson 2


For the sake of our sanity we use Python 2 for this course.
Week 6 - Lesson 3


Installing Python with [http://docs.python-guide.org/en/latest/ The Hitchhiker’s Guide to Python!]
Week 7 - Lesson 4


Emergency Python Command Line: http://repl.it/languages/Python
Week 8 - Enrichment B


'''We accept refugees using all operating systems. You will be politely prodded in the direction of solutions that are closer to posix standards: http://en.wikipedia.org/wiki/POSIX#Mostly_POSIX-compliant'''
The downside of this structure is that the course will last 24 weeks (about 6 months). And there will be times when the class is definitively cancelled, such as 4th of July and other holidays. Please be patient as we experiment with this, and we will definitely be collecting feedback from attendees and will be willing to "pivot" if it's not working.


Some routes:<br />
This structure allows for folks to more easily "jump in" when they have time, and not worry too much about missing a lecture or two. It also allows us to leverage additional volunteers besides Travis to teach lessons. The thought is that if it's the second time going over Lecture 3, students are already somewhat familiar with the material and the notebook should be up to date to follow.
1. Install a linux virtual machine on another computer using virtualbox.<br />
2. Use the command line in your apple machine.<br />
3. Explore POSIX for windows: http://en.wikipedia.org/wiki/POSIX#POSIX_for_Windows


Another critical tool is git:<br />
If a Lesson has a date, that is the date that it is planned to be taught. Anything TBD will be scheduled later in the course as schedules are better known. There may be weeks when there is no lecture, check: Noisebridge [[Discord]] #python channel (best source), this wiki, and almost never rely on Meetup.
''Windows: http://git-scm.com/download/win<br />
{| class="wikitable"
''Mac: http://git-scm.com/download/mac<br />
!Date
*Linux: (use your package manager)
!Lesson
!Title
!sfpythonlab.com link
|-
|Feb 24, 2025
|1
|Introduction and basics, featuring Mastodon
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F01-basics-using-mastodon%2Fmastodon.ipynb Notebook]
|-
|Mar 3, 2025
|2
|Control structures and booleans
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F02-control-structures-booleans%2Fcontrol_structures_booleans.ipynb Notebook]
|-
|Mar 10, 2025
|3
|More building blocks
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F03-more-building-blocks%2Fmore_building_blocks.ipynb Notebook]
|-
|Mar 17, 2024
|Enrich A
|File system operations, organizing media libraries
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fenrichment%2FA_file-system-operations%2Ffile-system-operations.ipynb Notebook]
|-
|Mar 24, 2025
|2 (repeat)
|Control structures and booleans
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F02-control-structures-booleans%2Fcontrol_structures_booleans.ipynb Notebook]
|-
|Mar 31, 2025
|3 (repeat)
|More building blocks
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F03-more-building-blocks%2Fmore_building_blocks.ipynb Notebook]
|-
|Apr 7, 2025
|4
|Defining and calling functions
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F04-function-definitions%2Ffunction_definitions.ipynb Notebook]
|-
|Apr 14, 2025
|Enrich B (prev 8)
|Basic SQL/Data analysis with sqlite and Pandas
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fenrichment%2FB_data-analysis-sqlite-pandas%2Fdata_analysis_sql_pandas.ipynb Notebook]
|-
|Apr 21, 2025
|
|'''NO CLASS'''
|
|-
|Apr 28, 2025
|3 (repeat)
|More building blocks
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F03-more-building-blocks%2Fmore_building_blocks.ipynb Notebook]
|-
|May 5, 2025
|5
|Algorithms, part 1
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F05-algorithms-pt-1%2Falgorithms_pt_1.ipynb Notebook]
|-
|May 12, 2025
|
|'''NO CLASS'''
|
|-
|May 19, 2025
|5A
|Algorithms, part 2
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F05A-algorithms-part-2%2Falgorithms_pt_2.ipynb Notebook]
|-
|May 26, 2025
|
|'''NO CLASS (Memorial Day)'''
|
|-
|Jun 2, 2025
|Enrich C (prev 9)
|Consuming APIs, AI
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fenrichment%2FC_api-and-ai%2Fapi_and_ai.ipynb Notebook]
|-
|Jun 9, 2025
|
|'''NO CLASS (protests)'''
|
|-
|Jun 16 2025
|
|'''NO CLASS'''
|
|-
|Jun 23, 2025
|6
| Object oriented programming in Python
(classes and objects)
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F06-classes-objects-decorators%2Fclasses_objects_decorators.py.ipynb Notebook]
|-
|Jun 30, 2025
|self study
|'''NO CLASS (self study)'''
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F05-algorithms-pt-1%2Falgorithms_pt_1.ipynb Part 1][https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F05A-algorithms-part-2%2Falgorithms_pt_2.ipynb Part 2]
|-
|Jul 7, 2025
|Enrich D
|Web scraping
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F10-web-scraping%2Fweb-scraping.ipynb Notebook]
|-
|Jul 14, 2025
|6 (repeat)
| Object oriented programming in Python
(classes and objects)
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F06-classes-objects-decorators%2Fclasses_objects_decorators.py.ipynb Notebook]
|-
|Jul 21, 2025
|
|'''NO CLASS'''
|
|-
|
|
|'''REMAINING LESSONS CANCELLED'''
|
|-
|
|
| '''See you in Series 6!'''
|
|}
Assignments:
*Basic Python assignment (after lesson 5) - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fassignments%2Fseries_2%2F01-assignment%2F01-first-assignment.ipynb sfpythonlab.com Notebook]
*Web scraping/SQL/Pandas assignment (after lesson 10) - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fassignments%2Fseries_2%2F02-web-scraping%2F02-assignment.ipynb sfpythonlab.com Notebook]


=== Free to all - please donate to Noisebridge! ===
Quizzes:


The course is free although we recommend a donation to Noisebridge. Donations go to: https://www.noisebridge.net/wiki/Donate_or_Pay_Dues Recommended Donations: $15, $50, $200+ Recommended monthly donations: $10, $20, $40, $80+ / month
*Quiz 1 - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fquizzes%2F01-quiz.ipynb sfpythonlab.com Notebook]
 
Random Notebooks:
 
*Context managers - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Faudiodude%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Frandom%2Fcontext_managers.ipynb sfpythonlab.com Notebook]
</div>
 
===Series 6 (TBD)===
 
Series 6 is not currently scheduled, but may be starting in September 2025.
 
===General course outline and links===
 
Here is a list of lessons/lectures that are generally taught in the class, as of Series 5. The list includes Jupyter notebook links, both for [https://sfpythonlab.com sfpythonlab.com] (DM @tmoney on [[Discord]] for the password) as well as links to the notebooks directly on GitHub (no password needed).
{| class="wikitable"
!Lesson
!Title
!sfpythonlab.com link
!GitHub link
!YouTube recording
|-
|1
|Introduction and basics, featuring Mastodon
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F01-basics-using-mastodon%2Fmastodon.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/lessons/01-basics-using-mastodon/mastodon.ipynb|GitHub]]
|
|-
|2
|Control structures and booleans
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F02-control-structures-booleans%2Fcontrol_structures_booleans.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/lessons/02-control-structures-booleans/control_structures_booleans.ipynb|GitHub]]
|[https://www.youtube.com/watch?v=2XALGw2P4Ac&list=PLFfm7ymJs-GxWVuqKVt8Ge2TjHNFJHcGt&index=1 YouTube]
|-
|3
|More building blocks
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F03-more-building-blocks%2Fmore_building_blocks.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/lessons/03-more-building-blocks/more_building_blocks.ipynb|GitHub]]
|[https://www.youtube.com/watch?v=DxcrHf5BMxg&list=PLFfm7ymJs-GxWVuqKVt8Ge2TjHNFJHcGt&index=2 YouTube]
|-
|Enrich A
|File system operations, organizing media libraries
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fenrichment%2FA_file-system-operations%2Ffile-system-operations.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/enrichment/A_file-system-operations/file-system-operations.ipynb|GitHub]]
|
|-
|4
|Defining and calling functions
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F04-function-definitions%2Ffunction_definitions.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/lessons/04-function-definitions/function_definitions.ipynb|GitHub]]
|[https://www.youtube.com/watch?v=lHMQudnD774&list=PLFfm7ymJs-GxWVuqKVt8Ge2TjHNFJHcGt&index=3 YouTube]
|-
|Enrich B (prev 8)
|Basic SQL/Data analysis with sqlite and Pandas
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fenrichment%2FB_data-analysis-sqlite-pandas%2Fdata_analysis_sql_pandas.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/enrichment/B_data-analysis-sqlite-pandas/data_analysis_sql_pandas.ipynb|GitHub]]
|[https://www.youtube.com/watch?v=y3PckH2S5Ms&list=PLFfm7ymJs-GxWVuqKVt8Ge2TjHNFJHcGt&index=4 YouTube]
|-
|5
|Algorithms, part 1
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F05-algorithms-pt-1%2Falgorithms_pt_1.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/lessons/05-algorithms-pt-1/algorithms_pt_1.ipynb|GitHub]]
|[https://www.youtube.com/watch?v=ovNC6Z94df0&list=PLFfm7ymJs-GxWVuqKVt8Ge2TjHNFJHcGt&index=6 YouTube]
|-
|5A
|Algorithms, part 2
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F05A-algorithms-part-2%2Falgorithms_pt_2.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/lessons/05A-algorithms-part-2/algorithms_pt_2.ipynb|GitHub]]
|
|-
|Enrich C (prev 9)
|Consuming APIs, AI
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Fenrichment%2FC_api-and-ai%2Fapi_and_ai.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/enrichment/C_api-and-ai/api_and_ai.ipynb|GitHub]]
|
|-
|6
| Object oriented programming in Python
(classes and objects)
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F06-classes-objects-decorators%2Fclasses_objects_decorators.py.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/lessons/06-classes-objects-decorators/classes_objects_decorators.py.ipynb|GitHub]]
|
|-
|Enrich D
|Web scraping
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F10-web-scraping%2Fweb-scraping.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/lessons/10-web-scraping/web-scraping.ipynb|GitHub]]
|
|-
|11
|Web apps with Flask
|[https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F11-web-apps-with-flask-pt-1%2Fweb_apps_with_flask.ipynb Notebook]
|[[gh:noisebridge/PythonClass/blob/main/lessons/11-web-apps-with-flask-pt-1/web_apps_with_flask.ipynb|GitHub]]
|
|}
===Intended audience and pace===
 
The course is appropriate for both beginners to Python and beginning programmers in general. If you've never done any programming at all before, it might be more challenging because we won't spend much time discussing fundamentals of things such as imperative programming (how programs execute), variable scoping, function execution and program flow, or boolean logic. Some of these you will "pick up" just by seeing the lectures, however.
 
This isn't an exhaustive tour of every Python language feature, and sometimes we will introduce features or syntax in a lecture that weren't fully discussed previously. There is probably a fair amount of "I don't understand exactly '''why''' this works, but I understand it works" if you're completely new.
 
===Online classes ===
 
The class is only offered in person at Noisebridge. There is no online Zoom/Jitsi/etc, and no live online component is planned, sorry.
 
 
==Python Setup==
You do not need to install Python to attend this class. All lectures, coursework and assignments are provided via a [https://sfpythonlab.com Jupyter Hub] instance, that allows students to create files and run Python code.
 
The exception of this are the final two lectures on Flask apps, which require Python code on your own machine in order to run the examples. But you can follow along in the in-person lecture as well as the lesson notebooks without an install.
 
If you would like help getting a Python environment set up on your computer anyway, please speak with one of the instructors, or ask in #python on Discord.
 
===Relationship to Computer Programming Study Group===
For a few months in 2024, the Python class was converted into a [[Computer Programming Study Group]]. This was intended to be a more open format for discussing topics other than Python programming. As of Oct 21 2024, the time slot has been converted back to this Python class.
 
===Relationship to Python Project Meetup ===
Some of the people who "graduated" from series 3 of the Python class wanted to continue working together on their skills, so we formed the [[Python Project Meetup]]. The project meetup is facilitated by tmoney as well, but is not mutually exclusive with this class: everyone is welcome to attend one or both.
 
==Helping out and getting additional help==
Discussions of the class and announcements will take place in the #python channel on Noisebridge [[Discord]] (under classes).
 
PyClass runs on volunteer effort, and we would love to have your help keeping it it excellent!  The simplest and most appreciated contributions are simple examples of the projects you want to work on, the bugs you encounter, and the concepts you find difficult. Especially if they are succinct or easy to turn into problems that others can learn from.
 
We are always looking for more people to teach classes.  This is a great way to solidify your understanding, find new and exciting edge cases, and help others.  We welcome people teaching existing classes, or their own classes on the subjects they are most excited about.  Remember, the only thing that qualifies people to run PyClass is having enough enthusiasm to show up.
 
If you need help getting started, getting unstuck, or getting someone to look at your code we are happy to help!  Feel free to reach out through Meetup or Discord at any time!
 
===Code of Conduct===
PyClass holds to the Noisebridge [[Community Standards]], and the Noisebridge [[Anti-Harassment Policy]] which we take seriously.
 
We also follow the Recurse Center [https://www.recurse.com/social-rules social rules], because they are excellent at creating an environment where people are comfortable learning.
 
===Python Resources===
 
For learning programming, we recommend that you consult multiple resources with a variety of formats and priorities.  Some of our favorite resources are:
 
*[https://roadmap.sh/python Roadmap.sh roadmap for python] - Lots of stuff here, mostly a lot of keywords so that you can Google them. Learn things when you need to, not a study guide.
* [http://learnpythonthehardway.org/ Learn Python the Hard Way] - A clear introduction to python intended for people new to programming.  Written well enough to be useful for more advanced programmers as well.  Available in the Noisebridge library. <br />
*[https://docs.python.org/3 Python Documentation] - The Python documentation is a well written and comprehensive reference.  It isn't a page turner, but should be one of your first stops when confused. <br />
*[http://pymotw.com/3/ Python Module of the Week] - Python comes with batteries included, but it can still be hard find the best tool among the hundreds of modules it provides.  Python Module of the Week walks you through each of the standard library modules provided by the language.  <br />
* [https://pyvideo.org/ pyvideo] - A searchable index of Python conference talks.  Drop by class for some specific recommendations! <br />
*[http://pythontutor.com/ python tutor] - pythontutor.com allows you to walk through small pieces of code and understand how Python thinks of them.  An excellent resource for debugging mysterious Python behavior.
 
There are more good resources for learning Python than we can list here.  Do you have a favorite that you think is missing?  Let us know!
 
===Free to all - please donate to Noisebridge!===
 
This course only happens because the Noisebridge community provides a space for it to exist.  Maintaining the space and broader community is difficult and thankless work. The course is free, but if you want to help the community pay rent go to: https://www.noisebridge.net/wiki/Donate_or_Pay_Dues.
 
Recommended Donations: $15, $50, $200+ Recommended monthly donations: $10, $20, $40, $80+ / month
 
[[Category:Programming languages]]

Latest revision as of 22:33, 4 February 2026

Noisebridge | About | Visit | 272 | Manual | Contact | Guilds | Stuff | Events | Projects | Meetings | Donate E
Guilds (Volunteer) | Maintainers | Meta | Code | Electronics | Fabrication | Games | Sewing | Music | AI | Neuro | Philosophy | Funding | Art | Security | Ham | WGs E
Code | FreeCodeCamp | PyClass | Gamebridge | Circuit Hacking Monday | Machine Learning | Python Project Meetup <font-size=2>E
PyClass | Python/OrganizerMeetings | Edit

As of July 2025, the Python class has ended and there are no meetings. There are currently no plans to start it back up, but you can!

PyClass is an introductory Python course run by the Noisebridge community. It helps students solve common programming problems while learning about the language.

  • WHEN: Mondays from 7PM -9PM. Check Meetup. If you have not been to Noisebridge before, please try to arrive 15 minutes early so that you can be introduced to the space.
  • ORGANIZERS: Travis Briggs (tmoney on Discord)

Welcome to the Noisebridge PyClass!

[edit | edit source]

The class is completely free and open to complete beginners and those with some Python experience alike! We will have lectures as well as some class/group exercises we will work on together, so please bring a laptop if you can.

GitHub

[edit | edit source]

The course materials are on GitHub as well, but if you're using sfpythonlab.com you shouldn't have to look there.

YouTube

[edit | edit source]

Some of the course lessons from series 5 have been recorded and posted on YouTube. Be sure to check them out!

[edit | edit source]

The overall class structure is 12 weeks of in person lectures. The first half of lectures, on programming and Python basics, will feature half lecture time and half discussion and practice time. The later lectures will be done with some discussion time but little in person practice. The rough estimate of what week is what is listed below, but note that some lessons aren't assigned to calendar dates yet, because we may take weeks off for holidays or when the instructor is not available.

Series 1

[edit | edit source]

Series 1 took place between May 8, 2023 and August 14, 2023.

Series 2 took place between September 11, 2023 and November 27, 2023.

Series 3 took place between March 11, 2024 and July 8, 2024.

Series 4 took place between October 28, 2024 and Feb 10, 2025.

  • May 8, 2023 - Basics featuring Mastodon - Week 1
  • May 15, 2023 - Control structures and booleans - Week 2
  • May 22, 2023 - No class!
  • May 29, 2023 - Review session
  • June 5, 2023 - Algorithms - Week 3
  • Assignment #1
  • June 12, 2023 - No class!
  • June 19, 2023 - Review session
  • June 26, 2023 - Functions and arguments - Week 4
  • July 3, 2023 - Basic SQL in Python - Week 5
  • July 10, 2023 - Review session
  • July 17, 2023 - Data Analysis using Pandas - Week 6
  • July 24, 2023 - Web Scraping - Week 7
  • July 31, 2023 - Review session
  • August 7, 2023 - Web Apps using Flask part 1 - Week 8
  • August 14, 2023 - Web Apps using Flask part 2 - Week 9

Series 2

[edit | edit source]

Series 2 took place between September 11, 2023 and November 27, 2023.

  • September 11, 2023 - Basics Featuring Mastodon - Week 1
  • September 18, 2023 - Control structures, booleans, exceptions - Week 2
  • September 25, 2023 - Function definitions and Algorithms - Week 3
  • Assignment 1
  • October 2, 2023 - Basic SQL in Python - Week 4
  • October 9, 2023 - Review Session
  • October 16, 2023 - No class!
  • October 23, 2023 - OOP in Python (classes and objects) and decorators - Week 5
  • October 30, 2023 - Data Analysis with Pandas - Week 6
  • November 6, 2023 - Web Scraping - Week 7
  • November 13, 2023 - Quiz Session (come with your laptop, we will work on coding solutions together)
  • November 20, 2023 - No Class!
  • November 27, 2023 - Web Apps with Flask, part 1 - Week 8
  • December 4, 2023 - Web Apps with Flask, part 2 - Link TBD

Series 3

[edit | edit source]

Series 3 took place between March 11, 2024 and July 8, 2024. The first 7 lessons cover language and programming basics, while the last 5 cover interesting things you can do with Python.

Assignments:

Quizzes:

Random Notebooks:

Series 4

[edit | edit source]

Series 4 took place between October 28, 2024 and Feb 10, 2025. The first 7 lessons cover language and programming basics, while the last 5 cover interesting things you can do with Python.

Series 5

[edit | edit source]

Series 5 took place between February and June 2025.

Series 5 starts fresh on Mon Feb 24. We'll be experimenting with a new format for this series, so please bear with us. The idea is to intentionally repeat lectures, when possible, or otherwise save those repeat sessions for use as review. We also would like to integrate the "enrichment" lessons, which were previously backloaded to the end of the course, into the normal schedule.

A month or two of Series 5 lectures might look like:

Week 1 - Lesson 1

Week 2 - Lesson 2

Week 3 - Lesson 3

Week 4 - Enrichment A

followed by some repeats:

Week 5 - Lesson 2

Week 6 - Lesson 3

Week 7 - Lesson 4

Week 8 - Enrichment B

The downside of this structure is that the course will last 24 weeks (about 6 months). And there will be times when the class is definitively cancelled, such as 4th of July and other holidays. Please be patient as we experiment with this, and we will definitely be collecting feedback from attendees and will be willing to "pivot" if it's not working.

This structure allows for folks to more easily "jump in" when they have time, and not worry too much about missing a lecture or two. It also allows us to leverage additional volunteers besides Travis to teach lessons. The thought is that if it's the second time going over Lecture 3, students are already somewhat familiar with the material and the notebook should be up to date to follow.

If a Lesson has a date, that is the date that it is planned to be taught. Anything TBD will be scheduled later in the course as schedules are better known. There may be weeks when there is no lecture, check: Noisebridge Discord #python channel (best source), this wiki, and almost never rely on Meetup.

Date Lesson Title sfpythonlab.com link
Feb 24, 2025 1 Introduction and basics, featuring Mastodon Notebook
Mar 3, 2025 2 Control structures and booleans Notebook
Mar 10, 2025 3 More building blocks Notebook
Mar 17, 2024 Enrich A File system operations, organizing media libraries Notebook
Mar 24, 2025 2 (repeat) Control structures and booleans Notebook
Mar 31, 2025 3 (repeat) More building blocks Notebook
Apr 7, 2025 4 Defining and calling functions Notebook
Apr 14, 2025 Enrich B (prev 8) Basic SQL/Data analysis with sqlite and Pandas Notebook
Apr 21, 2025 NO CLASS
Apr 28, 2025 3 (repeat) More building blocks Notebook
May 5, 2025 5 Algorithms, part 1 Notebook
May 12, 2025 NO CLASS
May 19, 2025 5A Algorithms, part 2 Notebook
May 26, 2025 NO CLASS (Memorial Day)
Jun 2, 2025 Enrich C (prev 9) Consuming APIs, AI Notebook
Jun 9, 2025 NO CLASS (protests)
Jun 16 2025 NO CLASS
Jun 23, 2025 6 Object oriented programming in Python

(classes and objects)

Notebook
Jun 30, 2025 self study NO CLASS (self study) Part 1Part 2
Jul 7, 2025 Enrich D Web scraping Notebook
Jul 14, 2025 6 (repeat) Object oriented programming in Python

(classes and objects)

Notebook
Jul 21, 2025 NO CLASS
REMAINING LESSONS CANCELLED
See you in Series 6!

Assignments:

Quizzes:

Random Notebooks:

Series 6 (TBD)

[edit | edit source]

Series 6 is not currently scheduled, but may be starting in September 2025.

[edit | edit source]

Here is a list of lessons/lectures that are generally taught in the class, as of Series 5. The list includes Jupyter notebook links, both for sfpythonlab.com (DM @tmoney on Discord for the password) as well as links to the notebooks directly on GitHub (no password needed).

Lesson Title sfpythonlab.com link GitHub link YouTube recording
1 Introduction and basics, featuring Mastodon Notebook GitHub
2 Control structures and booleans Notebook GitHub YouTube
3 More building blocks Notebook GitHub YouTube
Enrich A File system operations, organizing media libraries Notebook GitHub
4 Defining and calling functions Notebook GitHub YouTube
Enrich B (prev 8) Basic SQL/Data analysis with sqlite and Pandas Notebook GitHub YouTube
5 Algorithms, part 1 Notebook GitHub YouTube
5A Algorithms, part 2 Notebook GitHub
Enrich C (prev 9) Consuming APIs, AI Notebook GitHub
6 Object oriented programming in Python

(classes and objects)

Notebook GitHub
Enrich D Web scraping Notebook GitHub
11 Web apps with Flask Notebook GitHub

Intended audience and pace

[edit | edit source]

The course is appropriate for both beginners to Python and beginning programmers in general. If you've never done any programming at all before, it might be more challenging because we won't spend much time discussing fundamentals of things such as imperative programming (how programs execute), variable scoping, function execution and program flow, or boolean logic. Some of these you will "pick up" just by seeing the lectures, however.

This isn't an exhaustive tour of every Python language feature, and sometimes we will introduce features or syntax in a lecture that weren't fully discussed previously. There is probably a fair amount of "I don't understand exactly why this works, but I understand it works" if you're completely new.

Online classes

[edit | edit source]

The class is only offered in person at Noisebridge. There is no online Zoom/Jitsi/etc, and no live online component is planned, sorry.


Python Setup

[edit | edit source]

You do not need to install Python to attend this class. All lectures, coursework and assignments are provided via a Jupyter Hub instance, that allows students to create files and run Python code.

The exception of this are the final two lectures on Flask apps, which require Python code on your own machine in order to run the examples. But you can follow along in the in-person lecture as well as the lesson notebooks without an install.

If you would like help getting a Python environment set up on your computer anyway, please speak with one of the instructors, or ask in #python on Discord.

Relationship to Computer Programming Study Group

[edit | edit source]

For a few months in 2024, the Python class was converted into a Computer Programming Study Group. This was intended to be a more open format for discussing topics other than Python programming. As of Oct 21 2024, the time slot has been converted back to this Python class.

Relationship to Python Project Meetup

[edit | edit source]

Some of the people who "graduated" from series 3 of the Python class wanted to continue working together on their skills, so we formed the Python Project Meetup. The project meetup is facilitated by tmoney as well, but is not mutually exclusive with this class: everyone is welcome to attend one or both.

Helping out and getting additional help

[edit | edit source]

Discussions of the class and announcements will take place in the #python channel on Noisebridge Discord (under classes).

PyClass runs on volunteer effort, and we would love to have your help keeping it it excellent! The simplest and most appreciated contributions are simple examples of the projects you want to work on, the bugs you encounter, and the concepts you find difficult. Especially if they are succinct or easy to turn into problems that others can learn from.

We are always looking for more people to teach classes. This is a great way to solidify your understanding, find new and exciting edge cases, and help others. We welcome people teaching existing classes, or their own classes on the subjects they are most excited about. Remember, the only thing that qualifies people to run PyClass is having enough enthusiasm to show up.

If you need help getting started, getting unstuck, or getting someone to look at your code we are happy to help! Feel free to reach out through Meetup or Discord at any time!

Code of Conduct

[edit | edit source]

PyClass holds to the Noisebridge Community Standards, and the Noisebridge Anti-Harassment Policy which we take seriously.

We also follow the Recurse Center social rules, because they are excellent at creating an environment where people are comfortable learning.

Python Resources

[edit | edit source]

For learning programming, we recommend that you consult multiple resources with a variety of formats and priorities. Some of our favorite resources are:

  • Roadmap.sh roadmap for python - Lots of stuff here, mostly a lot of keywords so that you can Google them. Learn things when you need to, not a study guide.
  • Learn Python the Hard Way - A clear introduction to python intended for people new to programming. Written well enough to be useful for more advanced programmers as well. Available in the Noisebridge library.
  • Python Documentation - The Python documentation is a well written and comprehensive reference. It isn't a page turner, but should be one of your first stops when confused.
  • Python Module of the Week - Python comes with batteries included, but it can still be hard find the best tool among the hundreds of modules it provides. Python Module of the Week walks you through each of the standard library modules provided by the language.
  • pyvideo - A searchable index of Python conference talks. Drop by class for some specific recommendations!
  • python tutor - pythontutor.com allows you to walk through small pieces of code and understand how Python thinks of them. An excellent resource for debugging mysterious Python behavior.

There are more good resources for learning Python than we can list here. Do you have a favorite that you think is missing? Let us know!

Free to all - please donate to Noisebridge!

[edit | edit source]

This course only happens because the Noisebridge community provides a space for it to exist. Maintaining the space and broader community is difficult and thankless work. The course is free, but if you want to help the community pay rent go to: https://www.noisebridge.net/wiki/Donate_or_Pay_Dues.

Recommended Donations: $15, $50, $200+ Recommended monthly donations: $10, $20, $40, $80+ / month