Upcoming Course Dates:
Course Hours:
Cost:
Registration:
Instructor: David Beazley
Returning home to his apartment, Graydon found that the elevator was out of order--AGAIN! "It's ridiculous", he thought, "that we computer people couldn't even make an elevator that works without crashing!" Graydon later went on to invent the programming language Rust.
Your task is a bit more mundane than that: You've been given the job of writing the software for controlling an elevator. You can do it in an easy memory-safe language such as Python if you want. You just need to ensure that your code doesn't crash, cause the elevator to shoot through the roof, or accidentally slice passengers in half. Elevators don't seem so complicated--they move up and down, stop from time to time, and have a panel of buttons. So, in some sense, they might be a close cousin of a toaster. How hard could it be?
Elevators are much trickier than they look. Many a job-seeker have been defeated by some kind of "elevator question." Elevators are diabolical.
In this 2-day project course, your goal is to tackle my version of the infamous "elevator problem"--which is simply to write software that you think could be used to control a basic elevator according to the standard elevator algorithm. This will likely challenge almost everything that you know about problem solving, design, programming, and testing. You will likely write a huge mess of barely working code that will make you want to take the stairs for awhile. However, you'll probably get some new ideas to take back to work.
This course is for experienced programmers who want to test their problem solving, modeling, design, and testing skills on a "modest" problem of curious difficulty. Basic knowledge of data structures, functions, and classes is recommended.
The course starts with a general overview of the problem and a blank slate. From there, you'll probably go on to start making a huge mess of things. Much of the rest of the course will be about ways to NOT do that. Expect a significant amount of coding intermixed with group discussion and thinking through the problem. There are no powerpoint slides. This is not a passive course.
You are free to use any programming language you wish and feel free to bring an AI assistant or summer intern if you think it might help. However, Python will be the preferred language for live-coding, demonstration, and discussion.
There is also no one "right way" to code the project as long as you can eventually convince others that it might be safe to ride on your elevator. This leads to a lot of possibilities concerning design alternatives, tradeoffs, and other matters. A major challenge concerns the difficulty of writing code that can be tested, debugged, and reasoned about.
Attending two full days of tutorials at PyCon 2025 costs $600. This course is cheaper than that. I may be able to offer discounts for parity pricing, students, and job seekers--ask me when you hear back after registering.
This course is taught by David Beazley. David is a former university professor who used to enjoy torturing students with courses in operating systems and networks. David is better known in the Python world as the author of the Python Distilled (Addison Wesley) and Python Cookbook, 3rd Edition (O'Reilly Media). He has also given various conference talks including a few infamous bits of live coding.
Copyright (C) 2005-2026, David Beazley