Latest blog post: A Caution about Dictionaries in Python 3.7
I've taught Python to thousands of people around the world. For 30 years I've been writing about and teaching programming, including 25 years at NeXT/Apple. After years of honing my content and skills, I've learned what people of different experience levels need in a Python class.
For corporations, I provide live remote training for up to 5 students, or in-person team-based training for up to 50 students, customized to the programming level and interests of the students. I've taught thousands of corporate employees, including QA Engineers, Data Scientists, Program Managers, and professional programmers.
For charitable and educational orgs, I provide live remote training for up to 5 students for free, or in-person team-based training for up to 50 students for a discounted fee of $500/day and expenses, customized to the programming level and interests of the students.
Regular classes for New and Experienced Programmers. 10 2-hour sessions of five students, for $200/student (price to go up soon!)
I set aside at least one seat per public class for people who can't afford a class or are part of a charitable org. I want everyone to succeed, and to learn how to program. If this means you, contact me and I'll put you on the list.
If you're new to programming, you need a kind and patient guiding hand. I've taught many DevOps folks, QA Engineers, Project Managers, Designers and others who needed to learn programming from scratch. My curriculum for new programmers is focused on gently taking you step by step through the process, giving you lots of chances to try things out and ask questions.
By the end of the class, you will be able to read in a spreadsheet file, process the data, and output a report about it. Or, if you have other requirements, I'll develop a project based on your needs.
Length: 2-5 days, depending on options chosen. Where possible, doing them in half-day segments tends to work best for new programmers, keeping them from being overwhelmed and giving them time to absorb things. The two-day option will introduce people to programming and is useful in time-constrained circumstances, but in my experience if you actually want to turn a student into a real programmer, they need more time and practice. So I recommend a minimum of three days.
Approach: Each topic starts with a very interactive, discussion-based lecture where I do live coding to explain concepts, punctuated by short student exercises to help students absorb the mechanics. These are followed by more challenging team-based exercise projects that combine two or three concepts to accomplish a realistic programming task. We regularly review the concepts learned so far and students have plenty of opportunity to ask about anything that needs more discussion.
This class is aimed at people with a comfortable familiarity with programming, but doesn't require any prior knowledge of Python.
You know, where there's some task you want to do and you decide to try out that language you've been hearing about. You run through a quick tutorial, or just grab some existing code and start tweaking it. You might read some docs if you run into a wall, but probably you'll go to StackOverflow and grab some code there and drop it in.
Eventually you kind of feel like a "Python programmer" but it niggles at you that you've been copying and pasting these "comprehension things" but you aren't actually sure what they do. Then you run into a function that throws an exception when you'd usually expect a return value indicating the error, and you don't want to have to figure out exception handling just so you can use this function...
This class is the cure. You'll learn how things actually work, and you'll get a number of aha! moments as previously mysterious functionality suddenly makes sense.
I take you rapidly through the basics while also providing fundamentals usually not covered in tutorials. Then we get to the fun stuff -- best practices and habits I've developed over the years that will make you an excellent Python programmer out of the gate.
Length: 2-3 days, depending on options chosen.
Approach: Each topic starts with a very interactive, discussion-based lecture where I do live coding to explain concepts, punctuated by student exercises. The level of depth for each topic, and what optional topics we cover, is heavily influenced by the interest and needs of the students. Students receive book-length HTML and Jupyter Notebook files of the entire class content.
Other people you should learn from!
This is an old-fashioned website. Quick-loading, no cookies, no social media link bars or any of that jazz. Authored in Jupyter Notebooks using the Markdown format, with a custom Python script (of course!) to parse the source and generate the site.
Logo by firstname.lastname@example.org.