PyClass: Difference between revisions

From Noisebridge
Jump to navigation Jump to search
Audiodude (talk | contribs)
Series 4: Update dates
Audiodude (talk | contribs)
Welcome to the Noisebridge PyClass!: Remove defunct JupyterHub
 
(32 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{python}}
{{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>
{{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.
*'''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)
*'''ORGANIZERS:''' [[User:Audiodude|Travis Briggs]] (tmoney on Discord)
Line 8: Line 7:
== Welcome to the Noisebridge PyClass! ==
== 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.
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.
=== Jupyter Hub ===
We have our own [https://jupyter.org/hub Jupyter Hub] for the class at [https://sfpythonlab.com https://sfpythonlab.com]. This is free and available for all students of the class as well as the larger Noisebridge community if necessary. Drop by a class to get an account.
Jupyter Hub allows us to post links to all of the lessons that open in your own private version of the document. You can edit the code and experiment with your changes, and follow along with the embedded text. Bring a laptop to the class if you'd like to follow along!


=== GitHub ===
=== 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.
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.
=== 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!


== Course schedule and links ==
== Course schedule and links ==
Line 24: Line 21:


Series 1 took place between May 8, 2023 and August 14, 2023.
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 2 took place between September 11, 2023 and November 27, 2023.
Series 3 took place between March 11, 2024 and July 8, 2024.
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 - [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 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]
Line 45: Line 46:


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


* 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 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]
Line 63: Line 66:
==== Series 3 ====
==== Series 3 ====


Series 3 is the current series! The first 7 lessons cover language and programming basics, while the last 5 cover interesting things you can do with Python.
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.


* 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 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]
Line 94: Line 97:


* 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]
* 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 4 ====
==== Series 4 ====


Series 4 is the current series! The first 7 lessons cover language and programming basics, while the last 5 cover interesting things you can do with Python.
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.


* 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 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]
* 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 11, 2024 -- Cancelled, low attendance''
* Lesson 3 (Nov 18, 2024) - Exceptions - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F03-exceptions%2Fexceptions.ipynb sfpythonlab.com Notebook]
* ''Nov 18, 2024 -- Cancelled, instructor ill''
* Lesson 4 (Nov 25, 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 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]
* Lesson 5 (TBD) - 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]
* ''Dec 2, 2024 -- Review session, low attendance''
* Lesson 6 (TBD) - 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 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 7 (TBD) - Regex; Dates; Recursion - [https://sfpythonlab.com/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnoisebridge%2FPythonClass&branch=main&urlpath=tree%2FPythonClass%2Flessons%2F07-regex%2F07_regex.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]
* Lesson 8 (TBD) - 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]
* Jan 13, 2025 -- New Year review session
* Lesson 9 (TBD) - 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]
* ''Jan 20, 2025 - No class, MLK Jr day''
* Lesson 10 (TBD) - 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 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 11 (TBD) - 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]
* 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]


====Series 5====
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.
{| class="wikitable"
!Date
!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:
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]
* 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]
* 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]


Quizzes:
Quizzes:


* 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]
*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:
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]
*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===


=== Intended audience and pace ===
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.
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.
Line 132: Line 384:
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.
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 ===
===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.
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 ==
 
==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.
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.


Line 143: Line 396:
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.
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 ===
===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.
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 ===
===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.
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 ==
==Helping out and getting additional help==
Discussions of the class and announcements will take place in the #python channel on Noisebridge [[Discord]] (under classes).
Discussions of the class and announcements will take place in the #python channel on Noisebridge [[Discord]] (under classes).


Line 156: Line 409:
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.
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!  There are review sessions held generally every two weeks during the course, where students can feel free to review past course material or bring up any issues they are having. Finally, feel free to reach out through Meetup or Discord at any time!
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 ===
===Code of Conduct===
PyClass holds to the Noisebridge [[Community Standards]], and the Noisebridge [[Anti-Harassment Policy]] which we take seriously.
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.
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 ===
===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:
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 />
* [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 />  
*[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 />
*[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 />
* [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.
*[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!
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! ===
===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.
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.

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