PyClass: Difference between revisions

From Noisebridge
Jump to navigation Jump to search
No edit summary
(→‎Series 3: Update schedule and add Lesson 5 notebook link)
 
(51 intermediate revisions by 32 users not shown)
Line 1: Line 1:
{{python}}
{{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:''' Classes and/or office hours are held Mondays 7:00 - 9:00 PM in the second floor Electronics Room. 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.
*'''MEETUP:''' Mostly organized through [https://meetup.com/noisebridge Meetup]. 
*'''ORGANIZERS:''' Travis B (tmoney on Discord).
{{boxend}}
=== Welcome to the Noisebridge PyClass! ===
=== Welcome to the Noisebridge PyClass! ===


PyClass is an introductory Python course run by the Noisebridge community. It helps students solve common programming problems while learning about the language. Classes are held Mondays 7:00 - 9:00 PM in the 'Church' Classroom, and are mostly organized through [https://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.
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!
 
=== 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 these aren't assigned to calendar dates yet, because we may take weeks off for holidays or when the instructor is not available.


=== Course Material ===
<div class="mw-collapsible mw-collapsed">
The course contains six lessons and assorted guest lectures. Each of the core classes covers a programming tool, from JSON in the first class to deploying a flask webapp in the last. Each class also demonstrates a feature that makes Python special, and when taken together they are a good baseline for effective programming in the language. The current list of classes is:
==== Series 1 ====
 
Series 1 took place between May 8, 2023 and August 14, 2023.
Series 2 took place between September 11, 2023 and November 27, 2023.
 
* 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]
 
==== Series 2 ====
 
* 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
</div>
 
==== 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.
 
* 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 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)
* Lesson 6 (May 6, 2024) - Object oriented programming in Python (classes and objects)
* Lesson 7 (May 13, 2024) - Algorithms, part 2; Recursion; Decorators
* Lesson 8 (TBD) - Basic SQL/Data analysis with sqlite and Pandas
* Lesson 9 (TBD) - Consuming APIs, AI
* Lesson 10 (TBD) - Web scraping
* Lesson 11 (TBD) - Web apps with Flask, part 1
* Lesson 12 (TBD) - Web apps with Flask, part 2
 
=== Course Material (Subject to overhaul) ===
Updated course material is being authored and tracked on [https://github.com/audiodude/PythonClass Github].
 
The course previously contained six lessons and assorted guest lectures. The old list of classes (retained for reference) are:


* Storing and transmitting information with JSON
* Storing and transmitting information with JSON
Line 13: Line 94:
* Web applications with Flask
* Web applications with Flask


The material for these is available on [https://github.com/jgarst/PythonClass/tree/master/course github].  The classes tend to move fast, but can be repeated and have references to related material in the notes.
The material for these is available on [https://github.com/jgarst/PythonClass/tree/master/course the old Github page].


The first three classes (JSON, text data, SQL) are suitable for anyone, but will be more difficult if you are not comfortable using python as a calculator.
=== Intended audience and pace ===


    # importing libraries
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.
    import time
   
    # printing and calling functions
    print(time.ctime())
   
    # variables and math
    calculation = (1 * 2 * 3) / 2 
   
    # strings
    print('I've done some math!', calculation)


* If you are comfortable this program, you will be comfortable with the class. <br \>
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.
* If can understand understand what the program is doing, the class is a good fit for you, but might seem fast.
* If you do not have Python installed on your machine, you are invited to the class, but encouraged to arrange a time with the organizer to get started first.


The last three classes assume familiarity with loops, functions and collections.  If you are comfortable with the following program you will be comfortable with the class.
=== Online classes ===


    frequency_dict = {}
The class is only offered in person at Noisebridge. There is no online Zoom/Jitsi/etc, and no live online component is planned, sorry.
    word = "noisebridge"
   
    for letter in word:
        times = frequency_dict.get(letter, 0)
        times += 1
        frequency_dict[letter] = times


=== Python Setup ===
=== Python Setup ===
We use Python 3, and encourage students to do the same.  The best way to install Python depends on your operating system, but there are good [https://realpython.com/installing-python/ online tutorials] for most cases.  The class uses Jupyter notebooks for slides and example code, but encourages students to run python from text files on their computers.  If you do not have a preferred way of editing programs, Python comes with a simple code editor called IDLE.
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.


Python can be difficult to install. If you don't yet have a programming environment, you are encouraged to message the organizer and get help with setup.
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 want to attend class, but don't have Python installed, you can try it out with [http://repl.it/languages/Python3 repl.it].  This will allow you to follow along every class except the last one, which covers python projects and Flask.  We still recommend installing Python on your computer as soon as possible.
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.


=== 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).
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.
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.
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 usually office hours during the week, announced in the class, and designed to solve these problems. Feel free to reach out over meetup to learn more.
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!


=== Code of Conduct ===
=== Code of Conduct ===
PyClass holds to the Noisebridge [https://www.noisebridge.net/wiki/Community_Standards Community Standards], 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.
Line 64: Line 129:
=== 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 <br />
For learning programming, we recommend that you consult multiple resources with a variety of formats and priorities.  Some of our favorite resources are:
-[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://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://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://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://pyvideo.org/ pyvideo] - A searchable index of Python conference talks.  Drop by class for some specific recommendations! <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://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.
* [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!
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!
Line 75: Line 141:
=== 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. <br />
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
Recommended Donations: $15, $50, $200+ Recommended monthly donations: $10, $20, $40, $80+ / month
[[Category:Programming languages]]

Latest revision as of 15:55, 22 April 2024

Noisebridge | About | Visit | 272 | Manual | Contact | Guilds | Resources | Events | Projects | 5MoF | Meetings | Donate | (Edit)
Guilds | Meta | Code | Electronics | Fabrication | Games | Sewing | Music | AI | Neuro | Philosophy | Funding | Art | Security | Ham | Brew | (Edit)
Code | FreeCodeCamp | PyClass | Gamebridge | Circuit Hacking Monday | Machine Learning | Edit
PyClass | Python/OrganizerMeetings | Edit

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

  • WHEN: Classes and/or office hours are held Mondays 7:00 - 9:00 PM in the second floor Electronics Room. 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.
  • MEETUP: Mostly organized through Meetup.
  • ORGANIZERS: Travis B (tmoney on Discord).

Welcome to the Noisebridge PyClass![edit]

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[edit]

We have our own Jupyter Hub for the class at 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!

Course schedule and links[edit]

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 these 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]

Series 1 took place between May 8, 2023 and August 14, 2023. Series 2 took place between September 11, 2023 and November 27, 2023.

  • 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]

  • 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]

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.

  • Lesson 1 (Mar 11, 2024) - Introduction and basics, featuring Mastodon - sfpythonlab.com Notebook
  • Lesson 2 (Mar 18, 2024) - Control structures and booleans - sfpythonlab.com Notebook
  • Lesson 3 (Mar 25, 2024) - Exceptions - sfpythonlab.com 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 - sfpythonlab.com Notebook
  • Lesson 5 (April 22, 2024) - Algorithms, part 1 - sfpythonlab.com Notebook
  • April 29, 2024 - CANCELLED (no instructors available)
  • Lesson 6 (May 6, 2024) - Object oriented programming in Python (classes and objects)
  • Lesson 7 (May 13, 2024) - Algorithms, part 2; Recursion; Decorators
  • Lesson 8 (TBD) - Basic SQL/Data analysis with sqlite and Pandas
  • Lesson 9 (TBD) - Consuming APIs, AI
  • Lesson 10 (TBD) - Web scraping
  • Lesson 11 (TBD) - Web apps with Flask, part 1
  • Lesson 12 (TBD) - Web apps with Flask, part 2

Course Material (Subject to overhaul)[edit]

Updated course material is being authored and tracked on Github.

The course previously contained six lessons and assorted guest lectures. The old list of classes (retained for reference) are:

  • Storing and transmitting information with JSON
  • Working with text data
  • Relational databases and SQL
  • Performance and Big O notation
  • Objects and Classes
  • Web applications with Flask

The material for these is available on the old Github page.

Intended audience and pace[edit]

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]

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]

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.

Helping out and getting additional help[edit]

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! 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!

Code of Conduct[edit]

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]

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

  • 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]

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