On Saturday, July 28th, the Boston Python user group ran its first Intermediate Python Workshop. The goals of this workshop were twofold:
- Develop and playtest a bunch of novel projects with which intermediate Python programmers can practice their skills. This material would be available online under a permissive license for the whole Python community to reuse and remix.
- Provide an opportunity for Boston Python Workshop alums and other beginner-to-intermediate programmers to practice together at their own pace with the support of experienced mentors.
This was the pitch for our 1-day event, which filled our 60 person capacity almost immediately and generated a 40 person waitlist:
Intermediate Python Workshop
Level up your Python through your choice of a dozen fun and practical projects.
We’ll provide the projects and friendly helpers; you bring a laptop and enthusiasm. You’ll rotate through the projects that interest you at your own pace, and we’ll have breaks for demos of awesome Python libraries and applications.
Our material is all online. Please visit our wiki for a detailed event description and the full list of projects.
We’ll have 4 styles of projects for you at this event:
- Practice writing Python programs from scratch.
- Learn a Python library through a bitesized project.
- Work through an online tutorial.
- Learn intermediate CS concepts through an in-person interactive lecture.
- Building a web application with Django
- Interacting with a database in Python
- Data analysis and plotting with Matplotlib
- Using the Twitter API
- Regular expressions and cheating at Words with Friends
- Building a graphical game with Pygame
This event is perfect for you if:
- You know Python language basics, including dictionaries, lists, for loops, and writing functions
- You are comfortable with looking up Python information when you need it (example: if you needed to learn about generating random numbers in Python, you’d be comfortable with Googling for and reading through the relevant documentation)
and at least one of the following is true:
- You want to practice writing programs in Python from scratch
- You want to learn about and practice more advanced Python/CS concepts, like classes and object-oriented programming
- You want to learn about and practice using useful Python libraries, for example to talk to a database, make graphs, or create graphical games
- 10:30am – 12:00pm: Projects
- 12:00pm – 12:45pm: Lunch: meet fellow Pythonistas over pizza (sponsored by the Python Software Foundation!)
- 12:45pm – 1:00pm: Demos
- 1:00pm – 2:30pm: Projects
- 2:30pm – 2:45pm: Demos
- 2:45pm – 4:15pm: Projects
- 4:15pm – 4:30pm: Wrap-up
For this event, we created projects of several styles:
1. Write it from scratch
A common frustration we hear from learners at this level is that they can following along with tutorials, but when it comes to solving a problem from scratch and staring at a blank text editor, they don’t know where to start.
To help people get over this learning curve hump, we wrote projects that give you practice solving problems in Python from scratch. These projects guide you through breaking down the problem into steps and help you check your work along the way:
- Scrabble challenge: implement a scrabble solver that will tell you the best Scrabble words given a particular Scrabble rack (Great for cheating at Words with Friends!)
- Flash card challenge: implement a flash card quizzer from scratch.
2. Self-directed projects
We wrote the scaffolding for several projects to get you to the fun parts of practical Python applications quickly:
- Twitter: Use the Twitter API to write the basic parts of a Twitter client. See what your friends are tweeting, get trending topics, search tweets, and more.
- ColorWall: Program graphical effects for a pixel matrix.
- Databases and Jeopardy: learn how to get data from a database in Python while writing parts of a Jeopardy game, using real Jeopardy data!
- Plotting data with matplotlib: learn how to plot data with the matplotlib plotting library.
- Write a game with Pygame: Build a Snakes! clone using the Pygame graphical game development library.
3. Online tutorials
We’ve added some extra context, resources, and questions to check your understanding as you go through existing online tutorials:
- Make a website with Django: Work through the official Django tutorial, where you’ll create an interactive poll application.
4. In-person tutorials
Boston Python Workshop veteran Anna Callahan stepped up to lead a group through a 1.5 hour exploration of Python classes and objects:
- Object-oriented Python: Create a mini-banking system with users and accounts while learning the ins and outs of classes and objects in Python.
Attendees filled out a short exit survey before leaving. Questions included how they’ve been learning and practicing Python, what they hope to do next with Python, and other topics they’d like to see turned into projects in this format.
There were a couple of recurring themes in the feedback:
- Knowing that you could get help in real time, in person, made learning more enjoyable and less intimidating.
- Attendees appreciated the ability to work at their own pace on their own interests.
- Attendees felt focused and motivated by being surrounded by people of a similar skill level who were also committed to spending the day practicing Python.
Thank you all so much for holding these workshops, more than anything I’ve tried they really motivate me to actually work on learning something new on my own time. Thank you thank you thank you!!
You guys are awesome and make learning Python much less intimidating.
We asked attendees to list more topics they’d like to see at events like this. The responses included:
- scientific computing in Python
- web scraping
- writing tests
- version control
- open source contribution
- more practice writing programs from scratch
Attendees came to this event with a wide range of backgrounds. The projects assumed general fluency in the Python ecosystem and a willingness to read up on anything you needed to learn along the way, which from the feedback and our observations during the event seems to have worked for most people. We did get requests for cheatsheets on concepts like:
- installing Python packages
- command line navigation
which are a great idea and something we’ll definitely implement for the next workshop.
If you’d like to help us develop material for future workshops, please get in touch!
Resources for beginner and intermediate programmers
We asked attendees to describe the material they’ve been using to learn and practice Python. The range of responses was impressive and introduced me to some resources I hadn’t heard about before. Responses included:
- Python questions on StackOverflow
- Dough Hellmann’s Python Module of the Week series
- Online learning initiative Coursera‘s Computer Science 101
- Online learning initiative Udacity‘s CS 253: Web Application Engineering
- Learning Python and Programming Python by Mark Lutz
- Think Python: How to Think Like a Computer Scientist by Allen Downey
- Dive Into Python by Mark Pilgrim
- The official python.org documentation
- The Quick Python Book by Daryl Harms and Kenneth McDonald
- Learn Python the Hard Way by Zed Shaw
- A Byte of Python by Swaroop C H
- The Python Osmosis podcast
Thank you to all of the volunteers who playtested the content and helped at the event. A big thank you to the Python Software Foundation for providing the pizza that kept these eager minds going! Boston Python is excited to run more Intermediate Python events and to continue experimenting with new content and event formats.